我原来的公式如下:
=INDEX(MIR!$A:$A,MATCH(1,(MIR!$H:$H=TRI!$W2)*(MIR!$I:$I=TRI!$L2),0))
我为此创建了以下VBA代码,虽然代码确实将公式添加到适当的范围,但公式不起作用。就像没有应用Array部分一样。我到处寻找这个想法,但我显然没有找到正确的位置。请指教。
Range("B2").Select
Selection.FormulaArray = _
"=INDEX(MIR!C1,MATCH(1,(MIR!C8=TRI!RC23)*(MIR!C9=TRI!RC12),0))"
Range("B2", "B" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown
End Sub
答案 0 :(得分:1)
您正在使用xlR1C1表示法,但VBA正在将其读作xlA1表示法。 MIR!C1
不是MIR!A:A
,它是MIR工作表上的第一行,第三列(例如MIR!C1
)。该公式被放在工作表上,
=INDEX(MIR!C1,MATCH(1,(MIR!C8=TRI!RC23)*(MIR!C9=TRI!RC12),0))
在xlA1表示法中使用公式。
Range("B2").FormulaArray = "=INDEX(MIR!$A:$A,MATCH(1,(MIR!$H:$H=TRI!$W2)*(MIR!$I:$I=TRI!$L2),0))"
顺便说一下,你应该把MATCH中的那些完整的列引用切换到使用的数据范围。