Vba:如何使用索引匹配


您可以使用以下基本语法在 VBA 中执行索引匹配:

 SubIndexMatch ()

    Dim i As Integer
    
    ' Perform index match
    For i = 2 To 11
    Cells(i, 5).Value = WorksheetFunction.Index(Range(" A2:A11 "), _
    WorksheetFunction.Match(Cells(i, 4).Value, Range(" B2:B11 "), 0))
    Next i
End Sub

此特定示例在B2:B11范围内的工作表第四列的单元格 2 到 11 中搜索值,然后返回工作表第五列的A2:A11范围内的相应值。

以下示例展示了如何在实践中使用此语法。

示例:使用 VBA 执行索引匹配

假设我们在 Excel 中有以下数据集,其中包含有关篮球运动员的信息:

对于 D 列中的每个球员,假设我们要在 A 列中找到他们的球队名称,然后将球队名称写入 E 列中。

我们可以创建以下宏来执行此操作:

 SubIndexMatch ()

    Dim i As Integer
    
    ' Perform index match
    For i = 2 To 11
    Cells(i, 5).Value = WorksheetFunction.Index(Range(" A2:A11 "), _
    WorksheetFunction.Match(Cells(i, 4).Value, Range(" B2:B11 "), 0))
    Next i
End Sub

当我们运行这个宏时,我们会收到以下输出:

请注意,该宏能够搜索每个球员的姓名,然后在 E 列中返回其对应球队的名称。

请注意,在 For 循环中, Cells(i,5).value语法指定我们希望在电子表格的第五列(即 E 列)中返回团队名称。

如果我们将此语法更改为Cells(i,6).value ,则团队名称将在电子表格的第六列中返回:

 SubIndexMatch ()

    Dim i As Integer
    
    ' Perform index match
    For i = 2 To 11
    Cells(i, 6).Value = WorksheetFunction.Index(Range(" A2:A11 "), _
    WorksheetFunction.Match(Cells(i, 4).Value, Range(" B2:B11 "), 0))
    Next i
End Sub

当我们运行这个宏时,我们会收到以下输出:

请注意,团队名称现在返回在电子表格的第六列(F 列)中。

其他资源

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

VBA:如何检查一个字符串是否包含另一个字符串
VBA:如何计算范围内的行数
VBA:如何编写 COUNTIF 和 COUNTIFS 函数

添加评论

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