excel vba - 多条件索引匹配
excel vba - multiple criteria index match
我正在尝试在 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
我正在尝试在 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