Новая функция XLOOKUP внедряется в Office 365 с ноября 2019 года. Джо МакДэйд из команды Excel разработал XLOOKUP, чтобы объединить людей, использующих ВПР, и людей, использующих ИНДЕКС / ПОИСКПОЗ. В этом разделе обсуждаются 12 преимуществ XLOOKUP:
- По умолчанию используется точное совпадение.
- Третий аргумент функции VLOOKUP, основанный на целых числах, теперь является правильной ссылкой.
- IFNA встроена для обработки пропущенных значений.
- У XLOOKUP нет проблем с переходом влево.
- Найдите совпадение, меньшее или большее, без сортировки таблицы.
- XLOOKUP может выполнять HLOOKUP.
- Найдите последнее совпадение, выполнив поиск снизу.
- Подстановочные знаки по умолчанию отключены, но вы можете снова включить их.
- Возвратите все 12 месяцев в единую формулу.
- Может возвращать ссылку на ячейку, если XLOOKUP стоит рядом с двоеточием, например XLOOKUP (); XLOOKUP ()
- Может выполнять двустороннее сопоставление, такое как INDEX (, MATCH, MATCH).
- Может суммировать все поиски в одной формуле, как это может сделать ПРОСМОТР.
Вот синтаксис: = XLOOKUP (Lookup_Value, Lookup_Array, Results_Array, (if_not_found), (match_mode), (search_mode)).
Преимущество XLOOKUP 1: точное соответствие по умолчанию
99% моих формул ВПР заканчиваются на ЛОЖЬ или 0, чтобы указать точное соответствие. Если вы всегда используете версию VLOOKUP с точным соответствием, вы можете начать отключать match_mode от функции XLOOKUP.
На следующем рисунке вы смотрите вверх W25-6 из ячейки A4. Вы хотите найти этот предмет в L8: L35. Когда он будет найден, вам потребуется соответствующая цена из столбца N. Нет необходимости указывать False в качестве match_mode, поскольку по умолчанию XLOOKUP имеет точное совпадение.

Преимущество XLOOKUP 2: Results_Array - это ссылка, а не целое число
Подумайте о формуле ВПР, которую вы использовали бы перед XLOOKUP. Третьим аргументом было бы 3, чтобы указать, что вы хотите вернуть третий столбец. Всегда была опасность, что невежественный коллега вставит (или удалит) столбец в вашей таблице. Если в таблице есть дополнительный столбец, ВПР, возвращавшая цену, начнет возвращать описание. Поскольку XLOOKUP указывал на ссылку на ячейку, формула переписывается, чтобы продолжать указывать на цену, которая теперь находится в столбце O.

Преимущество XLOOKUP 3: IFNA встроена как необязательный аргумент
Ужасная ошибка # Н / Д возвращается, если искомое значение не найдено в таблице. В прошлом, чтобы заменить # N / A чем-то другим, вам приходилось использовать IFERROR или IFNA, обернутые вокруг VLOOKUP.

Благодаря предложению Рико на моем канале YouTube, команда Excel добавила необязательный четвертый аргумент для if_not_found. Если вы хотите заменить эти ошибки # N / A нулем, просто добавьте 0 в качестве четвертого аргумента. Или вы можете использовать текст, например «Значение не найдено».

XLOOKUP Преимущество 4: Нет проблем при просмотре слева от ключевого поля
ВПР не может смотреть слева от ключевого поля, не прибегая к ВПР (A4, ВЫБРАТЬ ((1,2), G7: G34, F7: F34), 2, Ложь). С XLOOKUP нет проблем с размещением Results_array слева от Lookup_array.

Преимущество XLOOKUP 5: следующее меньшее или большее совпадение без сортировки
ВПР была возможность искать точное совпадение или просто меньшее значение. Вы можете либо оставить четвертый аргумент вне ВПР, либо изменить False на True. Чтобы это работало, таблица поиска должна быть отсортирована в возрастающей последовательности.

