Vba: как использовать сопоставление индексов


Вы можете использовать следующий базовый синтаксис для выполнения INDEX MATCH в 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

Этот конкретный пример ищет значения в ячейках со 2 по 11 четвертого столбца листа в диапазоне B2:B11 , а затем возвращает соответствующие значения в диапазоне A2:A11 в пятом столбце листа.

В следующем примере показано, как использовать этот синтаксис на практике.

Пример. Выполните INDEX MATCH с помощью 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *