【问题标题】:vba index match with multiple criteriavba 索引与多个条件匹配
【发布时间】:2020-07-02 15:07:23
【问题描述】:

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

谢谢。

【问题讨论】:

  • 我认为您将不得不使用 Evaluate...$A:$A&$E:$E 不能很好地转换为 VBA。
  • 先生,我该怎么做?
  • 如果将使用的范围加载到数组中并循环数组的第一个维度会更快。

标签: excel vba


【解决方案1】:

由于$A:$A&$E:$E,将=INDEX($C:$C,MATCH(H2&$F$2,$A:$A&$E:$E,0) 之类的公式转换为VBA 并不简单。您需要创建一个数组来连接 A 列和 E 列中的值。此外,Match 与数组一起使用时比与Range 一起使用时要慢。

一种解决方法是在这里使用Evaluate

Dim a 
a = ActiveSheet.Evaluate("=INDEX($C:$C,MATCH(H2&$F$2,$A:$A&$E:$E,0))")

【讨论】:

  • 嗨 BigBen,如果有的话,这种方法是否比等效的 Application.WorksheetFunction/s(索引和匹配)更快?
猜你喜欢
  • 2016-09-24
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
  • 2016-12-14
  • 2019-10-22
  • 2021-01-08
相关资源
最近更新 更多