当我尝试将公式应用于单个单元格时,为什么列中的每个单元格都会得到公式?
我正在尝试创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列包含索引号,看起来像这样