vba 索引与多个条件匹配

问题描述 投票:0回答:2

我正在尝试将 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)

谢谢你。

excel vba
2个回答
1
投票

由于存在

=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))")

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)
© www.soinside.com 2019 - 2024. All rights reserved.