【问题标题】:Multiple Criteria Index Match does not works多标准索引匹配不起作用
【发布时间】:2021-05-21 14:49:33
【问题描述】:

在 excel vba 中,我正在尝试根据多列上的 vlookup 更新单元格值。根据网上的建议,我尝试使用 vba 的索引/匹配功能,但不知何故它不起作用。

 ActiveCell.Offset(0, 6) = Application.WorksheetFunction.Index(ExWs.Range("I:I"), _
 Application.WorksheetFunction.Match(inv, ExWs.Range("B:B"), 0), _
 Application.WorksheetFunction.Match("Planning Readiness Tollgate", ExWs.Range("H:H"), 0) _
            , 0)

如果在上面的代码中我只保留一个条件,事情就可以正常工作。请帮忙 !! 此外,我不允许更新查找表上的任何内容,它是只读的。

提前致谢。

问候, 巴韦什耆那教

【问题讨论】:

  • INDEX 的标准是 INDEX(Range,RelativeRow,RelativeColumn) 当第二行被解释为相对列号时,您试图将两行传递给 INDEX。这里最好的做法是将所有三个中使用的范围放入变量数组并迭代数组,直到两者满足条件,然后从另一个数组返回正确的对应值。
  • 但是,如果您想了解如何使用公式进行操作,请参阅:stackoverflow.com/questions/42492758/…

标签: excel vba excel-formula


【解决方案1】:

另一种方法是使用 Evaluate 方法。假设 B 列包含数值,请尝试...

Dim LastRow As Long

With ExWs
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
    ActiveCell.Offset(0, 6).Value = Evaluate("INDEX('" & .Name & "'!I2:I" & LastRow & ",MATCH(1,IF('" & .Name & "'!B2:B" & LastRow & "=" & inv & ",IF('" & .Name & "'!H2:H" & LastRow & "=""Planning Readiness Tollgate"",1)),0))")
End With

但是,如果 B 列包含文本值,则需要将条件用引号引起来。如果是这样,请尝试以下操作...

Dim LastRow As Long

With ExWs
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
    ActiveCell.Offset(0, 6).Value = Evaluate("INDEX('" & .Name & "'!I2:I" & LastRow & ",MATCH(1,IF('" & .Name & "'!B2:B" & LastRow & "=""" & inv & """,IF('" & .Name & "'!H2:H" & LastRow & "=""Planning Readiness Tollgate"",1)),0))")
End With

请注意,Evaluate 方法有 255 个字符的限制。

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 1970-01-01
    • 2021-04-25
    • 2017-11-04
    • 2019-06-18
    • 2020-06-08
    • 2016-05-15
    • 1970-01-01
    • 2020-04-24
    相关资源
    最近更新 更多