我正在尝试将 R1C1 vba 公式转换为“A1”类型的代码。
ActiveCell.Formula2R1C1 = "=INDEX(C3,MATCH(RC[-1]&R2C6,C1&C5,0))"
在电子表格中是: =INDEX($C:$C,MATCH(H2&$F$2,$A:$A&$E:$E,0))
我尝试了以下方法,但没有得到正确的结果,请指导。
a = Application.WorksheetFunction.Index(Range("C:C"), _
Application.WorksheetFunction.Match(Range("H2").Value, Range("A:A"), 0) + _
Application.WorksheetFunction.Match(Range("F2").Value, Range("E:E"), 0), 0)
谢谢你。
由于存在
=INDEX($C:$C,MATCH(H2&$F$2,$A:$A&$E:$E,0)
,因此将 $A:$A&$E:$E
等公式转换为 VBA 并不简单。您需要创建一个数组来连接 A 列和 E 列中的值。此外,与数组一起使用时 Match
比与 Range
一起使用时慢。
一种解决方法是在此处使用
Evaluate
:
Dim a
a = ActiveSheet.Evaluate("=INDEX($C:$C,MATCH(H2&$F$2,$A:$A&$E:$E,0))")
尝试
a = Application.WorksheetFunction.Index(Range("C:C"), _
Application.WorksheetFunction.Match(Range("H2"), Range("A:A"), 0) + _
Application.WorksheetFunction.Match(Range("F2"), Range("E:E"), 0), - 1)