在Excel 2013中使用Range()和数组公式

时间:2016-12-09 20:20:22

标签: excel vba excel-vba 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)

我希望RC[-1]参数返回单元格A2,A3,A4等。它当前为所有行返回A2。我该怎么做?

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

2 个答案:

答案 0 :(得分:1)

尝试将FormulaArray更改为FormulaR1C1

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

感谢!!!

答案 1 :(得分:1)

如所有评论中所述:

您需要先将其输入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