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