【问题标题】:MATCH formula with two criteria as Worksheet Function (VBA)具有两个标准的 MATCH 公式作为工作表函数 (VBA)
【发布时间】:2020-06-13 19:02:23
【问题描述】:

以这个工作表场景为例 - 在黄色单元格中,我使用了一个数组公式来定位表格中的第 5 行: {=MATCH(4&"jkl",A1:A5&B1:B5,0)}

我无法终生将其转换为 VBA 工作表函数。以下是我认为正确的:

MsgBox WorksheetFunction.Match([4 & "jkl", .Range("A1:A5") & .Range("B1:B5")], 0)

感谢您的任何建议。

【问题讨论】:

  • MsgBox [=MATCH(4 & "jkl", A1:A5&B1:B5,0)]?
  • [] 是Application.Evaluate 的缩写,尽管它会拒绝使用变量。当您需要处理变量时,并且在您的情况下,除非您需要处理完全相同的公式,否则请使用后者。题外话:连接查找查询的值确实不是一个好主意。

标签: excel vba match criteria worksheet


【解决方案1】:

我问了一个类似的问题here,但建议的解决方案难以处理串联范围,所以:

利用在 VBA 中 MATCH() 可以处理 Range 或 Array 的事实:

Sub dural()
    Dim arr(1 To 5, 1 To 1)

    For i = 1 To 5
        arr(i, 1) = Cells(i, 1) & Cells(i, 2)
    Next i

    With Application.WorksheetFunction
        MsgBox .Match("4jlk", arr, 0)
    End With
End Sub

另外,正如 GSerg 所评论的,我们也可以使用Evaluate():

Sub test2()
    Dim s As String
    s = "=MATCH(4 & ""jkl"",A1:A5 & B1:B5,0)"
    MsgBox Evaluate(s)
End Sub

【讨论】:

  • 非常感谢你,James...两个很棒的解决方案,唷,我不会去那里。
猜你喜欢
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
相关资源
最近更新 更多