← Все курсы · Курс Excel · Все руководства
VLOOKUP против XLOOKUP: какой использовать и как переключаться
К концу этой страницы вы сможете написать обе формулы поиска, прочитать любую из чужой книги и намеренно выбирать между ними. Вы узнаете три конкретных способа, которыми VLOOKUP возвращает неправильное значение, не показывая ошибку, и какой аргумент XLOOKUP удаляет каждый из них. Это около двадцати минут.
Вот что на самом деле с этим делать. Откройте книгу, которую вы используете, найдите одну ВПР и проверьте ее последний аргумент. Если последний аргумент отсутствует, эта формула может сегодня молча вернуть неправильное значение строки, и в разделе 3 показано, как именно.
Короткая версия: напишите XLOOKUP, чтобы узнать что-нибудь новое. В любом случае научитесь читать VLOOKUP, потому что старые книги, старые версии Excel и интервьюеры все еще говорят на нем.
Основное отличие — одна картинка. ВПР отсчитывает путь до позиции столбца. XLOOKUP указывает непосредственно на два столбца.
- Что на самом деле делает поиск
- ВПР, аргумент за аргументом
- Три причины, по которым VLOOKUP идет не так, как надо
- XLOOKUP и какой сбой удаляет каждый аргумент
- Полное до и после
- Крайние случаи, которые нарушают поиск в реальных книгах
- Какой из них использовать: вилка по имени
- Почему это работает
- Использование этого в своей книге
- Все на одном экране
| ЭмпИД | имя | Отделение | Зарплата |
|---|---|---|---|
| 1001 | Эйден Кросс | Финансы | 54,200 |
| 1002 | Беа Ортис | Маркетинг | 58,900 |
| 1003 | Чэнь Ву | Финансы | 61,500 |
| 1004 | Дана Рейес | Операции | 49,800 |
| 1006 | Элиф Кая | Маркетинг | 63,100 |
| 1007 | Фрэнк Осей | Операции | 52,400 |
| 1008 | Джиа Тран | Финансы | 67,250 |
| 1009 | Хьюго Линд | IT | 71,000 |
| 1010 | Айви Нэш | IT | 59,600 |
| 1012 | Джон Парк | Маркетинг | 55,300 |
Прежде чем мы начнем, обратите внимание на две вещи в столбце ID. Нет 1005 и 1011. Эти пробелы не опечатка. Это ловушка в разделе 3.
1. Что на самом деле делает поиск
Перед пояснением: у вас есть лист заказа с идентификаторами сотрудников, а на другом листе - таблица выше. Какие две отдельные вещи должна сделать формула, чтобы поставить отдел каждого сотрудника рядом с его заказами?
Он должен найти строку, а затем вернуть значение. Вот и вся работа. Поиск берет имеющееся у вас значение, идентификатор, например 1008, находит строку в другой таблице, где находится это значение, и возвращает что-то еще из этой же строки, например отдел. Найдите строку, верните значение. Каждая когда-либо написанная формула поиска представляет собой эти два хода.
Это важно, потому что эти два хода терпят неудачу по-разному. Обнаружив неправильную строку, вы получите реальную ценность от не того человека. Возвращение неправильного столбца дает вам реально выглядящее значение неправильного типа. Оба прекрасно выглядят на экране, поэтому при поиске возникают тихие ошибки в электронных таблицах.
Если вы знаете SQL, поиск — это соединение одной рукой. Курс Excel уроки поиска и Руководство по SQL-СОЕДИНЕНИЯ одна и та же идея в двух диалектах.
2. ВПР, аргумент за аргументом
Перед пояснением: VLOOKUP принимает четыре аргумента, и только один из них — это число, которое нужно посчитать вручную. Какой аргумент, по вашему мнению, вызывает больше всего проблем?
Вот формула, которая извлекает отдел Джии Тран из таблицы выше.
=VLOOKUP(1008, A2:D11, 3, FALSE)
Прочитайте слева направо. 1008 это значение, которое нужно найти. А2: Д11 — это вся таблица для поиска, и VLOOKUP будет искать 1008 только в первом столбце этого диапазона. 3 означает вернуть третий столбец диапазона, считая слева, то есть столбец C, Отдел. FALSE означает, что совпадение должно быть точным.
Запустите его, и вы получите Finance. Измените 3 на 4, и вы получите 67 250 — зарплату. Оба варианта верны, и я проверил их по таблице вручную и с помощью компьютера.
Учтенный аргумент, 3, является тем, который вызывает больше всего поломок, а четвертый аргумент находится на втором месте, потому что люди его не учитывают. В следующем разделе показаны оба сбоя.
3. Три причины, по которым VLOOKUP идет не так, как надо
Перед объяснением: слово, за которое следует держаться, молча. Сообщение об ошибке раздражает, но честно. Как бы выглядел сбой поиска, если бы он вообще не выдавал ошибок?
Казалось бы, нормальный ответ. Вот три способа, которыми VLOOKUP создает его.
Ошибка 1: столбцы подсчитываются, поэтому вставка столбца нарушает его.
3 в =VLOOKUP(1008, A2:D11, 3, FALSE) не привязан к столбцу «Отдел». Он прикреплен к позиции три. Теперь коллега вставляет столбец «Электронная почта» между «Имя» и «Отдел», что совершенно нормально. Третья позиция теперь — электронная почта. Формула возвращает gia@co.com где раньше был отдел, без ошибок, и каждая формула, указывающая на эту таблицу, мгновенно смещается.
По крайней мере, его видно, потому что адрес электронной почты в столбце отдела выглядит неправильно. Если бы вставленный столбец содержал другой текст в форме отдела, все бы выглядело не так.
Ошибка 2: по умолчанию используется приблизительное совпадение, поэтому отсутствующий идентификатор возвращает неправильное значение строки.
Это то, что стоит людям реальных денег. Если вы опустите четвертый аргумент, ВПР по умолчанию будет использовать приблизительное совпадение. Приблизительное совпадение означает: если точного значения нет, возьмите наибольшее значение, которое все еще ниже него. В нашей таблице нет сотрудника 1005. Посмотрите, что делает каждая версия.
=VLOOKUP(1005, A2:D11, 3, FALSE) → #N/A
=VLOOKUP(1005, A2:D11, 3) → Operations
Первый говорит правду: числа 1005 не существует. Второй спускается на номер 1004, Дана Рейес, и передает вам свой отдел. Operations, как будто это был ответ. Вместо этого попросите столбец 4, и вы получите ее зарплату в размере 49 800 долларов, прикрепленную к несуществующему сотруднику. Никаких ошибок, никаких предупреждений, чистый, уверенный неправильный номер. Попросите недостающий ID 1011 тем же способом и получите IT, из ряда Айви Нэш.
Скажите своими словами, почему приблизительная версия вернула Шефу, прежде чем читать дальше. Если вы можете объяснить слайд до 1004, вы достаточно хорошо понимаете причину неудачи, чтобы заметить ее в рабочей тетради.
У приблизительного соответствия есть реальная задача: групповой поиск, например, определение того, к какой налоговой группе или уровню комиссионных относится число. Для поиска идентификаторов это генератор неправильных ответов.
Ошибка 3: это может только выглядеть правильно
ВПР выполняет поиск в первом столбце заданного вами диапазона и возвращает столбцы справа от него. Если у вас есть имя и вам нужен идентификатор, а столбец идентификатора находится слева от столбца имени, VLOOKUP не сможет этого сделать. Люди решают эту проблему, переупорядочивая исходные данные или создавая хрупкие вспомогательные столбцы, что означает, что ограничения инструмента теперь меняют форму книги.
4. XLOOKUP и какой сбой устраняет каждый аргумент
Прежде чем объяснить: зная три ошибки, что бы вы изменили в аргументах ВПР, если бы вам разрешили их перепроектировать?
Редизайн Майкрософт назывался XLOOKUP, и он выглядит как список исправлений. Вот тот же поиск.
=XLOOKUP(1008, A2:A11, C2:C11)
Четыре аргумента имеют значение, и каждый из них закрывает дыру.
искомое_значение — это значение, которое нужно найти, такое же, как и раньше: 1008.
искомый_массив — столбец для поиска с прямым именем: A2:A11. Поскольку вы сами даете имя столбцу поиска, он может располагаться в любом месте листа, в том числе справа от ответа. =XLOOKUP("Gia Tran", B2:B11, A2:A11) смотрит влево и возвращает 1008. Это устраняет ошибку 3.
return_array — это столбец, который нужно вернуть, он также имеет прямое имя: C2:C11. В формуле нет учитываемой позиции. Вставьте столько столбцов, сколько захотите, и C2:C11 будет следовать за столбцом «Отдел» везде, где Excel его смещает, поскольку Excel обновляет ссылки и никогда не обновляет введенный номер 3. Это устраняет ошибку 1.
if_not_found — четвертый аргумент, и он необязателен в безопасном направлении. Во-первых, значением по умолчанию XLOOKUP является точное совпадение, поэтому =XLOOKUP(1005, A2:A11, C2:C11) возвращает #N/A вместо того, чтобы скатиться к Дане Рейес. Опасное значение по умолчанию исчезло, что устраняет ошибку 2. Во-вторых, если вам нужно что-то более дружелюбное, чем #Н/Д, вы указываете это в самой формуле:
=XLOOKUP(1005, A2:A11, C2:C11, "Not found") → Not found
С помощью VLOOKUP вы добились такого поведения, обернув все это в другую функцию: =IFERROR(VLOOKUP(...), "Not found"), который также поглощает все остальные ошибки, которые может возникнуть в формуле, включая те, которые вам нужно было увидеть. if_not_found улавливает ровно одно условие — пропущенное значение — и пропускает реальные ошибки.
Представьте себе, что вы запускаете это в справочной таблице, которую вы на самом деле используете: названный столбец идентификатора, названный столбец ответа и сообщение об отсутствующем значении, записанное там, где его сможет увидеть следующий читатель. Этот мысленный пробег стоит большего, чем простое перечитывание этого раздела.
5. Полное до и после
Та же таблица, та же задача: укажите отдел каждого сотрудника рядом с его идентификатором и скажите что-нибудь разумное, когда идентификатора нет в файле.
До
=IFERROR(VLOOKUP(E2, A2:D11, 3, FALSE), "Not found")
Это работает сегодня. Он также имеет три долга по содержанию. 3 ломается в тот день, когда кто-то вставляет столбец. ЛОЖЬ необходимо запоминать каждый раз, потому что ее забывание не приводит к ошибке. А оболочка ЕСЛИОШИБКА с радостью скроет действительно неработающую ссылку за словами «Не найдено».
после
=XLOOKUP(E2, A2:A11, C2:C11, "Not found")
Короче, и все долги пропали. Столбец поиска и столбец возврата имеют имена, совпадение по умолчанию является точным, и только действительно отсутствующий идентификатор выдает сообщение «Не найдено». Для E2 = 1008 обе формулы возвращают Финансы. Для E2 = 1005 оба возвращают значение «Не найдено». Разница в том, что произойдет с каждой формулой в течение следующего года редактирования.
6. Крайние случаи, которые нарушают поиск в реальных книгах
Перед объяснением: поиск возвращает #Н/Д для идентификатора, который вы можете увидеть прямо здесь, в таблице. Что бы вы проверили в первую очередь?
Четыре дела, каждое из которых стоило кому-то дня.
Номер сохраняется в виде текста. Это ответ на предварительный вопрос, и он самый распространенный. Ячейка, показывающая 1008, может содержать текст «1008», часто помеченный маленькой зеленой угловой отметкой. Число 1008 и текст «1008» не совпадают ни по одной функции. Исправьте столбец один раз, используя данные, текст в столбцы, или умножьте идентификаторы на 1, вместо того чтобы исправлять каждую формулу.
Повторяющиеся идентификаторы возвращают только первое совпадение. Обе функции останавливаются при первом попадании сверху вниз. Если 1008 появляется дважды, вы получаете значение верхней строки и не предупреждаете о существовании второй строки. Если дубликаты вообще возможны, сначала посчитайте их. Руководство по COUNTIFS показывает однострочную проверку, и поиск дубликатов в SQL это тот же аудит в базе данных.
Невидимые пробелы разрывают матч. «Гиа Тран» с пробелом в конце имеет другое значение, чем «Гиа Тран». Данные, вставленные из других систем, постоянно содержат их. TRIM по дороге в загадку #Н/Д позже.
В старом Excel нет XLOOKUP. XLOOKUP существует в Excel 2021, Excel 365 и текущей версии Excel в Интернете. В книге, открытой в Excel 2019 или более ранней версии, отображается #NAME? где был каждый XLOOKUP. Если ваш файл должен переместиться в неизвестные версии, это реальная причина написать VLOOKUP, и он принадлежит к ответвлению ниже.
7. Какой использовать: вилку по имени
Вопрос: для поиска, который вы собираетесь написать, вы используете XLOOKUP или VLOOKUP?
Возможные ответы и что каждый из них будет означать. XLOOKUP означает, что формула называет оба столбца, точно соответствует по умолчанию, обрабатывает пропущенные значения в своем четвертом аргументе и может смотреть в любом направлении. VLOOKUP означает, что формула работает где угодно, включая Excel 2019 и более ранние версии, и мгновенно читается двадцатипятилетними пользователями электронных таблиц, ценой подсчитываемого столбца, рискованного значения по умолчанию и поиска только вправо.
Что решает: где будет жить рабочая книга. Если у каждого, кто открывает его, есть Excel 2021, 365 или веб-версия, каждый раз пишите XLOOKUP, и это мой честный вариант по умолчанию. Если файл должен открываться в более старой версии Excel или стандартом вашей команды является VLOOKUP, а книга уже заполнена им, всегда пишите VLOOKUP с введенным значением FALSE и рассматривайте значение FALSE как непередаваемое.
Почему это важно: цена неправильного выбора не зависит от стиля. Выбор XLOOKUP для старой аудитории Excel означает, что ваш лист будет поврежден с #NAME? в каждой ячейке. Выбор VLOOKUP без FALSE означает, что лист прибудет в работу и появится позже. Среди этих двух ошибок видимая поломка — более дешевая ошибка, но вам не обязательно совершать ни одну из них.
И независимо от того, что вы пишете, вы читаете и то, и другое. В старых книгах используется VLOOKUP, и интервьюеры по-прежнему запрашивают его по имени, отчасти для того, чтобы узнать, знаете ли вы, почему здесь указано ЛОЖЬ. Быть человеком, который может объяснить недостающий четвертый аргумент, стоит в этой комнате больше, чем предпочтение новой функции.
Почему это работает
Глубокая разница заключается в ссылке по позиции и ссылке по имени. Напечатанный номер столбца — это факт о текущей форме таблицы, а форма таблицы — это то, что больше всего меняется в электронных таблицах. Ссылка на диапазон, такая как C2:C11, является фактом идентичности, а собственный механизм Excel поддерживает актуальность идентичности при перемещении столбцов. XLOOKUP безопаснее не потому, что он новее, а потому, что каждый хрупкий позиционный факт в VLOOKUP стал именованной ссылкой или явным выбором. Тот же принцип лежит в основе того, почему аналитики SQL избегают SELECT * и почему определенные метрики побеждайте запомненные: вещи, названные явно, сохраняются при изменении, а вещи, подсчитанные неявно, — нет.
Эта страница также продолжает задавать вам вопросы, прежде чем давать ответы, и это намеренно. По данным более чем шестидесяти исследований, предложение учащемуся объяснить что-то самому себе до или во время получения объяснения достоверно улучшает понимание по сравнению с простым чтением (Бисра, Лю, Несбит, Салями & Победить, 2018, Обзор педагогической психологии, 30(3), 703–725). А практика поиска, закрытие страницы и самостоятельное создание синтаксиса создает удержание, чего не дает повторное чтение (Краснее & выбирать карпа, 2006, Психологическая наука, 17(3), 249–255). Шпаргалка внизу предназначена именно для этого.
Использование этого в своей книге
Преобразование каждого VLOOKUP в большой книге за один присест — занятие ужасное, и на полпути вы перестанете доверять своим собственным изменениям. Вместо этого сделайте это по порядку.
- Сначала найдите ВПР без четвертого аргумента. Ctrl+Ф для
VLOOKUP(и прочитайте окончание каждого из них. Те, у которых отсутствует значение FALSE, представляют собой действующие риски приблизительного совпадения, и они являются единственными срочными. - Исправьте это, добавив FALSE, а не переписав. Минимальное возможное изменение, которое легче всего проверить и делается за считанные минуты.
- Напишите XLOOKUP для всего нового с сегодняшнего дня, если он есть в вашем Эксель. Совершенно новая формула не требует дополнительных затрат.
- Преобразовывайте старые формулы только тогда, когда вы их все равно трогаете. Работающий ВПР с FALSE в стабильной таблице никому не повредит.
- После любого преобразования проверьте одну известную строку. Выберите идентификатор, ответ на который вам известен, как и ваш собственный, и подтвердите, что новая формула возвращает его, прежде чем двигаться дальше.
Если у вас есть бумага и пять минут, один дополнительный рисунок зафиксирует идею. Дважды нарисуйте таблицу из четырех столбцов. В первом нарисуйте переходы подсчета VLOOKUP: один, два, три, затем вставьте столбец и посмотрите, куда приземлится счетчик. На втором этапе нарисуйте две стрелки XLOOKUP к именованным столбцам, вставьте тот же столбец и убедитесь, что стрелки все еще держатся. Если на вашем рисунке показано, почему один ломается, а другой нет, значит, он принадлежит вам.
Все на одном экране
Это лист поиска. Закройте правую колонку, проработайте левую и произнесите каждый ответ вслух, прежде чем проверять его.
| концепция | Ответ |
|---|---|
| Что делает поиск | Находит строку в другой таблице по значению и возвращает одно значение из этой строки. |
| Синтаксис ВПР | =VLOOKUP(value, table, column_number, FALSE) |
| Ошибка 1 | Номер столбца является счетной позицией. Вставка столбца автоматически сдвигает его. |
| Ошибка 2 | Отсутствие четвертого аргумента означает приблизительное совпадение. Отсутствующий идентификатор возвращает значение неправильной строки без ошибок. |
| Ошибка 3 | ВПР ищет только первый столбец и возвращает только столбцы справа от него. |
| Синтаксис XLOOKUP | =XLOOKUP(value, lookup_array, return_array, if_not_found) |
| Что убирает неудачу 1 | return_array: именованный диапазон, который Excel указывает на правый столбец. |
| Что убирает неудачу 2 | Точное совпадение используется по умолчанию в XLOOKUP. Нет аргументов, чтобы забыть. |
| Что убирает неудачу 3 | lookup_array — это любой столбец, поэтому ответ может находиться с любой стороны. |
if_not_found | Заменяет оболочку ЕСЛИОШИБКА и перехватывает только пропущенное значение, а не все ошибки. |
| Реальная работа приблизительного матча | Бандажный поиск: налоговые группы, уровни комиссий. Никогда не проводите поиск по идентификатору. |
| Дубликаты | Обе функции молча возвращают первое совпадение сверху вниз. Сначала посчитайте. |
| #Н/Д для видимого значения | Сначала проверьте число, хранящееся в виде текста, а затем конечные пробелы. |
| #ИМЯ? повсюду | Файл был открыт в Excel 2019 или более ранней версии, в которой нет XLOOKUP. |
| Вилка | Современная аудитория Excel: XLOOKUP. Неизвестные или старые версии: VLOOKUP с значением FALSE, всегда вводится. |
Еще одна мысль, и мне бы искренне хотелось услышать ответы других людей. Моей худшей ошибкой поиска было приблизительное совпадение, при котором на присвоение номеров ушедшего сотрудника тому, кто сидел над пробелом, ушли недели. Как долго молчащая ошибка поиска существовала в одной из ваших книг, прежде чем кто-то ее обнаружил, и что в конце концов выдало ее?
Ссылки
- Бисра К., Лю К., Несбит Дж. К., Салими Ф. и Винн П. Х. (2018). Побуждение к самообъяснению: метаанализ. Обзор педагогической психологии, 30(3), 703–725.
- Рёдигер, Х.Л., и Карпике, Дж.Д. (2006). Улучшенное обучение с помощью тестов: прохождение тестов на память улучшает долгосрочное запоминание. Психологическая наука, 17(3), 249–255.
Excel для аналитиков составляет 378 страниц, VLOOKUP, XLOOKUP и INDEX MATCH сравниваются аргумент за аргументом, включая случаи сбоя каждого из них.
Excel для аналитиков, 19 долларов США →VLOOKUP и XLOOKUP — это уроки модуля 1 в Курс Excel: вы пишете формулы для реальных таблиц, проверяете свои ответы и детализируете синтаксис до тех пор, пока ЛОЖЬ не станет автоматическим. Рядом находятся флеш-карты и пробный экзамен. Ничего устанавливать, учетная запись не требуется.
Откройте набор Excel →