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: как подсчитать количество строк в диапазоне

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

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