Самый быстрый ВПР
Если в ваших таблицах всего лишь несколько десятков строк, то, скорее всего, эта статья не будет для вас актуальной. На таких небольших объемах данных любой способ будет работать достаточно шустро, чтобы вы этого не замечали. Если же число строк в ваших списках измеряется тысячами, да и самих таблиц не одна-две, то время мучительного ожидания на пересчете формул в Excel может доходить до нескольких минут.
В этом случае, правильный выбор функции, применяемой для связывания таблиц, играет решающую роль — разница в производительности между ними, как мы увидим далее, может составлять более 20 раз!
Когда я писал свою первую книжку пять лет назад, то уже делал сравнительный скоростной тест различных способов поиска и подстановки данных функциями ВПР, ИНДЕКС+ПОИСКПОЗ, СУММЕСЛИ и др. С тех пор сменилось три версии Office, появились надстройки Power Query и Power Pivot, кардинально изменившие весь процесс работы с данными. А в прошлом году ещё и обновился вычислительный движок Excel, получив поддержку динамических массивов и новые функции ПРОСМОТРХ, ФИЛЬТР и т.п.
Так что пришла пора снова взяться за секундомер и выяснить — кто же самый быстрый. Ну и, заодно, проверить — какие способы поиска и подстановки данных в Excel вы знаете
Подопытный кролик
Тест будем проводить на следующем примере:
Это книга Excel с одним листом, где расположены две таблицы: отгрузки (500 000 строк) и прайс-лист (600 строк). Наша задача — подставить цены из прайс-листа в таблицу отгрузок. Для каждого способа будем вводить формулу в ячейку С2 и копировать вниз на весь столбец, замеряя время, которое потребуется Excel, чтобы просчитать весь столбец из полумиллиона ячеек. Полученные значения, безусловно, зависят от множества факторов (поколение процессора, объем оперативной памяти, текущая загрузка системы, версия Office и т.д.), но нам важны не конкретные цифры, а, скорее, их сравнение друг с другом. Важно понимать прожорливость каждого способа и их ограничения.
Способ 1. ВПР
Сначала — классика Легендарная функция вертикального просмотра — ВПР (VLOOKUP), которая приходит в голову первой в подобных ситуациях:
Здесь участвуют следующие аргументы:
- B2 — искомое значение, т.е. название товара, который мы хотим найти в прайс-листе
- $G$2:$H$600 — закреплённая знаками доллара (чтобы не сползала при копировании формулы вниз) абсолютная ссылка на прайс
- 2 — номер столбца в прайс-листе, откуда мы хотим взять цену
- 0 или ЛОЖЬ — переключение в режим поиска точного соответствия, когда любое некорректное название товара (например, ФОНЕРА) в столбце B в таблице отгрузок приведёт к появлению ошибки #Н/Д как результата работы функции.
Время вычисления = 4,3 сек.
Способ 2. ВПР с выделением столбцов целиком
Многие пользователи, применяя ВПР, во втором аргументе этой функции, где нужно задать поисковую таблицу (прайс), выделяют не ограниченный диапазон ($G$2:$H$600), а сразу столбцы G:H целиком. Это проще, быстрее, позволяет не думать про F4 и то, что завтра прайс-лист может быть на несколько строк больше. Формула в этом случае выглядит тоже компактнее:
В старых версиях Excel такое выделение не сильно влияло на скорость вычислений, но сейчас (неожиданно для меня, признаюсь) результат получился в разы хуже предыдущего.
Время вычисления = 14,5 сек.
Однако.
Способ 3. ИНДЕКС и ПОИСКПОЗ
Следующей после ВПР ступенью эволюции для многих пользователей Microsoft Excel обычно является переход на использование связки функций ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH). Выглядит эта формула так:
Здесь:
Функция ИНДЕКС извлекает из заданного в первом аргументе диапазона (столбца $H$2:$H$600 с ценами в прайс-листе) содержимое ячейки с заданным номером. А номер этот, в свою очередь, определяется функцией ПОИСКПОЗ, у которой три аргумента:
- Что нужно найти — название товара из B2
- Где мы это ищем — столбец с названиями товаров в прайсе ($G$2:$G$600)
- Режим поиска: 0 — точный, 1 или -1 — приблизительный с округлением в меньшую или большую сторону, соответственно.
Формула выходит чуть сложнее, но, при этом имеет несколько ощутимых преимуществ перед классической ВПР, а именно:
- Не нужно отсчитывать номер столбца (как в третьем аргументе ВПР).
- Можно извлекать данные, которые находятся левее столбца, где просходит поиск.
По скорости, однако же, этот способ проигрывает ВПР почти в два раза:
Время вычисления = 7,8 сек.
Если же, вдобавок, полениться и выделять не ограниченные диапазоны, а столбцы целиком:
… то результат получается совсем печальный:
Время вычисления = 28,5 сек.
28 секунд, Карл! В 6 раз медленнее ВПР!
Способ 4. СУММЕСЛИ
Если нужно найти не текстовые, а именно числовые данные (как в нашем случае — цену), то вместо ВПР вполне можно использовать функцию СУММЕСЛИ (SUMIF). Изначально она задумывалась как инструмент для выборочного суммирования данных по условию (найди и сложи мне все продажи кабелей, например), но можно заставить её искать нужный нам товар и в прайс-листе. Если грузы в нём не повторяются, то суммировать будет не с чем и эта функция просто выведет искомое значение:
Здесь:
- Первый аргумент СУММЕСЛИ — это диапазон проверяемых ячеек, т.е. названия товаров в прайсе ($G$2:$G$600).
- Второй аргумент (B2) — что мы ищем.
- Третий аргумент — диапазон ячеек с ценами $H$2:$H$600, числа из которых мы хотим просуммировать, если в соседних ячейках проверяемого диапазона есть искомое значение.
Очевидным минусом такого подхода является то, что он работает только с числами. Также этот способ не удобен, если прайс-лист находится в отдельном файле — придется всё время держать его открытым, т.к. функция СУММЕСЛИ не умеет брать данные из закрытых книг, в отличие от ВПР, для которой это не проблема.
В плюсы же можно записать удобство при поиске сразу по нескольким столбцам — для этого идеально подходит более продвинутая версия этой функции — СУММЕСЛИМН (SUMIFS). Скорость вычислений же, при этом, весьма посредственная:
Время вычисления = 12,8 сек.
При выделении столбцов целиком, т.е. использовании формулы вида =СУММЕСЛИ(G:G; B2; H:H) всё ещё хуже:
Время вычисления = 41,7 сек.
Это самый плохой результат в нашем тесте.
Способ 5. СУММПРОИЗВ
Этот подход сейчас встречается не часто, но всё ещё достаточно регулярно. Обычно так любят извращаться пользователи старой школы, ещё хорошо помнящие те времена, когда в Excel было всего 255 столбцов и 56 цветов
Суть этого метода заключается в использовании функции СУММПРОИЗВ (SUMPRODUCT), изначально предназначенной для поэлементного перемножения нескольких диапазонов с последующим суммированием полученных произведений. В нашем случае, вместо одного из массивов будет выступать условие, а вторым будут цены:
Выражение ($G$2:$G$600=B2), по сути, проверяет каждое название груза в прайс-листе на предмет соответствия искомому значению (ФАНЕРА ПР). Результатом каждого сравнения будет логическое значение ИСТИНА (TRUE) или ЛОЖЬ (FALSE), что в Excel интерпретируется как 1 и 0, соответственно. Последующее умножение этих нулей и единиц на цены оставит в живых цену только того товара, который нам, в данном случае, и нужен.
Эта формула является, по сути, формулой массива, но не требует нажатия обычного для них сочетания клавиш Ctrl+Shift+Enter, т.к. функция СУММПРОИЗВ поддерживает массивы уже сама по себе. Возможно, по этой же причине (формулы массива всегда медленнее, чем обычные) такой скорость пересчёта такой формулы — не очень:
Время вычисления = 11,8 сек.
К плюсам же такого подхода можно отнести:
- Совместимость с любыми, самыми древними версиями Excel.
- Возможность задавать сложные условия (и несколько)
- Способность этой формулы работать с данными из закрытых файлов, если добавить перед ней двойное бинарное отрицание (два подряд знака «минус»). СУММЕСЛИМН таким похвастаться не может.
Способ 6. ПРОСМОТР
Ещё один относительно экзотический способ поиска и подстановки данных, наравне с ВПР — это использование функции ПРОСМОТР (LOOKUP). Только не перепутайте её с новой, буквально, на днях появившейся функцией ПРОСМОТРХ (XLOOKUP) — про неё мы поговорим дальше особо. Функция ПРОСМОТР существовала в Excel начиная с самых ранних версий и тоже вполне может решить нашу задачу:
Здесь:
- B2 — название груза, которое мы ищем
- $G$2:$G$600 — одномерный диапазон-вектор (столбец или строка), где мы ищем совпадение
- $H$2:$H$600 — такого же размера диапазон, откуда нужно вернуть найденный результат (цену)
На первый взгляд всё выглядит очень удобно и логично, но всю картину портят два неочевидных момента:
- Эта функция требует обязательной сортировки прайс-листа по возрастанию (алфавиту) и без этого не работает.
- Если в таблице отгрузок искомое значение будет написано с опечаткой (например, АГЕДОЛ вместо АГИДОЛ), то функция ПРОСМОТР выдаст не ошибку #Н/Д, а цену для ближайшего предыдущего товара:
При работе с неидеальными данными в реальном мире это гарантированно создаст проблемы, как вы понимаете.
Скорость же вычислений у функции ПРОСМОТР (LOOKUP) весьма приличная:
Время вычисления = 7,6 сек.
Способ 7. Новая функция ПРОСМОТРХ
Эта функция пришла с одним из недавних обновлений пока только пользователям Office 365 и пока отсутствует во всех остальных версиях (Excel 2010, 2013, 2016, 2019). По сравнению с классической ВПР у этой функции есть масса преимуществ (упрощенный синтаксис, возможность искать не только сверху-вниз, возможность сразу задать значение вместо #Н/Д и т.д.) Формула для решения нашей задачи будет выглядеть в этом случае так:
Если не брать в расчёт необязательные 4,5,6 аргументы, то синтаксис этой функции полностью совпадает с её предшественником — функцией ПРОСМОТР (LOOKUP). Скорость вычислений при тестировании на наши 500000 строк тоже оказалась аналогичной:
Время вычисления = 7,6 сек.
Почти в два раза медленнее, чем у ВПР, вместо которой Microsoft предлагает теперь использовать ПРОСМОТРХ. Жаль.
И, опять же, если полениться и выделить диапазоны в прайс-листе целыми столбцами:
… то скорость падает до совершенно неприличных уже значений:
Время вычисления = 28,3 сек.
А если на динамических массивах?
Прошлогоднее (осень 2019) обновление вычислительного движка Microsoft Excel добавило ему поддержку динамических массивов (Dynamic Arrays), о которых я уже писал. Это принципиально новый подход к работе с данными, который можно использовать почти с любыми классическими функциями Excel. На примере ВПР это будет выглядеть так:
Разница с классическим вариантом в том, что первым аргументом ВПР здесь выступает не одно искомое значение (а формулу потом нужно копировать вниз на остальные строки), а сразу весь массив из полумиллиона грузов B2:B500000, цены для которых мы хотим найти. Формула при этом сама распространяется вниз, занимая требуемое количество ячеек.
Скорость пересчета в таком варианте меня, откровенно говоря, ошеломила — пауза между нажатием на Enter после ввода формулы и получением результатов почти отсутствовала.
Время вычисления = 1 сек.
Что интересно, и новая ПРОСМОТРХ, и старая ПРОСМОТР, и связка ИНДЕКС+ПОИСКПОЗ в таком режиме тоже были очень быстрыми — время вычислений не больше 1 секунды! Фантастика.
А вот олдскульные подходы на основе СУММПРОИЗВ и СУММЕСЛИ(МН) с динамическими массивами работать отказались
Что с умными таблицами?
Обрадовавшись фантастическим результатам, полученным на динамических массивах, я решил вдогон попробовать протестировать разницу в скорости при работе с обычными и «умными» таблицами. Я имею ввиду те самые «красивые таблицы», в которые вы можете преобразовать ваш диапазон с помощью команды Форматировать как таблицу на вкладке Главная (Home — Format as Table) или с помощью сочетания клавиш Ctrl+T.
Если предварительно превратить наши отгрузки и прайс в «умные» (по умолчанию они получат имена Таблица1 и Таблица2, соответственно), то формула с той же ВПР будет выглядеть как:
Здесь:
- [@Груз] — ссылка на ячейку B2, означающая, в данном случае, что нужно взять значение из той же строки из столбца Груз текущей умной таблицы.
- Таблица2 — ссылка на прайс-лист
Жирным плюсом такого подхода будет возможность легко добавлять данные в наши таблицы в будущем. При дописывании новых строк в отгрузки или к прайс-листу, наши «умные» таблицы будут растягиваться автоматически.
Скорость же, как выяснилось, тоже вырастает очень значительно и примерно равна скорости работы на динамических массивах:
Время вычисления = 1 сек.
У меня есть подозрение, что дело тут не в самих «умных» таблицах, а всё в том же обновлении вычислительного движка, т.к. на старых версиях Excel такого прироста в скорости на умных таблицах я не помню.
Бонус. Запрос Power Query
Замерять, так замерять! Давайте, для полноты картины, сравним наши перечисленные способы еще и с запросом Power Query, который тоже может решить нашу задачу. Кто-то скажет, что некорректно сравнивать пересчёт формул с механизмом обновления запроса, но мне, откровенно говоря, просто самому было интересно — кто быстрее?
Итак:
- Превращаем обе наши таблицы в «умные» с помощью команды Форматировать как таблицу на вкладке Главная (Home — Format as Table) или с помощью сочетания клавиш Ctrl+T.
- По очереди загружаем таблицы в Power Query с помощью команды Данные — Из таблицы / диапазона (Data — From Table/Range).
- После загрузки в Power Query возвращаемся обратно в Excel, оставляя загруженные данные как подключение. Для этого в окне Power Query выбираем Главная — Закрыть и загрузить — Закрыть и загрузить в… — Только создать подключение (Home — Close&Load — Close&Load to… — Only create connection).
- После того, как обе исходные таблицы будут загружены как подключения, создадим ещё один, третий запрос, который будет объединять их между собой, подставляя цены из прайса в отгрузки. Для этого на вкладке Данные выберем Получить данные / Создать запрос — Объединить запросы — Объединить (Get Data / New Query — Merge queries — Merge):
- В открывшемся окне выберем исходные таблицы в выпадающих списках и выделим столбцы, по которым произойдет связывание:
- После нажатия на ОК мы вернемся в окно Power Query, где увидим нашу таблицу отгрузок с добавленным к ней столбцом, где в каждой ячейке будет лежать фрагмент прайс-листа, соответствующий этому грузу. Развернем вложенные таблицы с помощью кнопки с двойными стрелками в шапке столбца, выбрав нужные нам данные (цены):
- Останется выгрузить готовую таблицу обратно на лист с помощью уже знакомой команды Главная — Закрыть и загрузить (Home — Close&Load).
В отличие от формул, запросы Power Query не обновляются автоматически «на лету», а требуют щелчка правой кнопкой мыши по таблице (или запросу в правой панели) и выбору команды Обновить (Refresh). Также можно воспользоваться командой Обновить все (Refresh All) на вкладке Данные (Data).
Время обновления = 8,2 сек.
Итоговая таблица и выводы
Если вы честно дочитали до этого места, то какие-то выводы, наверное, уже сделали самостоятельно. Если же пропустили все детали и сразу перешли к итогам, то вот вам общая результирующая таблица по скорости всех методов:
Само-собой, у каждого из нас свои предпочтения, задачи и тараканы, но для себя я сформулировал выводы после этого тестирования так:
- ВПР всё ещё главная рабочая лошадка. После прошлогодних обновлений, ускоряющих ВПР, и осенних обновлений вычислительного движка, эта функция заиграла новыми красками и даёт жару по-полной.
- Не нужно лениться и выделять столбцы целиком — для всех способов без исключения это ухудшает результаты почти в 3 раза.
- Экзотические способы из прошлого типа СУММПРОИЗВ и СУММЕСЛИ — в топку. Они работают очень медленно и, вдобавок, не поддерживают динамические массивы.
- Динамические массивы и умные таблицы — это будущее.
К сожалению, у меня не было возможностей полноценно протестировать эти методы на старых версиях Excel и на Excel for Mac (запускать эмуляцию Office на виртуальной машине и тестировать скорость — не есть правильно). Буду благодарен, если вы сможете найти время, чтобы прогнать эти способы на своих ПК и версиях и поделитесь результатами и своими мыслями в комментариях, чтобы вместе мы смогли составить полную картину.
Ссылки по теме
- Как использовать функцию ВПР для подстановки значений в Excel
- Функция ПРОСМОТРХ как наследник ВПР
- 5 вариантов использования функции ИНДЕКС
-
- Как пользоваться ВПР в Excel
- Особенности работы функции ВПР
- Как использовать формулу ВПР в Excel для сравнения двух таблиц
- Почему не работает ВПР в Excel
- Когда Интервальный просмотр может быть = 1
Функция ВПР в Excel (в английской версии VLOOKUP) используется для подтягивания значений в таблицу из другой таблицы при условии совпадения критерия поиска. Расшифровывается ВПР как “вертикальный поиск результата”. В этой статье разберемся, как сделать ВПР в Excel, ниже будет понятная инструкция.
ВПР ищет первое совпадение по критерию в левом столбца указанной таблицы и подтягивает значение из указанного столбца этой таблицы.
Как сделать ВПР в Excel понятная инструкция
Чтобы понять, как пользоваться функцией ВПР в Excel, разберем ее синтаксис:
=ВПР(искомое значение; таблица; номер столбца; [интервальный просмотр])
Искомое значение — значение или ссылка на ячейку, по которой будем искать значения в другой таблице. Это критерий поиска.
Таблица — ссылка на таблицу, в которой будет искать.
Номер столбца — порядковый номер столбца относительно самого левого столбца из выделенного диапазона поиска.
Интервальный просмотр — указывается 0 (точный поиск) или 1 (приблизительный поиск)
Рассмотрим использование ВПР на примере:
Есть таблица с количеством гостей в отеле, необходимо понять, есть ли зависимость количества проживающих от того, насколько тепло в этом городе. Для этого нужно подтянуть значения температуры воздуха из таблицы справочника.
В качестве критерия будет использоваться название месяца.
Добавим в первую таблицу столбец Температура и напишем следующую формулу:
В примере формула ВПР ищет значение Январь из первой таблице в крайнем левом столбце второй таблицы. И подтягивает совпадающее значение из указанного столбца (в данном случае, из второго столбца).
Аргумент Интервальный просмотр задаем 0, чтобы функция искала точное совпадение.
Запомним, что в абсолютном большинстве случаем Интервальный просмотр ставим = 0.
Кстати, если не указать интервальный просмотр совсем, то формула не выдаст ошибку, т.к. этот аргумент необязательный. Но результат будет неожиданным, поскольку в этом случае ВПР считает не указанный Интервальный просмотр равным 1 (а это приблизительный поиск).
Не забываем добавить абсолютные ссылки (значки доллара $) к диапазону, иначе диапазон “съедет” при копировании формулы.
Итак, мы получили в нашу таблицу значение из таблицы-справочника — подтянули по критерию названия месяца. Осталось только протянуть или скопировать формулу во все ячейки этого столбца.
Особенности работы функции ВПР
Несмотря на простоту использования формулы ВПР в Excel, у нее есть ряд особенностей, которые нужно учитывать в работе.
-
Функция ВПР ищет совпадение строго в крайнем левом столбце выделенной таблицы.
Ключевые слова здесь — “выделенной” таблицы. Чтобы понять, что это значит, добавим к таблице-справочнику еще один столбец слева (Год).
Чтобы сделать такой же ВПР, как в предыдущем примере (по критерию Месяц), нужно выделять столбцы H:I, хотя таблица содержит столбцы G:I. Иначе Excel будет искать в крайнем левом столбце, в котором содержится не месяц, а год.
Вывод: аргумент Таблица в данном случае — это выделенный диапазон ячеек, а не то, что мы видим “глазами” и считаем таблицей.
-
ВПР в Excel ищет первое совпадение с указанным критерием.
Для примера добавим еще одну строку в таблицу-справочник.
Теперь в таблице содержится два значения температуры для месяца Январь.
Но при этом, даже если мы изменим интервал таблицы для поиска, затянув в нее новую строку Январь 2023, то значение, которое подтянула ВПР, не изменится.
ВПР взяло первое совпадение.
-
В качестве критерия поиска можно использовать не только ссылку на ячейку (как в предыдущих примерах), но и ввести значение напрямую в формулу. Это не очень удобно, но возможно.
Текстовые значения необходимо вводить в кавычках, числовые — просто число.
Пример функции ВПР с текстовым критерием поиска
Пример функции ВПР с числовым критерием поиска
Как использовать формулу ВПР в Excel для сравнения двух таблиц
Функцию ВПР часто используют для сравнения двух таблиц.
-
Сверка двух таблиц по пропускам значений
Для примера удалим из первой таблицы две строки. Наша задача — понять, каких месяцев не хватает в первой таблице.
Для этого во вторую таблицу при помощи функции ВПР подтянем значения из первой таблицы Excel.
Значения можно подтягивать любые, например, количество проживающих. В данном случае сами значения не важны, важны пропуски.
Значения по месяцам Июнь и Октябрь подтянулись с ошибкой #Н/Д (нет данных) — это значит, что в исходной таблице эти месяцы пропущены.
-
Сверка числовых значений
Предположим, у нас есть статистика по количеству проживающих в другом отеле сети по месяцам и годам. Сравним с первым отелем. Для этого добавим новый столбец, и в нем сделаем ВПР по критерию месяца.
А теперь обратите внимание, что месяц Январь повторяется в обоих таблицах (разный год). Но для второго значения Январь в первую таблицу подтянулись цифры из первого значения Январь второй таблицы.
Это произошло потому, что ВПР в Excel ищет первое совпадение.
Выходы из ситуации:
- убедиться, что значения в столбце поиски во второй таблице уникальные
- использовать функцию СУММЕСЛИ или СУММЕСЛИМН
- использовать ВПР по нескольким критериям
Почему не работает ВПР в Excel
То, что ВПР не работает, можно понять по появлению ошибки #Н/Д.
Не работает ВПР — значит, что функция не находит значение. Причины:
- Ошибка в написании критерия. Часто в текст закрадываются лишние пробелы или латинские буквы вместо кириллицы, и тогда появится ошибка.
В данном примере в конце слова Январь стоит невидимый пробел. А поскольку функция ВПР в Excel ищет точное совпадение Январь + пробел в конце и просто Январь — это два разных значения.
- Съехал или “не дотянут” диапазон таблицы для поиска.
В данном случае значение Январь не попало в диапазон поиска, поэтому появилась ошибка #Н/Д.
Также часто при появлении новых строк в таблице-источнике забывают исправлять диапазон в формуле ВПР (он как бы не дотягивается до конца таблицы), тогда тоже будет ошибка.
Когда Интервальный просмотр может быть = 1
Аргумент Интервальный просмотр в ВПР может принимать только два значения — 0 или 1 (если его не указать, то по умолчанию считается 1).
Во всех предыдущих примерах мы использовали интервальный просмотр = 0. Это подходит для большинства ситуаций на практике.
Но иногда необходимо использовать интервальный просмотр = 1. Как правило, он используется для числовых критериев, чтобы подтянуть значение из определенного диапазона критериев.
Более подробно об этом — в статье
В этой статье мы узнали, как сделать ВПР в Excel, надеюсь, это была понятная инструкция.
Сообщество Excel Analytics | обучение Excel
Канал на Яндекс.Дзен
Вам может быть интересно:
- Управленческий учет
- Внедрение CRM
- Разработка чат-ботов
- Создание лендингов
- Образовательная программа
Ваша задача — скачать файл с первым заданием и повторять действия, написанные ниже.
На протяжении выполнения, вы освоите теоретические приемы и сможете самостоятельно решить домашнее задание (кейс) для закрепления материала.
Для самопроверки вы сможете скачать
решение.
Удачи!
При работе с таблицами, содержащими взаимосвязанные элементы, эта функция полезна в 90% случаев.
Задача кейса — работа с массивами данных.
Рассмотрим ситуацию оценки работы отдела технической поддержки клиентов: группа операторов принимают заявки по телефону. По завершению разговора клиент ставит оценку оператору.
Задача: Необходимо дополнить таблицу «Статистика по заявкам» данными об ответственных и оценке, имея следующие данные:
1. Статистика по заявкам
2. Заявки
3. Оценки
Таблица «Заявки» содержит информацию о заявках и ответственных за заявки. В таблице со статистикой так же есть поле «id заявки». Значит нам нужно найти «id заявки» в таблице «Заявки» и взять значение из соседней ячейки.
В этом нам поможет функция «ВПР».
Функция, сопоставляя данные двух столбцов разных таблиц, возвращает нам значение из заданного столбца. Используется для объединения массивов.
Значение, которое нужно найти в таблице из которой возвращаем данные
Указывается диапазон таблицы в которой ищем значения. Искомое значение должно быть первым столбцом выделенного диапазона
Порядковый номер столбца с данными которые ищем. Отсчет ведется от границ диапазона, показанного в поле «Таблица»
Логическое значение, определяющее точное или приближенное значение.Всегда выбираем «0» по умолчанию
Значение, которое нужно найти в таблице из которой возвращаем данные
Указывается диапазон таблицы в которой ищем значения. Искомое значение должно быть первым столбцом выделенного диапазона
Порядковый номер столбца с данными которые ищем. Отсчет ведется от границ диапазона, показанного в поле «Таблица»
Логическое значение, определяющее точное или приближенное значение.Всегда выбираем «0» по умолчанию
Ставим курсор на ячейку «F2» таблицы «Статистика по заявкам». Открываем Мастер функций и находим в категории «Ссылки и массивы» функцию «ВПР».
3.1. В поле «Искомое значение» вводим полностью столбец «А» листа «Заявки». Для этого достаточно нажать на заголовок столбца
3.2. В поле «Таблица» вводим столбцы «А» и «В» целиком
3.3. В поле «Номер столбца» вводим цифру «2». Это порядковой номер столбца из таблицы «Заявки», в котором содержится информация об ответственных.
3.4. В поле «Интервальный просмотр» ставим значение «0»
Нажимаем «ОК» и протягиваем формулу до конца таблицы
Заполнить самостоятельно столбец «Оценка» — в этом случае необходимо сопоставлять данные по полю «Телефон клиента»
*Для самопроверки можете загрузить файл с решенный кейсом
© 2016-2023 HelpExcel.pro Используя наш сайт, вы принимаете Политику конфиденциальности персональных данных.
Использование материалов сайта возможно только с предварительного согласия правообладателей и обязательным указанием ссылки на helpexcel.pro
#Руководства
- 6 апр 2022
-
0
Как перенести данные из одной таблицы в другую, если строки идут не по порядку? Разбираемся на примере каталога авто — переносим цены.
Иллюстрация: Meery Mary для Skillbox Media
Рассказывает просто о сложных вещах из мира бизнеса и управления. До редактуры — пять лет в банке и три — в оценке имущества. Разбирается в Excel, финансах и корпоративной жизни.
ВПР (Vlookup, или вертикальный просмотр) — поисковая функция в Excel. Она находит значения в одной таблице и переносит их в другую. Функция ВПР нужна, чтобы работать с большими объёмами данных — не нужно самостоятельно сопоставлять и переносить сотни наименований, функция делает это автоматически.
Разберёмся, зачем нужна функция и как её использовать. В конце материала расскажем, что делать, если нужен поиск данных сразу по двум параметрам.
Представьте, что вы продаёте автомобили. У вас есть каталог с характеристиками авто и их стоимостью. Также у вас есть таблица с данными клиентов, которые забронировали эти автомобили.
Вам нужно сообщить покупателям, сколько стоят их авто. Перед тем как обзванивать клиентов, нужно объединить данные: добавить во вторую таблицу колонку с ценами из первой.
Просто скопировать и вставить эту колонку не получится. Искать каждое авто вручную и переносить цены — долго.
ВПР автоматически сопоставит названия автомобилей в двух таблицах. Функция скопирует цены из каталога в список забронированных машин. Так напротив каждого клиента будет стоять не только марка автомобиля, но и цена.
Ниже пошагово и со скриншотами разберёмся, как сделать ВПР для этих двух таблиц с данными.
Важно!
ВПР может не работать, если таблицы расположены в разных файлах. Тогда лучше собрать данные в одном файле, на разных листах.
ВПР работает по следующему принципу. Функция просматривает выбранный диапазон первой таблицы вертикально сверху вниз до искомого значения‑идентификатора. Когда видит его, забирает значение напротив него из нужного столбца и копирует во вторую таблицу.
Подробнее о том, как определить все эти значения, поговорим ниже. А пока разберёмся на примере с продажей авто, где найти функцию ВПР в Excel и с чего начать работу.
Сначала нужно построить функцию. Для этого выделяем ячейку, куда функция перенесёт найденное значение.
В нашем случае нужно перенести цены на авто из каталога в список клиентов. Для этого добавим пустой столбец «Цена, руб.» в таблицу с клиентами и выберем ячейку напротив первого клиента.
Дальше открываем окно для построения функции ВПР. Есть два способа сделать это. Первый — перейти во вкладку «Формулы» и нажать на «Вставить функцию».
Второй способ — нажать на «fx» в строке ссылок на любой вкладке таблицы.
Справа появляется окно «Построитель формул». В нём через поисковик находим функцию ВПР и нажимаем «Вставить функцию».
Появляется окно для ввода аргументов функции. Как их заполнять — разбираемся ниже.
Последовательно разберём каждый аргумент: искомое значение, таблица, номер столбца, интервальный просмотр.
Искомое значение — название ячейки с одинаковыми данными для обеих таблиц, по которым функция будет искать данные для переноса. В нашем примере это модель авто. Функция найдёт модель в таблице с каталогом авто, возьмёт оттуда стоимость и перенесёт в таблицу с клиентами.
Порядок действий, чтобы указать значение, выглядит так:
- Ставим курсор в окно «Искомое значение» в построителе формул.
- Выбираем первое значение столбца «Марка, модель» в таблице с клиентами. Это ячейка A2.
Выбранное значение переносится в построитель формул и одновременно появляется в формуле строки ссылок: fx=ВПР(A2).
Таблица — это диапазон ячеек, из которого функция будет брать данные для искомого значения. В этот диапазон должны войти столбцы с искомым значением и со значением, которое нужно перенести в первую таблицу.
В нашем случае нужно перенести цены автомобилей. Поэтому в диапазон обязательно нужно включить столбцы «Марка, модель» (искомое значение) и «Цена, руб.» (переносимое значение).
Важно!
Для правильной работы ВПР искомое значение всегда должно находиться в первом столбце диапазона. У нас искомое значение находится в ячейке A2, поэтому диапазон должен начинаться с A.
Порядок действий для указания диапазона:
- Ставим курсор в окно «Таблица» в построителе формул.
- Переходим в таблицу «Каталог авто».
- Выбираем диапазон, в который попадают столбцы «Марка, модель» и «Цена, руб.». Это A2:E19.
- Закрепляем выбранный диапазон. На Windows для этого выбираем значение диапазона в строке ссылок и нажимаем клавишу F4, на macOS — выбираем значение диапазона в строке ссылок и нажимаем клавиши Cmd + T. Закрепить диапазон нужно, чтобы можно было протянуть функцию вниз и она сработала корректно во всех остальных строках.
Выбранный диапазон переносится в построитель формул и одновременно появляется в формуле строки ссылок: fx=ВПР(A2;’каталог авто’!$A$2:$E$19).
Номер столбца — порядковый номер столбца в первой таблице, в котором находится переносимое значение. Считается по принципу: номер 1 — самый левый столбец, 2 — столбец правее и так далее.
В нашем случае значение для переноса — цена — находится в пятом столбце слева.
Чтобы задать номер, установите курсор в окно «Номер столбца» в построителе формул и введите значение. В нашем примере это 5. Это значение появится в формуле в строке ссылок: fx=ВПР(A2;’каталог авто’!$A$2:$E$19;5).
Интервальный просмотр — условное значение, которое настроит, насколько точно сработает функция:
- Если нужно точное совпадение при поиске ВПР, вводим 0.
- Если нужно приближённое соответствие при поиске ВПР, вводим 1.
В нашем случае нужно, чтобы функция подтянула точные значения цен авто, поэтому нам подходит первый вариант.
Ставим курсор в окно «Интервальный просмотр» в построителе формул и вводим значение: 0. Одновременно это значение появляется в формуле строки ссылок: fx=ВПР(A2;’каталог авто’!$A$2:$E$19;5;0). Это окончательный вид функции.
Чтобы получить результат функции, нажимаем кнопку «Готово» в построителе формул. В выбранной ячейке появляется нужное значение. В нашем случае — цена первой модели авто.
Дальше нужно протянуть это значение вниз до конца таблицы, чтобы функция нашла и перенесла цены всех оставшихся моделей. Для этого мы закрепляли интервал, когда заполняли аргументы.
Получилась таблица с ценами — можно звонить клиентам и сообщать о стоимости авто. Данные перенесены без ошибок, а потратили мы на это несколько минут.
В нашем примере модели автомобилей в таблицах не повторяются, поэтому мы ищем только по одному критерию — названию модели. Но бывают случаи, когда такой поиск не подходит.
Например, у нас несколько одинаковых моделей с разным цветом.
И по традиции есть таблица с клиентами, которые эти модели забронировали.
Если идти по классическому пути ВПР, получится такая функция: fx=ВПР(A29;’каталог авто’!$A$29:$E$35;5;0). В таком виде ВПР найдёт первую совпавшую модель и подтянет её стоимость. Параметр цвета не будет учтён.
Соответственно, цены у всех Nissan Juke будут 1 850 000 рублей, у всех Subaru Forester — 3 190 000 рублей, у всех Toyota C-HR — 2 365 000 рублей.
Поэтому в этом варианте нужно искать стоимость авто сразу по двум критериям — модель и цвет. Для этого нужно изменить формулу вручную. В строке ссылок ставим курсор сразу после искомого значения.
Дописываем в формулу фразу ЕСЛИ(‘каталог авто’!$B$29:$B$35=B29, где:
- ‘каталог авто’!$B$29:$B$35 — закреплённый диапазон цвета автомобилей в таблице, откуда нужно перенести данные. Это весь столбец с ценами.
- B29 — искомое значение цвета автомобиля в таблице, куда мы переносим данные. Это первая ячейка в столбце с цветом — дополнительным параметром для поиска.
Итоговая функция такая: fx=ВПР(A29;ЕСЛИ(‘каталог авто’!$B$29:$B$35=B29;’каталог авто’!$A$29:$E$35);5;0). Теперь значения цен переносятся верно.
Как использовать ВПР в «Google Таблицах»? В них тоже есть функция Vlookup, но нет окна построителя формул. Поэтому придётся прописывать её вручную. Перечислите через точку с запятой все аргументы и не забудьте зафиксировать диапазон. Для фиксации поставьте перед каждым символом значок доллара. В готовой формуле это будет выглядеть так: =ВПР(A2;’Лист1′!$A$2:$C$5;3;0).
Научитесь: Excel + Google Таблицы с нуля до PRO
Узнать больше
Функция ВПР в Excel позволяет данные из одной таблицы переставить в соответствующие ячейки второй. Ее английское наименование – VLOOKUP.
Очень удобная и часто используемая. Т.к. сопоставить вручную диапазоны с десятками тысяч наименований проблематично.
Как пользоваться функцией ВПР в Excel
Допустим, на склад предприятия по производству тары и упаковки поступили материалы в определенном количестве.
Стоимость материалов – в прайс-листе. Это отдельная таблица.
Необходимо узнать стоимость материалов, поступивших на склад. Для этого нужно подставит цену из второй таблицы в первую. И посредством обычного умножения мы найдем искомое.
Алгоритм действий:
- Приведем первую таблицу в нужный нам вид. Добавим столбцы «Цена» и «Стоимость/Сумма». Установим денежный формат для новых ячеек.
- Выделяем первую ячейку в столбце «Цена». В нашем примере – D2. Вызываем «Мастер функций» с помощью кнопки «fx» (в начале строки формул) или нажав комбинацию горячих клавиш SHIFT+F3. В категории «Ссылки и массивы» находим функцию ВПР и жмем ОК. Данную функцию можно вызвать перейдя по закладке «Формулы» и выбрать из выпадающего списка «Ссылки и массивы».
- Откроется окно с аргументами функции. В поле «Искомое значение» — диапазон данных первого столбца из таблицы с количеством поступивших материалов. Это те значения, которые Excel должен найти во второй таблице.
- Следующий аргумент – «Таблица». Это наш прайс-лист. Ставим курсор в поле аргумента. Переходим на лист с ценами. Выделяем диапазон с наименованием материалов и ценами. Показываем, какие значения функция должна сопоставить.
- Чтобы Excel ссылался непосредственно на эти данные, ссылку нужно зафиксировать. Выделяем значение поля «Таблица» и нажимаем F4. Появляется значок $.
- В поле аргумента «Номер столбца» ставим цифру «2». Здесь находятся данные, которые нужно «подтянуть» в первую таблицу. «Интервальный просмотр» — ЛОЖЬ. Т.к. нам нужны точные, а не приблизительные значения.
Нажимаем ОК. А затем «размножаем» функцию по всему столбцу: цепляем мышью правый нижний угол и тянем вниз. Получаем необходимый результат.
Теперь найти стоимость материалов не составит труда: количество * цену.
Функция ВПР связала две таблицы. Если поменяется прайс, то и изменится стоимость поступивших на склад материалов (сегодня поступивших). Чтобы этого избежать, воспользуйтесь «Специальной вставкой».
- Выделяем столбец со вставленными ценами.
- Правая кнопка мыши – «Копировать».
- Не снимая выделения, правая кнопка мыши – «Специальная вставка».
- Поставить галочку напротив «Значения». ОК.
Формула в ячейках исчезнет. Останутся только значения.
Быстрое сравнение двух таблиц с помощью ВПР
Функция помогает сопоставить значения в огромных таблицах. Допустим, поменялся прайс. Нам нужно сравнить старые цены с новыми ценами.
- В старом прайсе делаем столбец «Новая цена».
- Выделяем первую ячейку и выбираем функцию ВПР. Задаем аргументы (см. выше). Для нашего примера: . Это значит, что нужно взять наименование материала из диапазона А2:А15, посмотреть его в «Новом прайсе» в столбце А. Затем взять данные из второго столбца нового прайса (новую цену) и подставить их в ячейку С2.
Данные, представленные таким образом, можно сопоставлять. Находить численную и процентную разницу.
Функция ВПР в Excel с несколькими условиями
До сих пор мы предлагали для анализа только одно условие – наименование материала. На практике же нередко требуется сравнить несколько диапазонов с данными и выбрать значение по 2, 3-м и т.д. критериям.
Таблица для примера:
Предположим, нам нужно найти, по какой цене привезли гофрированный картон от ОАО «Восток». Нужно задать два условия для поиска по наименованию материала и по поставщику.
Дело осложняется тем, что от одного поставщика поступает несколько наименований.
- Добавляем в таблицу крайний левый столбец (важно!), объединив «Поставщиков» и «Материалы».
- Таким же образом объединяем искомые критерии запроса:
- Теперь ставим курсор в нужном месте и задаем аргументы для функции: . Excel находит нужную цену.
Рассмотрим формулу детально:
- Что ищем.
- Где ищем.
- Какие данные берем.
Функция ВПР и выпадающий список
Допустим, какие-то данные у нас сделаны в виде раскрывающегося списка. В нашем примере – «Материалы». Необходимо настроить функцию так, чтобы при выборе наименования появлялась цена.
Сначала сделаем раскрывающийся список:
- Ставим курсор в ячейку Е8, где и будет этот список.
- Заходим на вкладку «Данные». Меню «Проверка данных».
- Выбираем тип данных – «Список». Источник – диапазон с наименованиями материалов.
- Когда нажмем ОК – сформируется выпадающий список.
Теперь нужно сделать так, чтобы при выборе определенного материала в графе цена появлялась соответствующая цифра. Ставим курсор в ячейку Е9 (где должна будет появляться цена).
- Открываем «Мастер функций» и выбираем ВПР.
- Первый аргумент – «Искомое значение» — ячейка с выпадающим списком. Таблица – диапазон с названиями материалов и ценами. Столбец, соответственно, 2. Функция приобрела следующий вид: .
- Нажимаем ВВОД и наслаждаемся результатом.
Изменяем материал – меняется цена:
Скачать пример функции ВПР в Excel
Так работает раскрывающийся список в Excel с функцией ВПР. Все происходит автоматически. В течение нескольких секунд. Все работает быстро и качественно. Нужно только разобраться с этой функцией.