VLOOKUP уже не нужен! Почему XLOOKUP — секрет по-настоящему удобных таблиц в Excel

Laptop showing an Excel table.

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

Простой синтаксис XLOOKUP: вот как я наконец понял, как работает Excel

Как устроена современная формула поиска

A man looks at a piece of paper through a magnifying glass.

Прежде чем перейти к преимуществам XLOOKUP, напомню, почему многие так привыкли к VLOOKUP: данные обычно идут по столбцам.

VLOOKUP всегда требует четыре обязательных параметра: что искать, где искать, номер столбца и явно указанный FALSE для точного совпадения — иначе результат может быть случайным:

XLOOKUP сразу же избавляет от этих неудобств. Не нужно больше выделять весь диапазон или вручную высчитывать номера столбцов: просто указываешь, что искать, где искать и что вернуть — и всё работает!

Дальше покажу, насколько легко стало работать с точным совпадением и поиском с конца таблицы.

Особенно удобно использовать XLOOKUP, если ваши данные оформлены как «Таблица» (Ctrl+T или «Вставка» → «Таблица») — так вместо номеров используются имена столбцов, а формулы становятся нагляднее. Я буду показывать примеры на таблице сотрудников StaffDirectory, где есть пять столбцов: ID, ФИО, отдел, должность и Email.

С VLOOKUP я считал столбцы как робот

Как смена порядка столбцов рушила диссертации (и обычные формулы)

Меня ужасно раздражал этот ручной подсчёт столбцов в VLOOKUP. Например, если нужно найти email по имени из ячейки A2, нельзя напрямую обратиться к столбцу — VLOOKUP ищет только в первом столбце диапазона, а это часто ID. В итоге формула не срабатывает — ошибка:

An NA error is returned in cell B2 for David Cho because the VLOOKUP function is hard-coded to scan for names within the ID column of the Excel table range.

Чтобы формула всё-таки сработала, диапазон приходится менять, чтобы нужный столбец оказался первым. И тут появляются ошибки: если обозначить не тот номер — вместо email появится, например, название отдела или должность.

Попробуйте только забыть, что после изменения диапазона индекс столбца тоже меняется — получите #Н/Д. А если кто-то добавит столбец внутри диапазона, все расчёты слетят.

С XLOOKUP эти головоломки ушли в прошлое. Формула читается буквально как предложение:

Теперь можно переставлять или добавлять столбцы, как угодно — формула работает всегда, ведь она опирается на имена столбцов, а не их положение.

А как насчёт HLOOKUP? Если данные разложены не по столбцам, а по строкам, раньше приходилось выкручиваться через HLOOKUP. Сейчас разницы больше нет: XLOOKUP одинаково хорошо ищет и по строкам, и по столбцам — синтаксис всегда один.

Microsoft 365 Personal

Microsoft 365 — это Word, Excel и PowerPoint сразу на пяти устройствах, плюс 1 ТБ в облаке OneDrive и много других полезных вещей.

Больше не надо изобретать IFERROR: XLOOKUP сам справится с ошибками!

Как элегантно обработать отсутствие данных

VLOOKUP при отсутствии значения сразу выдаёт ошибку. В XLOOKUP прямо внутри формулы можно прописать, какое сообщение показывать, если данных нет.

Чтобы скрыть страшный #Н/Д в VLOOKUP, приходилось оборачивать формулу в IFERROR — только больше путаницы и длинных формул:

The message Employee not found is displayed in cell B2 as an IFERROR wrapper handles the missing name result from the VLOOKUP function in Excel.

С XLOOKUP всё проще: указываешь понятное сообщение прямо в четвёртом параметре — и если сотрудник не найден, формула напишет ровно то, что вы указали:

The fallback message Employee not found is cleanly managed in cell B2 through the built-in if_not_found argument of an XLOOKUP formula in Excel.

Формула не становится длиннее, а понять, что она делает, становится на порядок проще.

Точное совпадение по умолчанию — забудьте про подводные камни!

Что значит больше не указывать FALSE в конце каждой формулы

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

Например: ищете «1065», а в списке есть только «1064» — VLOOKUP без явно указанного FALSE вернёт не ошибку, а сотрудника с ID 1064. И вы это даже не сразу заметите!

A false positive result is returned in Excel because the VLOOKUP formula is missing a range lookup argument.

Вторая проблема — если таблица не отсортирована по возрастанию, VLOOKUP может возвращать вообще что угодно или выдавать #Н/Д. Разобраться в причинах почти невозможно.

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

Если искать «1065», а такого ID нет, XLOOKUP честно напишет «ID не найден» — и никаких ложных совпадений и сюрпризов!

The custom message 'ID not found' is safely returned by XLOOKUP in cell B2 because the function defaults to an exact match regardless of the Excel table sort order.

Нужно искать с конца? Теперь это быстрее простого!

Как за секунду найти свежую запись в самом низу таблицы

Когда таблица растёт, часто нужно узнать не первую, а последнюю запись (например, самый актуальный отдел для сотрудника). Это сильная сторона XLOOKUP.

Вот пример: в нашей таблице сотрудник «Marcus Vance» встречается дважды — сначала работал в «Маркетинге» (первая строка), потом перешёл в «Продажи» (пятая строка). Самое новое — последняя строка.

Но обычный VLOOKUP всегда покажет только самое первое совпадение (то есть устаревший отдел):

The outdated department of Marketing is returned for Marcus Vance in cell B2 because VLOOKUP runs a top-down search and stops at the first match it finds in the Excel table.

В XLOOKUP для поиска снизу достаточно указать -1 в шестом аргументе, и формула сразу выдаёт самую свежую информацию:

Теперь всегда получаете актуальные данные, даже если их несколько!

The updated department of Sales is successfully returned for Marcus Vance in cell B2 by setting the search mode argument to -1 for a bottom-up scan in Excel.

Теперь можно вытянуть сразу несколько столбцов одной формулой!

Как одним махом получить все данные по сотруднику

Раньше для этого приходилось писать отдельный VLOOKUP на каждую ячейку — отдельно для отдела, отдельно для должности, отдельно для email:

и

и

С динамическими диапазонами (dynamic arrays) достаточно одной формулы XLOOKUP — выделяешь все нужные столбцы, и Excel сам заполнит их в соседних ячейках:

The department, role, and email details are all populated simultaneously because a single XLOOKUP formula spills an entire range of columns automatically in Excel.

Чем меньше формул в файле, тем проще его поддерживать и тем быстрее работает сам Excel — особенно на больших таблицах.

А для сложных случаев можно воспользоваться CHOOSECOLS, если нужны не соседние столбцы — но чаще всего XLOOKUP хватает за глаза.

Пора переходить на умные формулы — это реально экономит нервы!

После того как я полностью перешёл на XLOOKUP, мои таблицы перестали ломаться на пустом месте. Я больше не переживаю за сбитые индексы или странные совпадения. Теперь работаю с данными, а не бесконечно чиню формулы. Кстати, если привыкли к связке INDEX+MATCH, новая функция XMATCH тоже поддерживает точное совпадение по умолчанию — попробуйте, это удобно!

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!

Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в:

Алекс Бежбакин
Оцените автора
Добавить комментарий