在 Excel 2013 中将 Range() 与数组公式结合使用

Using Range() with array formulas in Excel 2013

我有一个VBA公式,比方说

Range("B2:B" & Cells(Rows.Count, "A").End(xlUp).Row).FormulaArray = "=MATCH(RC[-1],Sheet1!C1,0)"

当我 运行 宏进入每个单元格时

=MATCH(A2,Sheet1!A:A,0)

我想要 return 单元格 A2、A3、A4 等的 RC[-1] 参数。目前所有行都在 returning A2。我该怎么做?

我也尝试了 ActiveCell.FormulaArray 和 for 循环,但对于我拥有的行数来说它太慢了。

尝试将 FormulaArray 更改为 FormulaR1C1

Range("B2:B" & Cells(Rows.Count, "A").End(xlUp).Row).FormulaR1C1 = "=MATCH(RC[-1],Sheet1!C1,0)"

谢谢!!!

如所有评论所述:

需要先填入B2,然后往下填到最下面

.FormulaArray 会将其视为突出显示整个范围并将公式放在第一个单元格中,然后按 Ctrl-Shift-Enter,这会在所有单元格中输入相同的公式。

Range("B2").FormulaArray = "=MATCH(RC[-1],Sheet1!C1,0)"
Range("B2:B" & Cells(Rows.Count, "A").End(xlUp).Row).FillDown