具有两个条件的 MATCH 公式作为工作表函数 (VBA)

MATCH formula with two criteria as Worksheet Function (VBA)

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

我一辈子都无法将其转换为 VBA 工作表函数。这是我认为正确的做法:

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

非常感谢收到任何建议。

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

利用 VBA MATCH() 可以处理 RangeArray 的事实:

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