Vba: как использовать index match с несколькими критериями
Вы можете использовать следующий базовый синтаксис для выполнения INDEX MATCH с несколькими критериями в VBA:
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
В этом конкретном примере выполняется поиск значения в ячейке F1 в диапазоне A2:A10 и значения в ячейке F2 в диапазоне B2:B10 и возвращается соответствующее значение в диапазоне C2:C10 в ячейке F3 .
В следующем примере показано, как использовать этот синтаксис на практике.
Пример. Выполните INDEX MATCH с несколькими критериями с помощью 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
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Макрос выполняет поиск по запросу «Шпоры» в столбце «Команда» и «Нападающий» в столбце «Позиция» и правильно возвращает имя «Эрик» в ячейке F3 .
Если мы изменим значения в ячейках F1 и F2 и запустим макрос еще раз, он сможет найти имя игрока на основе новых значений.
Например, предположим, что мы меняем название команды на «Mavs», а позицию на «Центр» и снова запускаем макрос:
Макрос ищет «Mavs» в столбце «Команда» и «Центр» в столбце «Позиция» и правильно возвращает имя «Чад» в ячейке F3 .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как использовать сопоставление индексов
VBA: как проверить, содержит ли строка другую строку
VBA: как подсчитать количество строк в диапазоне