Но функция VLOOKUP не могла вернуть точное совпадение или следующий более крупный элемент. Для этого вам пришлось переключиться на использование MATCH с -1 в качестве match_mode, и вы должны были быть осторожными, чтобы таблица поиска была отсортирована по убыванию.
Необязательный пятый аргумент match_mode XLOOKUP может искать только точное совпадение, равное или просто меньшее, равное или большее. Обратите внимание, что значения в XLOOKUP имеют больше смысла, чем в MATCH:
- -1 находит значение равное или чуть меньшее
- 0 найти точное совпадение
- 1 находит значение равным или чуть большим.
Но самое удивительное: таблицу поиска не нужно сортировать, и любой match_mode будет работать.
Ниже match_mode -1 найдите следующий меньший элемент.

Здесь match_mode, равное 1, определяет, какое транспортное средство требуется в зависимости от количества людей в группе. Обратите внимание, что таблица поиска не сортируется по пассажирам, а название транспортного средства находится слева от ключа.

В таблице сказано:
- Автобус вмещает 64 человека
- Автомобиль вмещает 4 человека
- Мотоцикл вмещает 1 человека
- Tour Van вмещает 12 человек
- Фургон вмещает 6 человек.
В качестве бонуса данные сортируются по транспортному средству (в старом решении с использованием MATCH таблица должна быть отсортирована по убыванию по емкости. Также: транспортное средство находится слева от емкости.
XLOOKUP Преимущество 6: Вбок XLOOKUP заменяет HLOOKUP
Lookup_array и results_array могут быть горизонтальными с помощью XLOOKUP, что упрощает замену HLOOKUP.

Преимущество XLOOKUP 7: поиск последнего совпадения снизу
У меня есть старое видео на YouTube с ответом на вопрос с британской конной фермы. У них был автопарк. Каждый раз, когда автомобиль приходил за топливом или обслуживанием, они записывали автомобиль, дату и пробег в электронную таблицу. Они хотели узнать последний известный пробег для каждого автомобиля. Хотя в эпоху Excel-2017 MAXIFS может решить эту проблему сегодня, решение много лет назад представляло собой загадочную формулу с использованием LOOKUP и делением на ноль.
Сегодня необязательный шестой аргумент XLOOKUP позволяет указать, что поиск должен начинаться с нижней части набора данных.

Заметка
Хотя это большое улучшение, оно позволяет вам найти только первое или последнее совпадение. Некоторые люди надеялись, что это позволит вам найти второе или третье совпадение, но это не цель аргумента search_mode.
Осторожно
На рисунке выше показано, что существуют режимы поиска с использованием старого двоичного поиска. Джо МакДэйд не советует их использовать. Во-первых, улучшенный алгоритм поиска 2018 года достаточно быстр, поэтому нет значительного выигрыша в скорости. Во-вторых, вы рискуете, что невежественный сотрудник сортирует таблицу поиска и введет неправильные ответы.
Преимущество XLOOKUP 8. Подстановочные знаки по умолчанию "отключены"
Большинство людей не осознавали, что ВПР обрабатывает звездочку, вопросительный знак и тильду как символы подстановки, как описано в «# 51 Использование подстановочного знака в ВПР» на стр. 143. В XLOOKUP подстановочные знаки по умолчанию отключены. Если вы хотите, чтобы XLOOKUP рассматривал эти символы как подстановочные знаки, используйте 2 в качестве Match_Mode.

Преимущество XLOOKUP 9: возврат всех 12 месяцев в единую формулу!
Это действительно преимущество динамических массивов, но это моя любимая причина полюбить XLOOKUP. Когда вам нужно вернуть все 12 месяцев в поиске, одна формула, введенная в B6 с прямоугольным return_array, вернет несколько результатов. Эти результаты распространятся на соседние ячейки.
На рисунке ниже одна формула, введенная в B7, возвращает все 12 ответов, показанных в B7: M7.

Преимущество XLOOKUP 10: может возвращать ссылку на ячейку, если она смежна с двоеточием
Этот сложный, но красивый. Раньше существовало семь функций, которые изменяли бы от возврата значения ячейки на возврат ссылки на ячейку, если бы функция касалась двоеточия. Для примера см. Использование A2: INDEX () в качестве энергонезависимого смещения. XLOOKUP - это функция восьмерок, которая предлагает такое поведение, присоединяясь к CHOOSE, IF, IFS, INDEX, INDIRECT, OFFSET и SWITCH.
Рассмотрим следующий рисунок. Кто-то выберите Cherry в E4 и Fig в E5. Вам нужна формула, которая суммирует все от B6 до B9.

На рисунке выше вы можете видеть, что XLOOKUP для E4 вернет 15 из ячейки B6. XLOOKUP из E5 вернет 30 из B9. Однако, если вы возьмете две функции XLOOKUP из ячеек D9 и D10 и соедините их с двоеточием между ними, поведение XLOOKUP изменится. Вместо 15, первый XLOOKUP возвращает адрес ячейки B6!
Чтобы доказать это, я выбрал D7 и использовал формулы, вычислить формулу. После двухкратного нажатия кнопки Evaluate следующая вычисляемая часть - это XLOOKUP ("Cherry", A4: A29, B4: B29), как показано здесь.

Нажмите Evaluate еще раз, и, как ни удивительно, формула XLOOKUP возвращает 6 $ B $ вместо 15, хранящихся в B6. Это происходит потому, что после формулы XLOOKUP стоит двоеточие.

Нажмите Evaluate еще два раза, и промежуточная формула будет = SUM (B6: B9).

Это удивительное поведение, о котором большинство людей не знает. MVP Excel Чарльз Вильямс сказал мне, что его можно запустить с помощью любого из этих трех операторов рядом с XLOOKUP:
- Двоеточие
- Пробел (оператор пересечения)
- Запятая (оператор союза)
Преимущество XLOOKUP 11: двустороннее сопоставление, например INDEX (, MATCH, MATCH)
Для всех моих друзей по VLOOKUP люди INDEX / MATCH ждали, чтобы увидеть, сможет ли XLOOKUP справиться с двусторонним соответствием. Хорошая новость: он может это сделать. Плохая новость: методология немного отличается от ожидаемой фанатами INDEX / MATCH. Это может быть немного выше их голов. Но я уверен, что они могут прийти к такому методу.
Для двустороннего соответствия вы хотите найти, какая строка содержит номер счета A621, показанный в J3. Итак, XLOOKUP начинается достаточно просто: = XLOOKUP (J3, A5: A15. Но затем вам нужно предоставить массив результатов. Вы можете использовать тот же прием, что и в XLOOKUP. Преимущество 9: вернуть все 12 месяцев в единую формулу выше, но используйте его для возврата вертикального вектора. Внутренний XLOOKUP ищет месяц J4 в заголовках месяцев в B4: G4. return_array указан как B5: G15. В результате внутренний XLOOKUP возвращает массив, подобный показанному в I10. : I20 ниже.Поскольку A621 находится в пятой ячейке массива lookup_array, а 104 - в пятой ячейке массива results_array, вы получите правильный ответ из формулы. Ниже J6 показывает старый способ. J7 возвращает новый способ.

Преимущество XLOOKUP 12: суммирование всех значений поиска в одной формуле
Древняя функция LOOKUP предлагала две странные уловки. Во-первых, если вы пытаетесь вычислить общую сумму начисленных бонусных расходов, вы можете попросить LOOKUP найти все значения в одной формуле. На изображении ниже ПРОСМОТР (C4: C14 выполняет 11 поисков. Но функция ПРОСМОТР не предлагает точного совпадения и требует сортировки таблицы поиска.

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

Дополнительный совет: как насчет скрученного ПРОСМОТРА?
MVP Excel Майк Гирвин часто демонстрирует уловку функции ПРОСМОТР, в которой Lookup_Vector расположен вертикально, а Result_Vector - горизонтально. XLOOKUP изначально не поддерживает этот трюк. Но, если вы немного обманете и оберните массив результатов в функцию TRANSPOSE, вы можете управлять искаженным поиском.
