Функция Excel XLOOKUP с примерами формул

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

В учебнике представлена XLOOKUP - новая функция для вертикального и горизонтального поиска в Excel. Поиск слева, последнее совпадение, Vlookup с несколькими критериями и многие другие вещи, для выполнения которых раньше требовалась степень по ракетостроению, теперь стали простыми, как букварь.

Когда вам нужно выполнить поиск в Excel, какую функцию вы используете? Краеугольный камень VLOOKUP или его горизонтальный собрат HLOOKUP? В более сложном случае вы полагаетесь на каноническую комбинацию INDEX MATCH или поручаете эту работу Power Query? Хорошая новость заключается в том, что вам больше не придется выбирать - все эти методы уступают место более мощному и универсальному преемнику, функции XLOOKUP.

Чем XLOOKUP лучше? Во многих отношениях! Он может искать по вертикали и горизонтали, слева и сверху, искать по нескольким критериям и даже возвращать целый столбец или строку данных, а не только одно значение. Microsoft потребовалось более 3 десятилетий, но наконец им удалось разработать надежную функцию, которая преодолела многие досадные ошибки и недостатки VLOOKUP.

В чем подвох? Увы, он есть. Функция XLOOKUP доступна только в Excel для Microsoft 365, Excel 2021 и Excel для Интернета.

    Функция Excel XLOOKUP - синтаксис и применение

    Функция XLOOKUP в Excel выполняет поиск заданного значения в диапазоне или массиве и возвращает соответствующее значение из другого столбца. Она может искать как по вертикали, так и по горизонтали и выполнять точное (по умолчанию), приблизительное (ближайшее) или подстановочное (частичное) совпадение.

    Синтаксис функции XLOOKUP следующий:

    XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])

    Первые 3 аргумента являются обязательными, а последние три - необязательными.

    • Поиск_значения - значение для поиска.
    • Lookup_array - диапазон или массив, в котором будет производиться поиск.
    • Return_array - диапазон или массив, из которого возвращаются значения.
    • Если_не_найдено [optional] - значение, которое возвращается, если совпадение не найдено. Если оно опущено, возвращается ошибка #N/A.
    • Режим матча [необязательно] - тип соответствия, который необходимо выполнить:
      • 0 или опущено (по умолчанию) - точное совпадение. Если не найдено, возвращается ошибка #N/A.
      • -1 - точное совпадение или следующее меньшее значение. Если точное совпадение не найдено, возвращается следующее меньшее значение.
      • 1 - точное совпадение или следующее большее значение. Если точное совпадение не найдено, возвращается следующее большее значение.
      • 2 - совпадение символов подстановочного знака.
    • Режим поиска [необязательно] - направление поиска:
      • 1 или опущено (по умолчанию) - поиск от первого до последнего.
      • -1 - поиск в обратном порядке, от последнего к первому.
      • 2 - бинарный поиск на данных, отсортированных по возрастанию.
      • -2 - бинарный поиск на данных, отсортированных по убыванию.

      По данным Microsoft, бинарный поиск Это специальный алгоритм, который находит позицию искомого значения в отсортированном массиве, сравнивая его со средним элементом массива. Бинарный поиск намного быстрее обычного поиска, но корректно работает только на отсортированных данных.

    Основная формула XLOOKUP

    Чтобы лучше понять, давайте построим формулу Xlookup в ее простейшей форме для выполнения точного поиска. Для этого нам понадобятся только первые 3 аргумента.

    Предположим, у вас есть сводная таблица с информацией о пяти океанах на Земле. Вы хотите получить площадь конкретного океана, введенную в F1 ( поиск_значения ). С названиями океанов в A2:A6 ( массив поиска ) и области в C2:C6 ( массив возврата ), формула выглядит следующим образом:

    =XLOOKUP(F1, A2:A6, C2:C6)

    Если перевести на простой английский, то это означает: ищите значение F1 в A2:A6 и возвращайте значение из C2:C6 в той же строке. Никаких номеров индексов столбцов, никакой сортировки, никаких других нелепых причуд Vlookup! Это просто работает :)

    XLOOKUP против VLOOKUP в Excel

    По сравнению с традиционным VLOOKUP, XLOOKUP имеет множество преимуществ. Чем же он лучше VLOOKUP? Вот список 10 лучших функций, которые превосходят все остальные функции поиска в Excel:

    1. Вертикальный и горизонтальный поиск Функция XLOOKUP получила свое название благодаря способности искать вверх как по вертикали, так и по горизонтали.
    2. Смотрите в любом направлении: вправо, влево, вниз или вверх В то время как VLOOKUP может искать только в крайнем левом столбце, а HLOOKUP - в самой верхней строке, XLOOKUP не имеет таких ограничений. Пресловутый поиск слева в Excel больше не является проблемой!
    3. Точное совпадение по умолчанию В большинстве ситуаций вы будете искать точное совпадение, и XLOOKUP возвращает его по умолчанию (в отличие от функции VLOOKUP, которая по умолчанию использует приблизительное совпадение). Конечно, при необходимости вы можете заставить XLOOKUP выполнять и приблизительное совпадение.
    4. Частичное совпадение с подстановочными знаками Когда вы знаете только часть значения поиска, но не все, вам пригодится совпадение с подстановочным знаком.
    5. Поиск в обратном порядке Раньше, чтобы получить последнее вхождение, нужно было изменить порядок исходных данных. Теперь же достаточно установить режим поиска аргумент -1, чтобы заставить вашу формулу Xlookup искать с конца и возвращать последнее совпадение.
    6. Возврат нескольких значений . Путем манипуляций с массив возврата аргумент, вы можете вытащить целую строку или столбец данных, связанных с вашим значением поиска.
    7. Поиск с использованием нескольких критериев Excel XLOOKUP работает с массивами нативно, что позволяет выполнять поиск с несколькими критериями.
    8. Если функциональность ошибки Традиционно мы используем функцию IFNA для отлова ошибок #N/A. XLOOKUP включает эту функцию в функцию если_не_найдено аргумент, позволяющий вывести собственный текст, если не найдено ни одного подходящего совпадения.
    9. Вставки/удаления колонок Одна из самых раздражающих проблем с VLOOKUP заключается в том, что добавление или удаление столбцов ломает формулу, поскольку возвращаемый столбец идентифицируется по его индексному номеру. В XLOOKUP вы предоставляете возвращаемый диапазон, а не номер, что означает, что вы можете вставлять и удалять столько столбцов, сколько вам нужно, ничего не ломая.
    10. Лучшая производительность VLOOKUP может замедлить работу рабочих листов, поскольку он включает в вычисления всю таблицу, что приводит к обработке гораздо большего количества ячеек, чем это необходимо. XLOOKUP обрабатывает только массивы поиска и возврата, от которых он действительно зависит.

    Как использовать XLOOKUP в Excel - примеры формул

    Следующие примеры демонстрируют наиболее полезные функции XLOOKUP в действии. Кроме того, вы обнаружите несколько нетривиальных вариантов использования, которые поднимут ваши навыки работы с поиском в Excel на новый уровень.

    Смотрите вверх по вертикали и горизонтали

    Раньше в Microsoft Excel было две функции для различных типов поиска, каждая из которых имела свой синтаксис и правила использования: VLOOKUP для поиска по вертикали в столбце и HLOOKUP для поиска по горизонтали в строке.

    Функция XLOOKUP может выполнять оба действия с одинаковым синтаксисом. Разница заключается в том, что вы предоставляете для массивов поиска и возврата.

    Для v-образного поиска введите столбцы:

    =XLOOKUP(E1, A2:A6, B2:B6)

    Для h-lookup введите строки вместо столбцов:

    =XLOOKUP(I1, B1:F1, B2:F2)

    Левый поиск выполняется нативно

    В ранних версиях Excel формула INDEX MATCH была единственным надежным способом поиска слева или сверху. Теперь вам больше не нужно комбинировать две функции там, где достаточно одной. Просто укажите целевой массив поиска, и XLOOKUP без проблем обработает его независимо от его расположения.

    В качестве примера, давайте добавим Рейтинг Цель - получить ранг океана в F1. VLOOKUP здесь споткнется, потому что он может вернуть значение только из столбца справа от столбца поиска. Формула Xlookup легко справится с этой задачей:

    =XLOOKUP(F1, B2:B6, A2:A6)

    Аналогичным образом можно смотреть выше при горизонтальном поиске в рядах.

    XLOOKUP с точным и приблизительным соответствием

    Поведение совпадения контролируется 5-м аргументом, называемым режим соответствия По умолчанию выполняется точное совпадение.

    Обратите внимание, что даже если вы выбираете приблизительное соответствие ( режим соответствия установлено в 1 или -1), функция по-прежнему будет искать сначала точное совпадение. Разница заключается в том, что она возвращает, если точное значение поиска не найдено.

    Аргумент Match_mode:

    • 0 или опущен - точное совпадение; если не найден - ошибка #N/A.
    • -1 - точное совпадение; если не найдено - следующий меньший элемент.
    • 1 - точное совпадение; если не найдено - следующий больший элемент.

    Точное совпадение XLOOKUP

    Этот вариант вы, вероятно, используете в 99% случаев, когда выполняете поиск в Excel. Поскольку точное совпадение - это поведение XLOOKUP по умолчанию, вы можете опустить его режим соответствия и предоставить только первые 3 необходимых аргумента.

    В некоторых ситуациях, однако, точное соответствие не работает. Типичный сценарий - когда таблица поиска содержит не все значения, а скорее "вехи" или "границы", такие как скидки на основе количества, комиссионные на основе продаж и т.д.

    Наш пример таблицы поиска показывает корреляцию между экзаменационными баллами и оценками. Как видно на скриншоте ниже, точное совпадение работает только тогда, когда оценка конкретного студента точно совпадает со значением в таблице поиска (как у Кристиана в строке 3). Во всех остальных случаях возвращается ошибка #N/A.

    =XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6)

    Чтобы получить оценки вместо ошибок #N/A, нужно искать приблизительное совпадение, как показано в следующем примере.

    Приблизительное соответствие XLOOKUP

    Чтобы выполнить приблизительный поиск, установите значение режим соответствия аргумент на -1 или 1, в зависимости от того, как организованы ваши данные.

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

    =XLOOKUP(F11, $B$11:$B$15, $C$11:$C$15, ,-1)

    Например, Брайан имеет оценку 98 (F2). Формула ищет это значение в B2:B6, но не может его найти. Тогда она ищет следующий меньший элемент и находит 90, что соответствует оценке A:

    Если бы наша таблица поиска содержала верхние границы оценок, мы бы установили режим соответствия к 1 для поиска следующего большего элемента, если точное совпадение не удалось:

    =XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6, ,1)

    Формула ищет 98 и снова не находит его. На этот раз она пытается найти следующее большее значение и получает 100, что соответствует классу A:

    Совет. При копировании формулы Xlookup в несколько ячеек зафиксируйте диапазоны поиска или возврата с помощью абсолютных ссылок на ячейки (например, $B$2:$B$6), чтобы предотвратить их изменение.

    XLOOKUP с частичным совпадением (подстановочные знаки)

    Чтобы выполнить поиск частичного совпадения, установите значение режим соответствия аргумент равен 2, что дает указание функции XLOOKUP обработать символы подстановки:

    • Звездочка (*) - представляет собой любую последовательность символов.
    • Вопросительный знак (?) - обозначает любой отдельный символ.

    Чтобы понять, как это работает, рассмотрим следующий пример. В столбце A у вас есть несколько моделей смартфонов, а в столбце B - емкость их аккумуляторов. Вам интересно, какой аккумулятор у определенного смартфона. Проблема в том, что вы не уверены, что сможете ввести название модели именно так, как оно отображается в столбце A. Чтобы решить эту проблему, введите ту часть, которая точно есть, и замените оставшиесясимволы с подстановочными знаками.

    Например, чтобы получить информацию об аккумуляторе iPhone X, используйте эту формулу:

    =XLOOKUP("*iphone X*", A2:A8, B2:B8, ,2)

    Или введите известную часть значения поиска в некоторую ячейку и объедините ссылку на ячейку с символами подстановки:

    =XLOOKUP("*"&E1& "*", A2:A8, B2:B8, ,2)

    XLOOKUP в обратном порядке, чтобы получить последнее вхождение

    В случае если ваша таблица содержит несколько вхождений значения поиска, иногда может потребоваться возврат значения последний матч Для этого настройте формулу Xlookup на поиск в обратном порядке.

    Направление поиска контролируется 6-м аргументом с именем режим поиска :

    • 1 или опущено (по умолчанию) - поиск от первого до последнего значения, т.е. сверху вниз при вертикальном поиске или слева направо при горизонтальном поиске.
    • -1 - поиск в обратном порядке от последнего к первому значению.

    В качестве примера, давайте вернем последнюю продажу, совершенную конкретным продавцом. Для этого мы собираем первые три необходимых аргумента (G1 для поиск_значения , B2:B9 для массив поиска , и D2:D9 для массив возврата ) и поместите -1 в 5-й аргумент:

    =XLOOKUP(G1, B2:B9, D2:D9, , ,-1)

    Просто и легко, не так ли?

    XLOOKUP для возврата нескольких столбцов или строк

    Еще одной удивительной особенностью XLOOKUP является возможность возвращать более одного значения, относящегося к одному и тому же совпадению. Все это делается с помощью стандартного синтаксиса и без каких-либо дополнительных манипуляций!

    Предположим, что из приведенной ниже таблицы вы хотите получить все данные, относящиеся к интересующему вас продавцу (F2). Для этого вам нужно предоставить диапазон, а не отдельный столбец или строку, для параметра массив возврата аргумент:

    =XLOOKUP(F2, A2:A7, B2:D7)

    Вы вводите формулу в левую верхнюю ячейку диапазона результатов, и Excel автоматически переливает результаты в соседние пустые ячейки. В нашем случае возвращаемый массив (B2:D7) включает 3 столбца ( Дата , Пункт и Сумма ), и все три значения возвращаются в диапазон G2:I2.

    Если вы хотите расположить результаты вертикально в столбце, вложите XLOOKUP в функцию TRANSPOSE, чтобы перевернуть возвращаемый массив:

    =TRANSPOSE(XLOOKUP(G1, A2:A7, B2:D7))

    Аналогичным образом можно вернуть целый столбец данных, скажем, столбец Сумма Для этого используйте ячейку F1, которая содержит "Amount" в качестве поиск_значения , диапазон A1:D1, содержащий заголовки столбцов как массив поиска и диапазон A2:D7, содержащий все данные как массив возврата .

    =XLOOKUP(F1, A1:D1, A2:D7)

    Примечание. Поскольку несколько значений заполняются в соседние ячейки, убедитесь, что у вас достаточно пустых ячеек справа или снизу. Если Excel не может найти достаточно пустых ячеек, возникает ошибка #SPILL!

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

    XLOOKUP с несколькими критериями

    Еще одним большим преимуществом XLOOKUP является его встроенная обработка массивов. Благодаря этой возможности, вы можете оценивать несколько критериев непосредственно в массив поиска аргумент:

    XLOOKUP(1, ( критерий_диапазона1 = критерии1 ) * ( критерий_диапазона2 = критерии2 ) * (...), массив возврата )

    Как работает эта формула : Результатом проверки каждого критерия является массив значений TRUE и FALSE. Умножение массивов преобразует TRUE и FALSE в 1 и 0, соответственно, и создает окончательный массив поиска. Как вы знаете, умножение на 0 всегда дает ноль, поэтому в массиве поиска только те элементы, которые соответствуют всем критериям, представлены 1. А поскольку наше значение поиска равно "1", Excel берет первую "1" в массив поиска (первое совпадение) и возвращает значение из массив возврата в том же положении.

    Чтобы увидеть формулу в действии, давайте возьмем сумму из D2:D10 ( массив возврата ) со следующими условиями:

    • Критерии1 (дата) = G1
    • Критерии2 (продавец) = G2
    • Критерии3 (пункт) = G3

    С датами в A2:A10 ( критерий_диапазона1 ), имена продавцов в B2:B10 ( критерий_диапазона2 ) и предметы в C2:C10 ( критерий_диапазона3 ), формула принимает такой вид:

    =XLOOKUP(1, (B2:B10=G1) * (A2:A10=G2) * (C2:C10=G3), D2:D10)

    Хотя функция Excel XLOOKUP обрабатывает массивы, она работает как обычная формула и завершается обычным нажатием клавиши Enter.

    Формула XLOOKUP с несколькими критериями не ограничивается условиями "равно". Вы можете свободно использовать и другие логические операторы. Например, чтобы отфильтровать заказы, сделанные на дату в G1 или ранее, поместите "<=G1" в первый критерий:

    =XLOOKUP(1, (A2:A10<=G1) * (B2:B10=G2) * (C2:C10=G3), D2:D10)

    Двойной XLOOKUP

    Чтобы найти значение на пересечении определенной строки и столбца, выполните так называемое двойной поиск или матричный поиск Да, Excel XLOOKUP тоже может это делать! Вы просто вложите одну функцию в другую:

    XLOOKUP( поиск_значения1 , lookup_array1 , XLOOKUP( поиск_значения2 , lookup_array2 , данные_значения ))

    Как работает эта формула : Формула основана на способности XLOOKUP возвращать целую строку или столбец. Внутренняя функция ищет свое значение поиска и возвращает столбец или строку соответствующих данных. Этот массив передается во внешнюю функцию как массив возврата .

    Для этого мы введем значения поиска в H1 (имя продавца) и H2 (квартал) и выполним двусторонний Xlookup со следующей формулой:

    =XLOOKUP(H1, A2:A6, XLOOKUP(H2, B1:E1, B2:E6))

    Или наоборот:

    =XLOOKUP(H2, B1:E1, XLOOKUP(H1, A2:A6, B2:E6))

    Где A2:A6 - имена продавцов, B1:E1 - кварталы (заголовки столбцов), а B2:E6 - значения данных.

    Двусторонний поиск также может быть выполнен с помощью формулы INDEX Match и некоторыми другими способами. Для получения дополнительной информации см. раздел Двусторонний поиск в Excel.

    Если ошибка XLOOKUP

    Если значение поиска не найдено, Excel XLOOKUP возвращает ошибку #N/A. Довольно знакомая и понятная опытным пользователям, она может быть довольно запутанной для новичков. Чтобы заменить стандартное обозначение ошибки на удобное для пользователя сообщение, введите свой собственный текст в 4-й аргумент под названием если_не_найдено .

    Если кто-то введет недопустимое имя океана в E1, следующая формула явно сообщит ему, что "Совпадение не найдено":

    =XLOOKUP(E1, A2:A6, B2:B6, "Совпадений не найдено")

    Примечания:

    • Сайт если_не_найдено аргумент отлавливает только ошибки #N/A, а не все ошибки.
    • Ошибки #N/A также можно обрабатывать с помощью IFNA и VLOOKUP, но синтаксис немного сложнее, а формула длиннее.

    XLOOKUP с учетом регистра

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

    XLOOKUP(TRUE, EXACT( lookup_value , массив поиска ), массив возврата )

    Как работает эта формула : Функция EXACT сравнивает искомое значение с каждым значением в массиве lookup и возвращает TRUE, если они полностью совпадают, включая регистр букв, FALSE в противном случае. Этот массив логических значений поступает в массив поиска В результате XLOOKUP ищет значение TRUE в указанном выше массиве и возвращает совпадение из возвращаемого массива.

    Например, чтобы получить цену от B2:B7 ( массив возврата ) для элемента в E1 ( lookup_value) , формула в E2:

    =XLOOKUP(TRUE, EXACT(E1, A2:A7), B2:B7, "Не найдено")

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

    Excel XLOOKUP не работает

    Если ваша формула работает неправильно или выдает ошибку, скорее всего, это происходит по следующим причинам:

    XLOOKUP недоступен в моем Excel

    Функция XLOOKUP не имеет обратной совместимости. Она доступна только в Excel для Microsoft 365 и Excel 2021 и не появится в более ранних версиях.

    XLOOKUP возвращает неверный результат

    Если ваша очевидно правильная формула Xlookup возвращает неверное значение, есть вероятность, что диапазон поиска или возврата "сдвинулся" при копировании формулы вниз или в другую сторону. Чтобы этого не произошло, всегда фиксируйте оба диапазона абсолютными ссылками на ячейки (например, $A$2:$A$10).

    XLOOKUP возвращает ошибку #N/A

    Ошибка #N/A означает, что значение поиска не найдено. Чтобы исправить это, попробуйте поискать приблизительное соответствие или сообщите пользователям, что соответствие не найдено.

    XLOOKUP возвращает ошибку #VALUE

    Ошибка #VALUE! возникает, если массивы поиска и возврата имеют несовместимые размеры. Например, невозможно выполнить поиск в горизонтальном массиве и вернуть значения из вертикального массива.

    XLOOKUP возвращает ошибку #REF

    Ошибка #REF! возникает при поиске между двумя разными рабочими книгами, одна из которых закрыта. Чтобы исправить ошибку, просто откройте оба файла.

    Как вы только что увидели, XLOOKUP имеет множество замечательных возможностей, которые делают его функцией для практически любого поиска в Excel. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

    Рабочая тетрадь для тренировок для скачивания

    Примеры формул Excel XLOOKUP (файл.xlsx)

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