INDEX MATCH в Google Sheets - еще один способ вертикального поиска

  • Поделись Этим
Michael Brown

Когда вам нужно найти в листе данные, соответствующие определенной ключевой записи, обычно обращаются к VLOOKUP в Google Sheets. Но вот так: VLOOKUP практически сразу накладывает на вас ограничения. Поэтому лучше увеличить ресурсы для решения задачи, изучив INDEX MATCH.

INDEX MATCH в Google Sheets - это комбинация двух функций: INDEX и MATCH. При использовании в тандеме они выступают в качестве лучшей альтернативы VLOOKUP в Google Sheets. Давайте узнаем об их возможностях вместе в этой статье блога. Но сначала я хотел бы провести краткий экскурс по их роли в электронных таблицах.

    Функция МАТЧ в Google Sheets

    Я бы хотел начать с Google Sheets MATCH, потому что он очень прост. Он сканирует ваши данные в поисках определенного значения и возвращает его позицию:

    =MATCH(search_key, range, [search_type])
    • ключ_поиска это та запись, которую вы ищете. Требуется.
    • ассортимент это либо строка, либо столбец, в котором нужно искать. Требуется.

      Примечание. MATCH принимает только одномерные массивы: либо строки, либо столбцы.

    • тип_поиска является необязательным и определяет, должно ли совпадение быть точным или приблизительным. Если он опущен, то по умолчанию он равен 1:
      • 1 означает, что диапазон сортируется по возрастанию. Функция получает наибольшее значение, меньшее или равное вашему ключ_поиска .
      • 0 заставит функцию искать точное совпадение в случае, если ваш диапазон не отсортирован.
      • -1 указывает на то, что записи ранжируются с помощью сортировки по убыванию. В этом случае функция получает наименьшее значение, большее или равное вашему ключ_поиска .

    Вот пример: чтобы получить позицию определенной ягоды в списке всех ягод, мне нужна следующая формула MATCH в моих Google Sheets:

    =MATCH("Черника", A1:A10, 0)

    Функция ИНДЕКС в Google Sheets

    В то время как MATCH показывает, где искать значение (его расположение в диапазоне), функция INDEX в Google Sheets извлекает само значение на основе смещения строки и столбца:

    =INDEX(reference, [row], [column])
    • ссылка это диапазон, в котором нужно искать. Требуется.
    • строка число строк, отстоящих от самой первой ячейки диапазона. Необязательно, 0, если не указано.
    • колонка так же, как строка , - количество столбцов смещения. Также необязательно, также 0, если опущено.

    Если указать оба необязательных аргумента (строку и столбец), ИНДЕКС Google Sheets вернет запись из целевой ячейки:

    =INDEX(A1:C10, 7, 1)

    Пропустите один из этих аргументов, и функция получит всю строку или столбец соответственно:

    =INDEX(A1:C10, 7)

    Как использовать INDEX MATCH в Google Sheets - примеры формул

    Когда INDEX и MATCH используются вместе в электронных таблицах, они проявляют себя с самой лучшей стороны. Они могут абсолютно точно заменить VLOOKUP в Google Sheets и получить нужную запись из таблицы на основе ключевого значения.

    Постройте свою первую формулу INDEX MATCH для Google Sheets

    Предположим, вы хотите получить информацию о запасах клюквы из той же таблицы, которую я использовал выше. Я только поменял местами столбцы B и C (вы узнаете почему чуть позже).

    1. Теперь все ягоды перечислены в столбце C. Функция Google Sheets MATCH поможет вам найти точную строку клюквы: 8

      =MATCH("Клюква", C1:C10, 0)

    2. Положите всю эту формулу MATCH на строка аргумент в функции INDEX:

      =INDEX(A1:C10, MATCH("Клюква", C1:C10, 0))

      В этом случае возвращается весь ряд с клюквой.

    3. Но поскольку вам нужна только информация о запасах, укажите также номер колонки поиска: 3

      =INDEX(A1:C10, MATCH("Клюква", C1:C10,0), 2)

    4. Вуаля!

    5. Вы можете пойти дальше и отказаться от последнего столбцового индикатора ( 2 ). Он вам вообще не понадобится, если вы будете использовать только колонку поиска ( B1:B10 ), а не всей таблицы ( A1:C10 ) в качестве первого аргумента:

      =INDEX(B1:B10, MATCH("Клюква", C1:C10, 0))

      Совет. Более удобным способом проверки наличия различных ягод было бы размещение их в выпадающем списке ( E2 ) и направьте вашу функцию MATCH на ячейку с этим списком:

      =INDEX(B1:B10, MATCH(E2, C1:C10, 0))

      Как только вы выберете ягоду, соответствующее значение изменится соответственно:

    Почему INDEX MATCH в Google Sheets лучше, чем VLOOKUP

    Вы уже знаете, что INDEX MATCH в Google Sheets ищет ваше значение в таблице и возвращает другую связанную запись из той же строки. И вы знаете, что VLOOKUP в Google Sheets делает то же самое. Так зачем беспокоиться?

    Дело в том, что, ИНДЕКС МАТЧА есть некоторые основные преимущества над VLOOKUP:

    1. Возможен поиск по левому краю Я поменял местами столбцы, чтобы проиллюстрировать это: функция INDEX MATCH в Google Sheets может и ищет слева от столбца поиска. VLOOKUP всегда ищет в самом первом столбце диапазона и ищет совпадения справа от него - иначе он получает только ошибки #N/A:

    2. Отсутствие путаницы в ссылках при добавлении новых колонок и перемещении существующих. Если вы добавляете или перемещаете столбцы, INDEX MATCH отразит изменения автоматически, не вмешиваясь в результат. Поскольку вы используете ссылки на столбцы, они мгновенно корректируются Google Sheets:

      Попытайтесь сделать это с помощью VLOOKUP: он требует номер заказа, а не ссылки на ячейки для столбца поиска. Таким образом, вы просто получите неверное значение, потому что на его месте находится другой столбец - столбец 2 в моем примере:

    3. Рассматривает текстовый случай при необходимости (подробнее об этом ниже).
    4. Может использоваться для вертикального поиска по нескольким критериям.

    Я предлагаю вам подробно рассмотреть два последних пункта ниже.

    V-lookup с учетом регистра с помощью INDEX MATCH в Google Sheets

    INDEX MATCH - лучший вариант, когда речь идет о чувствительности к регистру.

    Предположим, что все ягоды продаются в двух вариантах - рассыпные (взвешиваются на прилавке) и упакованные в ящики. Следовательно, для каждой ягоды, записанной в разных случаях в списке, существует два случая, каждый со своим идентификатором, который также различается в разных случаях:

    Итак, как вы можете найти информацию о складе ягод, продаваемых определенным образом? VLOOKUP вернет первое попавшееся имя, независимо от его регистра.

    К счастью, INDEX MATCH для Google Sheets может сделать это правильно. Вам просто нужно будет использовать одну дополнительную функцию - FIND или EXACT.

    Пример 1. FIND для чувствительного к регистру Vlookup

    FIND - это функция, чувствительная к регистру в Google Sheets, поэтому она отлично подходит для вертикального поиска с учетом регистра:

    =ArrayFormula(INDEX(B2:B19, MATCH(1, FIND(E2, C2:C19)), 0))

    Давайте посмотрим, что происходит в этой формуле:

    1. FIND сканирует столбец C ( C2:C19 ) для записи от E2 ( вишня ) с учетом регистра букв. Найдя ячейку, формула "помечает" ее цифрой - 1 .
    2. MATCH ищет этот знак - 1 - в той же колонке ( C ) и передает номер его строки в INDEX.
    3. INDEX спускается к этой строке в столбце B ( B2:B19 ) и передает вам требуемую запись.
    4. Когда вы закончите построение формулы, нажмите Ctrl+Shift+Enter, чтобы добавить ArrayFormula в начало. Она необходима, потому что без нее FIND не сможет искать в массивах (в более чем одной ячейке). Или вы можете ввести ' ArrayFormula ' с клавиатуры.

    Пример 2. EXACT для чувствительного к регистру Vlookup

    Если вы замените FIND на EXACT, последний будет искать записи с точно такими же символами, включая их текстовый регистр.

    Разница лишь в том, что EXACT "отмечает" совпадение с TRUE а не количество 1 Следовательно, первый аргумент для MATCH должен быть следующим TRUE :

    =ArrayFormula(INDEX(B2:B19, MATCH(TRUE, EXACT(E2, C2:C19), 0)))

    Google Sheets INDEX MATCH с несколькими критериями

    Что если есть несколько условий, на основании которых вы хотите получить запись?

    Давайте проверим цену на вишня который продается в Ведра из полипропилена и уже истекающий :

    Я расположил все критерии в выпадающих списках в столбце F. И именно Google Sheets INDEX MATCH поддерживает множественные критерии, а не VLOOKUP. Вот формула, которую вам нужно будет использовать:

    =ArrayFormula(INDEX(B2:B24, MATCH(CONCATENATE(F2:F4), A2:A24&C2:C24&D2:D24, 0),))

    Не паникуйте! :) На самом деле его логика довольно проста:

    1. CONCATENATE(F2:F4) объединяет все три записи из ячеек с критериями в одну строку следующим образом:

      CherryPP bucketRunning out

      Это ключ_поиска для MATCH, или, другими словами, то, что вы ищете в таблице.

    2. A2:A24&C2:C24&D2:D24 составлять ассортимент для функции MATCH. Поскольку все три критерия находятся в трех отдельных столбцах, таким образом вы как бы объединяете их:

      ВишняКартонный лотокВ наличии

      ВишняПленочная упаковкаНет в наличии

      CherryPP bucketRunning out

      и т.д.

    3. Последний аргумент в MATCH - 0 - позволяет найти точное соответствие для CherryPP bucketRunning out среди всех этих рядов объединенных столбцов. Как видите, он находится в 3-м ряду.
    4. А затем INDEX делает свое дело: он извлекает запись из 3-й строки столбца B.
    5. ArrayFormula используется для того, чтобы другие функции могли работать с массивами.

    Совет. Если ваша формула не найдет совпадения, она вернет ошибку. Чтобы избежать этого, вы можете обернуть всю формулу в IFERROR (сделать его первым аргументом) и ввести в качестве второго аргумента то, что вы хотите видеть в ячейке вместо ошибки:

    =IFERROR(ArrayFormula(INDEX(B2:B27, MATCH(CONCATENATE(F2:F4), A2:A27&C2:C27&D2:D27, 0),)), "Не найдено")

    Лучшая альтернатива INDEX MATCH в Google Sheets - множественные совпадения VLOOKUP

    Какую бы функцию поиска вы ни предпочитали, VLOOKUP или INDEX MATCH, им обоим есть лучшая альтернатива.

    Multiple VLOOKUP Matches - это специальная надстройка для Google Sheets, предназначенная для:

    • поиск без формул
    • поиск во всех направлениях
    • поиск по нескольким условиям для различных типов данных: текст, числа, даты, время, и т.д.
    • получить несколько спичек, столько, сколько вам нужно (конечно, при условии, что в вашей таблице их столько же)

    Интерфейс понятен, поэтому вам не придется сомневаться, все ли вы делаете правильно:

    1. Выберите диапазон источников.
    2. Задайте количество возвращаемых совпадений и столбцов.
    3. Точная настройка условий с помощью предопределенных операторов ( содержит, =, не пустой , между , и т.д.).

    Вы также сможете:

    • предварительный просмотр результата
    • решить, где его разместить
    • и как: в виде формулы или просто значения

    Не упустите возможность проверить это дополнение. Установите его из Google Workspace Marketplace. На странице руководства подробно описана каждая опция.

    Мы также подготовили специальный обучающий видеоролик:

    Увидимся в комментариях ниже или в следующей статье ;)

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.