excel vba – 多个标准索引匹配

我试图在vba中做一个多重标准索引匹配函数,但我似乎无法得到结果。 我使用的代码如下:

wsDest.Range(wsDest.Cells(i, X), wsDest.Cells(i, X)) = _ Application.WorksheetFunction.Index(wsSour.Range("C3:C8763"), _ Application.WorksheetFunction.Match(wsDest.Cells(i, 1) & "&" & wsDest.Cells(i, 2), _ wsSour.Range("A3:A8763") & "&" & wsSour.Range("B3:B8763"), 0), 0) 

对于比赛部分,我试图用Excel的方法

=MATCH(criteria1 & criteria2,range1 & range2,0)

您可以使用WorkSheet.Evaluate方法来执行此操作。

这是一个简单的例子:

在这里输入图像说明

 Sub Tester() Dim v, sht, a1, a2 Set sht = ActiveSheet a1 = sht.Cells(7, 1).Address(False, False) a2 = sht.Cells(7, 2).Address(False, False) v = sht.Evaluate("MATCH(" & a1 & "&" & a2 & ",A2:A5&B2:B5,0)") sht.Range("B9") = v End Sub 

编辑:这是一个更强大的例子考虑到不同的工作表

 Sub Tester2() Dim v, shtDest, shtSrc, a1, a2, i Set shtDest = ThisWorkbook.Sheets("Dest") Set shtSrc = ThisWorkbook.Sheets("Source") i = 1 a1 = "'" & shtDest.Name & "'!" & shtDest.Cells(i, 1).Address(False, False) a2 = "'" & shtDest.Name & "'!" & shtDest.Cells(i, 2).Address(False, False) Debug.Print a1, a2 v = shtSrc.Evaluate("MATCH(" & a1 & "&" & a2 & ",A2:A9&B2:B9,0)") If Not IsError(v) Then shtDest.Cells(i, 3).Value = shtSrc.Range("C2:C9").Cells(v).Value End If End Sub