当我尝试将公式应用于单个单元格时,为什么列中的每个单元格都会得到公式?

我正在尝试创build一个引用另一个表的公式列,我希望能够对新列进行sorting而不影响值。 我在尝试:

' dataTable is a ListObject Dim statusCol As ListColumn Dim statusRange as Range Dim statusCell As Range Dim statusIndex as Integer Set statusCol = dataTable.ListColumns.Add(2) dataTable.HeaderRowRange(2) = "Status" Set statusRange = statusCol.DataBodyRange statusIndex = 1 For Each statusCell in statusRange.Cells statusCell.formula = "=IF(INDEX(MatchColumn," & statusIndex & "), ""X"", ""Y"")" statusIndex = statusIndex + 1 Next statusCell 

如果我理解正确的话,这个循环应该在每个单元格中添加一个不同的statusIndex值。 但是当我在debugging器中遍历它时,只要设置第一个单元格,就会为每个单元格设置公式。 所以当我有25行数据的时候,我会在每个单元格中有一个公式为的公式

 =IF(INDEX(MatchColumn, 25), "X", "Y") 

而我想第一行有数字1,第二有2 …

那么为什么Excel每次都在循环中设置列中的每个单元? 我怎么能阻止它呢?

我发现得到这个方法的唯一方法是用idexes数字添加一列到表中,然后使用下面的代码:

 ActiveSheet.Range("D2:D9").Formula = "=IF(INDEX(MatchColumn, A" & statusIndex & "), ""X"", ""Y"")" 

请注意,我在公式上添加了一个额外的A

在这个例子中,我的A列包含索引号,看起来像这样

在这里输入图像说明