Поиск по нескольким условиям с INDEX-MATCH
Одновременно сопоставляйте несколько столбцов, чтобы точно определить строку.
«Поиск по нескольким условиям с INDEX-MATCH» — бесплатный урок Excel Formulas Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Excel Formulas Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Excel Formulas Academy содержит 4 уроков всего.
Когда одного ключа недостаточно
Иногда один столбец не позволяет однозначно определить строку. Например, может потребоваться цена товара определённого размера или зарплата сотрудника конкретного отдела.
В таком случае нужен поиск по нескольким условиям: сопоставление по двум или более столбцам одновременно, чтобы точно определить одну строку.
INDEX-MATCH элегантно решает эту задачу, объединяя условия в одну проверку совпадения без дополнительных вспомогательных столбцов.
Подход со вспомогательным столбцом
Проще всего представить это так: объедините ключевые столбцы в один. Добавьте вспомогательный столбец, соединяющий товар и размер, а затем выполните обычный поиск по нему.
Например, вспомогательная ячейка может содержать =A2&"|"&B2, что даст значение "Shirt|Large". Затем выполните MATCH для поиска "Shirt|Large" в объединённом столбце.
Это работает, но загромождает таблицу. В следующих разделах показано, как полностью отказаться от вспомогательного столбца.
=A2 & "|" & B2Сопоставление двух условий одновременно
Основной приём: перемножьте проверки двух условий внутри MATCH.
(A2:A10=G1) создаёт массив TRUE/FALSE для первого условия. (B2:B10=G2) делает то же самое для второго. Их перемножение, (A2:A10=G1)*(B2:B10=G2), даёт 1 только там, где оба условия равны TRUE, и 0 в остальных случаях.
Затем MATCH ищет значение 1, чтобы найти строку, соответствующую обоим условиям.
=(A2:A10=G1) * (B2:B10=G2)Почему умножение означает AND
В электронных таблицах TRUE ведёт себя как 1, а FALSE — как 0. Перемножение этих значений имитирует логическое AND:
- 1 умножить на 1 = 1 (оба условия выполнены)
- 1 умножить на 0 = 0
- 0 умножить на 1 = 0
- 0 умножить на 0 = 0
Поэтому только строки, в которых выполнены оба условия, дают 1. Во всех остальных строках получается 0. Эта единственная 1 отмечает нужную строку.
Поиск строки с помощью MATCH
Теперь оберните перемноженный массив в MATCH и выполните поиск точного значения 1.
MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0) возвращает позицию первой строки, в которой оба условия равны TRUE.
Если подходящее сочетание находится в четвёртой строке данных, MATCH возвращает 4. Именно эта позиция нужна INDEX для получения результата.
=MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0)Возврат значения с помощью INDEX
Передайте результат MATCH в INDEX, указав столбец, из которого нужно получить значение, например цены в C2:C10.
Полная формула означает: в диапазоне C2:C10 вернуть значение строки, где товар равен G1 и размер равен G2.
Это полноценный поиск по нескольким условиям без вспомогательного столбца и изменения порядка данных.
=INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0))Правильный ввод формулы
Эта формула обрабатывает массивы условий. В современном Excel и Google Sheets достаточно нажать Enter — формула будет работать.
В старом Excel (до появления динамических массивов) необходимо подтвердить формулу массива сочетанием Ctrl+Shift+Enter, после чего появятся фигурные скобки. Если в устаревшей версии Excel результат неправильный или отображается ошибка, обычно отсутствует именно этот шаг подтверждения.
=INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0))Добавление третьего условия
Нужно использовать три условия? Просто добавьте ещё одну проверку при умножении. Предположим, Вы также хотите сопоставить цвет в столбце D со значением из G3.
Каждый дополнительный множитель (range=criterion) ещё сильнее сужает результат. Только строки, в которых все условия равны TRUE, сохраняют произведение 1; любое FALSE превращает всё произведение в 0.
Этот принцип можно расширять на любое необходимое количество столбцов.
=INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2)*(D2:D10=G3), 0))Разбор примера
Данные: A = товар, B = размер, C = цена. Нужно найти цену "Shirt" размера "Large".
- G1 = "Shirt", G2 = "Large".
- Массивы условий дают 1 только в строке Shirt+Large, например в строке 4.
- MATCH(1, ..., 0) возвращает 4.
- INDEX(C2:C10, 4) возвращает цену из этой строки.
Измените любое входное значение — и формула мгновенно найдёт нужную строку заново.
=INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0))Ошибки и безопасность
Помните о следующем:
- Одинаковые диапазоны: каждый диапазон условий и столбец INDEX должны иметь одинаковую высоту.
- Отсутствие совпадений: если ни одна строка не соответствует всем условиям, MATCH возвращает #N/A. Оберните всю формулу в
IFERROR. - Дубликаты: если подходит несколько строк, MATCH возвращает только первую. Сделайте условия достаточно точными, чтобы результат был уникальным.
=IFERROR(INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0)), "No match")SUMPRODUCT как альтернатива
Если совпадения могут находиться в нескольких строках и вместо извлечения одного значения необходимо суммировать их значения, SUMPRODUCT станет удобной альтернативой INDEX-MATCH с вводом формулы массива.
Эта функция умножает массивы условий на столбец значений и складывает результаты, поэтому вклад в сумму вносят только строки, соответствующие обоим критериям. Нажимать Ctrl+Shift+Enter не требуется, поскольку SUMPRODUCT изначально работает с массивами.
Используйте INDEX-MATCH для извлечения одного подходящего значения, а SUMPRODUCT — для суммирования значений всех совпадений.
=SUMPRODUCT((A2:A10=G1) * (B2:B10=G2) * C2:C10)Быстрая проверка
Проверьте свои знания поиска по нескольким критериям.
Итоги урока
Для поиска по нескольким критериям с помощью INDEX-MATCH:
- Перемножьте массивы условий:
(A=G1)*(B=G2)даёт 1 только там, где выполняются все условия (логическое AND). MATCH(1, ..., 0)находит позицию этой строки.INDEX(returnCol, position)возвращает значение.
Для добавления условий используйте дополнительные множители *(range=criterion), следите, чтобы диапазоны имели одинаковую высоту, в старых версиях Excel подтверждайте формулу нажатием Ctrl+Shift+Enter и обрабатывайте ошибки с помощью IFERROR.
=INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0))Часто задаваемые вопросы
Урок «Поиск по нескольким условиям с INDEX-MATCH» бесплатный?
Да — полный текст урока «Поиск по нескольким условиям с INDEX-MATCH» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Excel Formulas Academy, подпишись на CoddyKit PRO. Курс Excel Formulas Academy содержит 4 уроков всего.
Чему я научусь в уроке «Поиск по нескольким условиям с INDEX-MATCH»?
Одновременно сопоставляйте несколько столбцов, чтобы точно определить строку. Ты практикуешь Excel Formulas Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Excel Formulas Academy?
Предыдущий опыт не требуется. Excel Formulas Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Поиск по нескольким условиям с INDEX-MATCH»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Excel Formulas Academy?
Да. Каждый урок Excel Formulas Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Двунаправленный поиск с INDEX-MATCH-MATCH
- Поиск последнего совпадающего значения
- Поиск по нескольким условиям с INDEX-MATCH
- Приближённое сопоставление для интервальных таблиц