Оглавление
В этом уроке показано, как использовать INDEX и MATCH в Excel и чем они лучше VLOOKUP.
В нескольких недавних статьях мы постарались объяснить основы функции VLOOKUP для новичков и привести примеры более сложных формул VLOOKUP для опытных пользователей. А сейчас я постараюсь если не отговорить вас от использования VLOOKUP, то хотя бы показать альтернативный способ вертикального поиска в Excel.
"С другой стороны, комбинация INDEX MATCH является более гибкой и имеет множество замечательных возможностей, которые делают ее превосходящей VLOOKUP по многим параметрам.
Функции Excel INDEX и MATCH - основы
Поскольку целью данного урока является демонстрация альтернативного способа выполнения vlookup в Excel с помощью комбинации функций INDEX и MATCH, мы не будем подробно останавливаться на их синтаксисе и использовании. Мы рассмотрим лишь минимум, необходимый для понимания общей идеи, а затем подробно разберем примеры формул, раскрывающие все преимущества использования INDEX MATCH вместо VLOOKUP.
Функция INDEX - синтаксис и использование
Функция Excel ИНДЕКС возвращает значение в массив на основе номеров строк и столбцов, которые вы указали. Синтаксис функции ИНДЕКС прост:
INDEX(array, row_num, [column_num])Вот очень простое объяснение каждого параметра:
- массив - диапазон ячеек, из которых вы хотите вернуть значение.
- row_num - номер строки в массиве, из которой вы хотите вернуть значение. Если опущен, то требуется номер_столбца.
- номер_столбца - номер столбца в массиве, из которого вы хотите вернуть значение. Если опущен, требуется номер_строки.
Для получения дополнительной информации см. функцию Excel ИНДЕКС.
А вот пример формулы INDEX в ее простейшей форме:
=INDEX(A1:C10,2,3)
Формула ищет в ячейках с A1 по C10 и возвращает значение ячейки во 2-й строке и 3-м столбце, т.е. ячейки C2.
Очень просто, верно? Однако при работе с реальными данными вы вряд ли когда-нибудь будете знать, какая строка и столбец вам нужны, вот тут-то и пригодится функция MATCH.
Функция MATCH - синтаксис и использование
Функция Excel MATCH ищет искомое значение в диапазоне ячеек и возвращает значение относительное положение этого значения в диапазоне.
Синтаксис функции MATCH следующий:
MATCH(lookup_value, lookup_array, [match_type])- lookup_value - искомое число или текстовое значение.
- массив поиска - диапазон искомых ячеек.
- тип_соответствия - указывает, следует ли возвращать точное или ближайшее совпадение:
- 1 или опущено - находит наибольшее значение, которое меньше или равно искомому значению. Требуется сортировка массива поиска по возрастанию.
- 0 - находит первое значение, которое точно равно искомому значению. В комбинации INDEX / MATCH вам почти всегда нужно точное совпадение, поэтому вы устанавливаете третий аргумент функции MATCH равным 0.
- -1 - находит наименьшее значение, которое больше или равно значению lookup_value. Требуется сортировка массива lookup в порядке убывания.
Например, если диапазон B1:B3 содержит значения "New-York", "Paris", "London", то приведенная ниже формула возвращает число 3, поскольку "London" является третьей записью в диапазоне:
=MATCH("Лондон",B1:B3,0)
Для получения дополнительной информации см. функцию Excel MATCH.
На первый взгляд, полезность функции MATCH может показаться сомнительной. Кому интересно положение значения в диапазоне? Что нам действительно нужно знать, так это само значение.
Напомню, что относительное положение значения поиска (т.е. номера строк и столбцов) - это именно то, что вам нужно передать параметру row_num и номер_столбца аргументы функции ИНДЕКС. Как вы помните, ИНДЕКС Excel может найти значение на стыке заданной строки и столбца, но он не может определить, какая именно строка и столбец вам нужны.
Как использовать функцию INDEX MATCH в Excel
Теперь, когда вы знаете основы, я думаю, уже стало понятно, как MATCH и INDEX работают вместе. В двух словах, INDEX находит искомое значение по номерам столбцов и строк, а MATCH предоставляет эти номера. Вот и все!
Для вертикального поиска вы используете функцию MATCH только для определения номера строки и передаете диапазон столбцов непосредственно в INDEX:
ИНДЕКС ( столбец, чтобы вернуть значение из , MATCH ( значение поиска , колонна, на которую можно смотреть , 0))Возможно, это будет легче понять на примере. Предположим, у вас есть список столиц государств и их населения:
Чтобы найти население определенной столицы, например, столицы Японии, используйте следующую формулу INDEX MATCH:
=INDEX(C2:C10, MATCH("Япония", A2:A10, 0))
Теперь давайте проанализируем, что на самом деле делает каждый компонент этой формулы:
- Функция MATCH ищет искомое значение "Япония" в диапазоне A2:A10 и возвращает число 3, поскольку "Япония" является третьим в массиве поиска.
- Номер строки переходит непосредственно к row_num аргумент INDEX, предписывающий ему вернуть значение из этого ряда.
Таким образом, приведенная выше формула превращается в простой INDEX(C2:C,3), который говорит о поиске в ячейках с C2 по C10 и извлечении значения из третьей ячейки в этом диапазоне, то есть C4, поскольку мы начинаем считать со второй строки.
Не хотите вводить город в формулу в жестком виде? Введите его в какую-нибудь ячейку, скажем F1, снабдите ссылку на ячейку командой MATCH, и вы получите динамическую формулу поиска:
=INDEX(C2:C10, MATCH(F1,A2:A10,0))
Важное замечание! Количество строк в массив аргумент INDEX должен соответствовать количеству строк в массив поиска аргумент MATCH, иначе формула даст неверный результат.
Подождите, подождите... почему бы нам просто не использовать следующую формулу Vlookup? Какой смысл тратить время, пытаясь разобраться в хитросплетениях Excel MATCH INDEX?
=VLOOKUP(F1, A2:C10, 3, FALSE)
Этот простой пример приведен только для демонстрации, чтобы вы поняли, как работают вместе функции INDEX и MATCH. Другие примеры, приведенные ниже, покажут вам реальную силу этой комбинации, которая легко справляется со многими сложными сценариями, когда VLOOKUP спотыкается.
Советы:
- В Excel 365 и Excel 2021 можно использовать более современную формулу INDEX XMATCH.
- Для Google Sheets смотрите примеры формул с INDEX MATCH в этой статье.
ИНДЕКСНЫЙ МАТЧ против VLOOKUP
При выборе функции для вертикального поиска большинство гуру Excel сходятся во мнении, что INDEX MATCH намного лучше, чем VLOOKUP. Однако многие люди все еще остаются с VLOOKUP, во-первых, потому что она проще, а во-вторых, потому что они не до конца понимают все преимущества использования формулы INDEX MATCH в Excel. Без такого понимания никто не захочет тратить свое время на изучение более сложной формулы.синтаксис.
Ниже я укажу основные преимущества MATCH INDEX перед VLOOKUP, а вы решите, является ли он достойным дополнением к вашему арсеналу Excel.
4 основные причины использовать INDEX MATCH вместо VLOOKUP
- Поиск справа налево. Как известно любому образованному пользователю, VLOOKUP не может искать слева от себя, а это значит, что искомое значение всегда должно находиться в самом левом столбце таблицы. INDEX MATCH может с легкостью выполнять поиск слева! Следующий пример показывает это в действии: Как выполнить Vlookup значения слева в Excel.
- Безопасная вставка и удаление столбцов. Формулы VLOOKUP выходят из строя или дают неверные результаты, когда из таблицы поиска удаляется или добавляется новый столбец, поскольку синтаксис VLOOKUP требует указания номера индекса столбца, из которого вы хотите получить данные. Естественно, когда вы добавляете или удаляете столбцы, номер индекса меняется.
При использовании INDEX MATCH вы указываете диапазон возвращаемых столбцов, а не номер индекса. В результате вы можете вставлять и удалять столько столбцов, сколько хотите, не заботясь об обновлении каждой связанной формулы.
- Нет ограничений на размер значения поиска. При использовании функции VLOOKUP общая длина критериев поиска не может превышать 255 символов, иначе вы получите ошибку #VALUE! Поэтому, если ваш набор данных содержит длинные строки, INDEX MATCH является единственным рабочим решением.
- Более высокая скорость обработки. Если ваши таблицы относительно небольшие, то существенной разницы в производительности Excel не будет. Но если ваши рабочие листы содержат сотни или тысячи строк и, соответственно, сотни или тысячи формул, MATCH INDEX будет работать намного быстрее, чем VLOOKUP, поскольку Excel придется обрабатывать только столбцы поиска и возврата, а не весь массив таблицы.
Влияние VLOOKUP на производительность Excel может быть особенно заметно, если ваша рабочая книга содержит сложные формулы массива, такие как VLOOKUP и SUM. Дело в том, что проверка каждого значения в массиве требует отдельного вызова функции VLOOKUP. Поэтому чем больше значений содержит ваш массив и чем больше формул массива у вас в рабочей книге, тем медленнее работает Excel.
Excel INDEX MATCH - примеры формул
Зная причины для изучения функции MATCH INDEX, давайте перейдем к самой интересной части и посмотрим, как можно применить теоретические знания на практике.
Формула INDEX MATCH для просмотра справа налево
Как уже упоминалось, VLOOKUP не может смотреть влево. Поэтому, если ваши искомые значения не находятся в самом левом столбце, нет никаких шансов, что формула Vlookup принесет вам нужный результат. Функция INDEX MATCH в Excel более универсальна, и ей неважно, где находятся столбцы поиска и возврата.
Для этого примера мы добавим столбец Rank в левую часть нашей таблицы-образца и попытаемся выяснить, какое место занимает столица России, Москва, по численности населения.
Имея значение поиска в G1, используйте следующую формулу для поиска в C2:C10 и возврата соответствующего значения из A2:A10:
=INDEX(A2:A10,MATCH(G1,C2:C10,0))
Совет. Если вы планируете использовать формулу INDEX MATCH для более чем одной ячейки, обязательно зафиксируйте оба диапазона абсолютными ссылками на ячейки (например, $A$2:$A$10 и $C$2:4C$10), чтобы они не исказились при копировании формулы.
INDEX MATCH MATCH для поиска в строках и столбцах
В приведенных выше примерах мы использовали INDEX MATCH в качестве замены классического VLOOKUP для возврата значения из предопределенного диапазона одного столбца. Но что если вам нужно выполнить поиск в нескольких строках и столбцах? Другими словами, что если вы хотите выполнить так называемое матрица или двусторонний поиск?
Это может показаться сложным, но формула очень похожа на основную функцию Excel INDEX MATCH, с одной лишь разницей. Угадайте, что?
Просто используйте две функции MATCH - одну для получения номера строки и другую для получения номера столбца. И я поздравляю тех из вас, кто угадал правильно :)
INDEX (массив, MATCH ( значение vlookup , колонна, на которую можно смотреть , 0), MATCH ( значение hlookup , ряд, на который можно смотреть , 0))А теперь, пожалуйста, взгляните на приведенную ниже таблицу и давайте построим формулу INDEX MATCH MATCH для нахождения численности населения (в миллионах) в данной стране за данный год.
При целевой стране в G1 (значение vlookup) и целевом годе в G2 (значение hlookup) формула принимает следующий вид:
=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Как работает эта формула
Если вам нужно понять сложную формулу Excel, разбейте ее на более мелкие части и посмотрите, что делает каждая отдельная функция:
MATCH(G1,A2:A11,0)
- ищет в A2:A11 значение в ячейке G1 ("Китай") и возвращает его позицию, которая равна 2.
MATCH(G2,B1:D1,0))
- выполняет поиск по B1:D1, чтобы получить позицию значения в ячейке G2 ("2015"), которая равна 3.
Приведенные выше номера строк и столбцов соответствуют соответствующим аргументам функции INDEX:
ИНДЕКС(B2:D11, 2, 3)
В результате вы получите значение на пересечении 2-й строки и 3-го столбца в диапазоне B2:D11, которое является значением в ячейке D3. Легко? Да!
Excel INDEX MATCH для поиска по нескольким критериям
Если у вас был шанс прочитать наш учебник Excel VLOOKUP, вы, вероятно, уже опробовали формулу для Vlookup с несколькими критериями. Однако существенным ограничением этого подхода является необходимость добавления вспомогательного столбца. Хорошей новостью является то, что функция Excel INDEX MATCH также может искать с двумя или более критериями, не изменяя и не перестраивая ваши исходные данные!
Вот общая формула INDEX MATCH с несколькими критериями:
{=INDEX( диапазон возврата , MATCH(1, ( критерии1 = диапазон1 ) * ( критерии2 = диапазон2 ), 0))}Примечание. Это формула массива, которая должна быть завершена с помощью комбинации клавиш Ctrl + Shift + Enter.
В приведенном ниже примере таблицы, предположим, вы хотите найти сумму на основе 2 критериев, Клиент и Продукт .
Следующая формула INDEX MATCH работает просто замечательно:
=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
Где C2:C10 - диапазон для возврата значения, F1 - критерий1, A2:A10 - диапазон для сравнения с критерием1, F2 - критерий2, B2:B10 - диапазон для сравнения с критерием2.
Не забудьте правильно ввести формулу, нажав Ctrl + Shift + Enter, и Excel автоматически заключит ее в фигурные скобки, как показано на скриншоте:
Если вы предпочитаете не использовать формулы массивов в своих рабочих листах, добавьте в формулу еще одну функцию INDEX и завершите ее обычным нажатием Enter:
Как работают эти формулы
Формулы используют тот же подход, что и базовая функция INDEX MATCH, которая просматривает один столбец. Для оценки нескольких критериев вы создаете два или более массивов значений TRUE и FALSE, которые представляют совпадения и несовпадения для каждого отдельного критерия, а затем перемножаете соответствующие элементы этих массивов. Операция умножения преобразует TRUE и FALSE в 1 и 0,соответственно, и создает массив, в котором 1 соответствует строкам, соответствующим всем критериям. Функция MATCH со значением поиска 1 находит первую "1" в массиве и передает ее позицию в INDEX, который возвращает значение в этой строке из указанного столбца.
Формула без массива полагается на способность функции INDEX работать с массивами. Второй INDEX имеет значение 0 row_num чтобы в MATCH передавался весь массив столбцов.
Это высокоуровневое объяснение логики работы формулы. Для получения более подробной информации, пожалуйста, обратитесь к разделу Excel ИНДЕКС МАТЧА с несколькими критериями.
Excel INDEX MATCH с AVERAGE, MAX, MIN
В Microsoft Excel есть специальные функции для поиска минимального, максимального и среднего значения в диапазоне. Но что если вам нужно получить значение из другой ячейки, которая связана с этими значениями? В этом случае используйте функцию MAX, MIN или AVERAGE вместе с INDEX MATCH.
INDEX MATCH с MAX
Чтобы найти наибольшее значение в столбце D и вернуть значение из столбца C в той же строке, используйте эту формулу:
=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
INDEX MATCH с MIN
Чтобы найти наименьшее значение в столбце D и извлечь соответствующее значение из столбца C, используйте этот вариант:
=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
INDEX MATCH с AVERAGE
Чтобы вычислить значение, наиболее близкое к среднему в D2:D10, и получить соответствующее значение из столбца C, используйте следующую формулу:
=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))
В зависимости от того, как организованы ваши данные, поставьте 1 или -1 в третий аргумент (тип_соответствия) функции MATCH:
- Если столбец поиска (столбец D в нашем случае) отсортирован по возрастанию , положите 1. Формула вычислит наибольшее значение, которое является менее или равна среднему значению.
- Если ваш столбец поиска отсортирован по убывающей введите -1. Формула вычислит наименьшее значение, которое является больше, чем или равна среднему значению.
- Если ваш массив поиска содержит значение абсолютно одинаковый к среднему значению, для точного совпадения можно ввести 0. Сортировка не требуется.
В нашем примере население в столбце D отсортировано в порядке убывания, поэтому мы используем -1 для типа соответствия. В результате мы получаем "Токио", так как его население (13 189 000) является ближайшим совпадением, которое больше среднего (12 269 006).
Возможно, вам будет интересно узнать, что VLOOKUP тоже может выполнять подобные вычисления, но в виде формулы массива: VLOOKUP с AVERAGE, MAX, MIN.
Использование INDEX MATCH с IFNA / IFERROR
Как вы, вероятно, заметили, если формула INDEX MATCH в Excel не может найти искомое значение, она выдает ошибку #N/A. Если вы хотите заменить стандартное обозначение ошибки на что-то более значимое, оберните вашу формулу INDEX MATCH в функцию IFNA. Например:
=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Совпадений не найдено")
И теперь, если кто-то вводит таблицу поиска, которая не существует в диапазоне поиска, формула явно сообщит пользователю, что соответствие не найдено:
Если вы хотите отлавливать все ошибки, а не только #N/A, используйте функцию IFERROR вместо IFNA:
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Упс, что-то пошло не так!")
Пожалуйста, имейте в виду, что во многих ситуациях может быть неразумно маскировать все ошибки, поскольку они предупреждают вас о возможных ошибках в вашей формуле.
Вот как использовать INDEX и MATCH в Excel. Надеюсь, наши примеры формул окажутся полезными для вас, и жду вас в нашем блоге на следующей неделе!
Рабочая тетрадь для тренировок для скачивания
Примеры Excel INDEX MATCH (файл.xlsx)