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”。

如果我们更改单元格F1F2中的值并再次运行宏,它将能够根据新值找到玩家姓名。

例如,假设我们将球队名称更改为“Mavs”,将位置更改为“Center”,然后再次运行宏:

该宏在 Team 列中搜索“Mavs”,在 Position 列中搜索“Center”,并在单元格F3中正确返回姓名“Chad”。

其他资源

以下教程说明如何在 VBA 中执行其他常见任务:

VBA:如何使用索引匹配
VBA:如何检查一个字符串是否包含另一个字符串
VBA:如何计算范围内的行数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注