В этой статье вы узнаете, как использовать функцию ИНДЕКС и ПОИСКПОЗ в VBA для соответствия 2 критериям в Excel с использованием кода VBA.

Чтобы получить результат, мы будем использовать комбинацию функций OFFSET и COUNTA для создания списка диспетчера имен.

Разберемся на примере:

  • У нас есть табель успеваемости с именем, предметом и оценкой студента.

img1

  • Мы хотим узнать отметки для имени и темы студента, введенных в ячейки F2 и G2

img2

  • Для расчета оценок с использованием кода VBA мы использовали функцию OFFSET для создания именованных диапазонов для каждой категории.

  • Нажмите CTRL + F3, чтобы открыть окно диспетчера имен (списки уже созданы)

img3

  • Использование функции «Вставить имена» на вкладке «Формулы»; мы получим весь список диапазонов Defined Name в ячейках

img4

  • Использование функции «Вставить имена» на вкладке «Формулы»; мы получим весь список диапазонов Defined Name в ячейках

img5

  • Нажмите «Вставить список»

img7

Чтобы запустить редактор VB, нам нужно выполнить следующие шаги. Щелкните вкладку «Разработчик». В группе «Код» выберите Visual Basic

img8

  • Нажмите «Вставить», затем «Модуль»

img9

Это создаст новый модуль.

Введите следующий код в Module Sub IndexMatch ()

myName = [F2]

mySubject = [G2]

mark = Application.WorksheetFunction.Index ([StMark], _ Application.WorksheetFunction.Match (myName, ([StName]), 0) + _ Application.WorksheetFunction.Match (mySubject, [StSubject], 0) — 1)

[H2] = отметить конец подписки

img9

  • Нажмите сочетание клавиш ALT + F8, чтобы открыть окно макроса, а затем выберите макрос.

img10

  • В качестве альтернативы вы можете нажать F5, чтобы запустить код на экране VBA.

  • После выполнения макроса мы получим результат в ячейке H2

img11

Вот как мы можем получить результаты с помощью функции таблицы соответствия индекса в VBA.