Vba:如何使用具有多个条件的索引匹配
您可以使用以下基本语法在 VBA 中执行具有多个条件的 INDEX MATCH:
SubIndexMatchMultiple ()
Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub
此特定示例在A2:A10范围内的单元格F1中查找 A2:A10 范围内的单元格F1中的值以及B2:B10范围内的单元格 F2 中的值,并返回单元格F3中的C2:C10范围内的相应值。
以下示例展示了如何在实践中使用此语法。
示例:使用 VBA 执行具有多个条件的索引匹配
假设我们在 Excel 中有以下数据集,其中包含有关篮球运动员的信息:
假设我们想要找到与单元格F1中的球队名称和单元格F2中的位置相匹配的球员,并返回单元格F3中的名称。
我们可以创建以下宏来执行此操作:
SubIndexMatchMultiple ()
Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub
当我们运行这个宏时,我们会收到以下输出:
该宏在 Team 列中搜索“Spurs”,在 Position 列中搜索“Forward”,并在单元格F3中正确返回姓名“Eric”。
如果我们更改单元格F1和F2中的值并再次运行宏,它将能够根据新值找到玩家姓名。
例如,假设我们将球队名称更改为“Mavs”,将位置更改为“Center”,然后再次运行宏:
该宏在 Team 列中搜索“Mavs”,在 Position 列中搜索“Center”,并在单元格F3中正确返回姓名“Chad”。
其他资源
以下教程说明如何在 VBA 中执行其他常见任务: