Использование функции ВПР (VLOOKUP) для подстановки значений

Кому лень или нет времени читать - смотрим видео. Подробности и нюансы - в тексте ниже.

Постановка задачи

Итак, имеем две таблицы - таблицу заказов и прайс-лист:

vlookup1.gif

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

Решение

В наборе функций Excel, в категории Ссылки и массивы (Lookup and reference) имеется функция ВПР (VLOOKUP). Эта функция ищет заданное значение (в нашем примере это слово "Яблоки") в крайнем левом столбце указанной таблицы (прайс-листа) двигаясь сверху-вниз и, найдя его, выдает содержимое соседней ячейки (23 руб.) Схематически работу этой функции можно представить так:

vlookup2.gif

Для простоты дальнейшего использования функции сразу сделайте одну вещь - дайте диапазону ячеек прайс-листа собственное имя. Для этого выделите все ячейки прайс-листа кроме "шапки" (G3:H19), выберите в меню Вставка - Имя - Присвоить (Insert - Name - Define) или нажмите CTRL+F3 и введите любое имя (без пробелов), например Прайс. Теперь в дальнейшем можно будет использовать это имя для ссылки на прайс-лист.

Теперь используем функцию ВПР. Выделите ячейку, куда она будет введена (D3) и откройте вкладку Формулы - Вставка функции (Formulas - Insert Function). В категории Ссылки и массивы (Lookup and Reference) найдите функцию ВПР (VLOOKUP) и нажмите ОК. Появится окно ввода аргументов для функции:

vlookup3.png

Заполняем их по очереди:

  • Искомое значение (Lookup Value) - то наименование товара, которое функция должна найти в крайнем левом столбце прайс-листа. В нашем случае - слово "Яблоки" из ячейки B3.
  • Таблица (Table Array) - таблица из которой берутся искомые значения, то есть наш прайс-лист. Для ссылки используем собственное имя "Прайс" данное ранее. Если вы не давали имя, то можно просто выделить таблицу, но не забудьте нажать потом клавишу F4, чтобы закрепить ссылку знаками доллара, т.к. в противном случае она будет соскальзывать при копировании нашей формулы вниз, на остальные ячейки столбца D3:D30.
  • Номер_столбца (Column index number) - порядковый номер (не буква!) столбца в прайс-листе из которого будем брать значения цены. Первый столбец прайс-листа с названиями имеет номер 1, следовательно нам нужна цена из столбца с номером 2.
  • Интервальный_просмотр (Range Lookup) - в это поле можно вводить только два значения: ЛОЖЬ или ИСТИНА:
      • Если введено значение 0 или ЛОЖЬ (FALSE), то фактически это означает, что разрешен поиск только точного соответствия, т.е. если функция не найдет в прайс-листе укзанного в таблице заказов нестандартного товара (если будет введено, например, "Кокос"), то она выдаст ошибку #Н/Д (нет данных).
      • Если введено значение 1 или ИСТИНА (TRUE), то это значит, что Вы разрешаете поиск не точного, а приблизительного соответствия, т.е. в случае с "кокосом" функция попытается найти товар с наименованием, которое максимально похоже на "кокос" и выдаст цену для этого наименования. В большинстве случаев такая приблизительная подстановка может сыграть с пользователем злую шутку, подставив значение не того товара, который был на самом деле! Так что для большинства реальных бизнес-задач приблизительный поиск лучше не разрешать. Исключением является случай, когда мы ищем числа, а не текст - например, при расчете Ступенчатых скидок.

Все! Осталось нажать ОК и скопировать введенную функцию на весь столбец.

Ошибки #Н/Д и их подавление

Функция ВПР (VLOOKUP) возвращает ошибку #Н/Д (#N/A) если:

  • Включен точный поиск (аргумент Интервальный просмотр=0) и искомого наименования нет в Таблице.
  • Включен приблизительный поиск (Интервальный просмотр=1), но Таблица, в которой происходит поиск не отсортирована по возрастанию наименований.
  • Формат ячейки, откуда берется искомое значение наименования (например B3 в нашем случае) и формат ячеек первого столбца (F3:F19) таблицы отличаются (например, числовой и текстовый). Этот случай особенно характерен при использовании вместо текстовых наименований числовых кодов (номера счетов, идентификаторы, даты и т.п.) В этом случае можно использовать функции Ч и ТЕКСТ для преобразования форматов данных. Выглядеть это будет примерно так:
    =ВПР(ТЕКСТ(B3);прайс;0)
    Подробнее об этом можно почитать тут.
  • Функция не может найти нужного значения, потому что в коде присутствуют пробелы или невидимые непечатаемые знаки (перенос строки и т.п.). В этом случае можно использовать текстовые функции СЖПРОБЕЛЫ (TRIM) и ПЕЧСИМВ (CLEAN) для их удаления:
    =ВПР(СЖПРОБЕЛЫ(ПЕЧСИМВ(B3));прайс;0)
    =VLOOKUP(TRIM(CLEAN(B3));прайс;0)

Для подавления сообщения об ошибке #Н/Д (#N/A) в тех случаях, когда функция не может найти точно соответствия, можно воспользоваться функцией ЕСЛИОШИБКА (IFERROR). Так, например, вот такая конструкция перехватывает любые ошибки создаваемые ВПР и заменяет их нулями:

=ЕСЛИОШИБКА(ВПР(B3;прайс;2;0);0)

=IFERROR(VLOOKUP(B3;прайс;2;0);0)

P.S.

Если нужно извлечь не одно значение а сразу весь набор (если их встречается несколько разных), то придется шаманить с формулой массива. или использовать новую функцию ПРОСМОТРX (XLOOKUP) из Office 365.

Ссылки по теме 

 


Страницы: 1  2  3  
MEP
24.04.2015 15:22:08
Спасибо за макрос. а как изменить код что бы в случае если значение не найдено выводился не 0 а нет данных - НД() ?
08.05.2015 16:14:08
Николай, добрый день.

Есть такая таблица:
ABC
1ИМЯ
2500
при помощи функции ВПР (искомое значение "ИМЯ";) мы можем присвоить значение из строки №1. Но, там пустые ячейки...
Как присвоить значение из строки, которая находится ниже? В данном примере "500"
01.07.2015 16:10:08
Тут вместо ВПР нужна связка функций ИНДЕКС и ПОИСКПОЗ
Только найденное ПОИСКПОЗ значение увеличьте на 1.
30.10.2015 11:00:37
Добрый день!)
У меня список большой допустим на 1000 организаций
Как связать его с другим листом?
Вместо прайс листа у меня 1) Код 2) организация 3) счёт
Заполняю рядом ячейку кода и у меня успешно всплывает рядом организация и счёт, но это всё на одном листе, а на разных не выходит!
Подскажите пожалуйста!
14.05.2015 12:47:28
Возможно вы знаете решение моей проблемы:
есть два столбца с фамилиями. Один - сотрудники, второй - руководители. Нужно найти однофамильцев между ними. Фигня вся в том, что та формула, что используется мной находит только точные совпадения (Иванов-Иванов), а вот если фамилия женская, такое совпадение игнорируется (Иванова-Иванов). Если применяется значение 1 или -1, то формула срабатывает некорректно.
01.07.2015 15:45:36
Добрый день! А если в таблице позиции повторяются, а значения у них разные? ВПР цепляет тогда первое совпадение и получаются некорректные данные.

Например структура таблицы такая:
 СКЛАД 1
    яблоки   15 кг
    груши     20 кг
    апельсины  15 кг
 СКЛАД 2
    арбузы  30 кг
    дыни     30 кг
    яблоки   10 кг

В этом случае получается всегда "яблоки 15 кг"
04.08.2015 09:49:48
Ввел функцию ВПР в строку формул. В окне формулы значение находит верное, но в ячейке пишется сама формула, а не получившееся значение. Как исправить?
04.08.2015 09:58:44
Все решил. Спасибо. Формат ячейки поменял.
27.08.2015 18:27:09
День добрый! Помогите! Ситуация такая! Есть два поставщика X и Y. У каждого по несколько наименований товара с разной ценой. Сделал ячейку с выпадающим списком поставщиков и от нее зависящую ячейку с товаром. То есть выбираешь X товар 1,2,3,4 выбираешь Y - товар 5,6, 7,8 ит.д. Теперь используя формулу ВПР мне надо сделать так чтобы при выборе конкретного товара была цена именно на его продукт. На каждого поставщика и товар разные колонки с ценой. Короче типа вот так =ВПР(ЕСЛИ X;массив;колонка;ложь) ЕСЛИ Y;массив;колонка;ложь) Если поставщик X, то ищет в колонке 4, еслиY, то в колонке 8.Как это сделать?  
04.09.2015 11:44:19
Подскажите а как при помощи ВПР поместить в ячейку вывода не просто число а формулу содержащуюся в ячейке из которой берет значение ВПР?
16.10.2015 20:17:27
Спасибо огромное! Похоже ВПР - одна из крутейших фишек Excel. Попробовал использовать для работы, но напугало, что однажды функция не нашла значения. Хотел использовать, как базу данных, теперь задумался.  Может ли кто-нибудь подсказать почему абсолютно одинаковые вводные данные скопированные из разных источников в ячейки могут влиять на функцию? Вот пример http://1drv.ms/1PxewK4 - желтым отмечено, то что влияет, а красным те же значения, но не влияющие на функцию.
Как-то не совсем в тему комментарий получился - похоже не к формуле вопрос, а скорее вопрос по возможностям проверки исходных данных.
26.10.2015 08:58:41
День добрый! Есть вопрос, решаю формулу x/y=z потом значение z ищу с помощью  ВПР в таблице с коэффициентами, чтобы потом подставить в другую формулу. Допустим у меня в формуле получилось 0,199, а таблице есть ячейки со значением 0,175 и 0,2, но он мне подставляет значение не с ячейки со значением 0,2, а со значением 0,175. Как то можно решить эту проблему?  
11.12.2015 09:52:34
Доброго времени суток!
При использовании функции ВПР применительно к небольшим таблицам, я никогда не сталкивался с проблемой Н/Д. Но при обработке данных импортированных из БД, функция не работает, все рекомендации по устранению Н/Д я вроде опробывал, помогите пожалуйста разобраться. Нужно сверить Ф.И.О. в двух таблицах, и извлечь значения из столбца ПОЛ, соответствующего сотрудника. Вот ссылка.
P.S. Еще одно наблюдение, если задать имя таблице охватив в т.ч. шапку таблицы, и уже это "имя таблицы" использовать в ВПР, то функция возвращает значение, из нужного столбца, но только это значение из "ШАПКИ" а не соответствующей строки, и ко всем позициям в списке, возвращается значение "ПОЛ"
Вопрос можно считать закрытым. У меня вдруг появилась идея удалить столбец с нумерацией, в подправить ВПР. И заработало!  
20.12.2015 00:11:32
Спасибо большое! Все очень понятно и просто после такого объяснения. Наткнулась на эту статью случайно, искала информацию про ВПР. Из всех, что мне попадались, эта оказалась самой удачной. Даже зарегистрировалась на сайте на будущее)
29.12.2015 11:06:19
Доброе время суток, Николай, а если ситуация вот такая:
Наименование
Сочное Яблоко красное 121212
Сочное Яблоко зеленое 333222
Сочное яблоко грени 4443344
Сочная Груша зелёная 33333
Сочная Груша  желтая 55555
и т.д. до бесконечности, как это бывает в прайсах. Искать надо по слову Яблоко\Груша, как это можно реализовать?

Заранее, огромное Вам спасибо.
С уважением, Джон.
 
24.02.2016 19:02:45
Добрый день. Как можно в одной таблице совместить возможности функций ВПР и VLOOKUP3
Т.е. есть исходные данные которые содержат в разных строках одинаковый артикул.
Если использовать ВПР, то она ищет только первое значение, если VLOOKUP3, то массив, но только для одного артикула. А мне нужно в одну таблицу "собрать" данные соответствующие и одиночным артикулам и если их несколько.
Т.е. по сути сводная таблица, но с простой, двумерной структурой.


Составил пример в экселе, не могу его прикрепить.

Файл1 Закупка
№ п/пНаименованиеСтранаАртикулДата покупкиОбъем
партии, кг
ЦенаСтоимость партии
9КапустаРоссия0004/0101.12.201551260
8АнанасЭквадор0001/0202.12.2015101201200
14КивиТунис0005/0103.12.20151360780
11ГрейпфрутМарокко0003/0104.12.20151445630
17НектаринТайланд0007/0105.12.20151440560
5КивиТунис0005/0101.01.201623601380
10МангоТайланд0006/0101.01.20161080800
13КивиТунис0005/0101.01.201615801200
16АбрикосАрмения0001/0101.01.201626401040
3КапустаРоссия0004/0101.02.20163512420
6КапустаРоссия0004/0102.02.20163612432
2ГрушиРоссия0003/0203.02.201640381520
15ПерсикАрмения0008/0104.02.201642451890
1ЯблокиРоссия0009/0101.03.201660231380
4МандариныМарокко0006/0201.03.201645452025
7КивиТунис0005/0101.03.201660603600
12БананАлжир0002/0101.03.201648221056
Файл2 Продажи
№ п/пАртикулДата продажиОбъем
партии, кг
ЦенаСтоимость партии
10009/0110.03.201660331980
20003/0210.02.201640481920
30004/0103.02.20163522770
40006/0210.03.201645552475
50005/0120.01.201623701610
60004/0103.02.201636301080
70005/0110.03.201640702800
80001/0210.01.2016101301300
90005/0111.03.201615801200
100004/0115.01.2016535175
110005/0112.03.2016590450
120006/0105.01.20161090900
130003/0116.01.20161455770
140002/0110.03.201648321536
150005/0105.01.201615901350
160005/0115.01.20161070700
170005/0115.01.2016380240
180008/0115.03.201642552310
190001/0115.01.201620501000
200007/0117.01.20161450700
210001/0115.01.2016660360

Что необходимо
Сводная таблица по продажам
НаименованиеСтранаАртикулПроданоСредняя ценаСумма
АбрикосАрмения0001/0120501000
АнанасЭквадор0001/02101301300
БананАлжир0002/0148321536
ГрейпфрутМарокко0003/011455770
ГрушиРоссия0003/0240481920
КапустаРоссия0004/0176292204
КивиТунис0005/0111178.578721.27
МангоТайланд0006/011090900
МандариныМарокко0006/0245552475
НектаринТайланд0007/011450700
ПерсикАрмения0008/0142552310
ЯблокиРоссия0009/0160331980
18.04.2016 00:54:33
Здравствуйте, Николай!

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

Заранее спасибо!
29.05.2016 17:02:31
День добрый! Подскажите пожалуйста, как сделать ВПР в такой ситуации (я  уже думала о других формулах, как поискпоз, просмотр, но что-то как-то не выходит).  Во вкладке Исходник 10 столбцов : Фио, группа, город, ДАТА.... 9-й столбец Показатель, 10-й - время.  Данные идут  вертикально по Датам. Необходимо перенести данные Во вкладку  Показатель, где первые 3 столбца Фио, группа, город, а после идут 1,2,3 .... , то есть даты, они что во вкладке Исходник и Показатель указаны как числа (общий формат), так как сам файл идет за определенный месяц.  Как в формуле привязать эти числа, чтоб переносились данные во вкладку Показатель по определенному Фио и дате.
Вкладка Исходник
ФИОГруппаГородДатаПоказательВремя
Петров ИванСмирновСаратов31960:01:54
Петров ИванСмирновСаратов41760:02:54
Иванова КатяКузнецовОмск51710:03:10
Вкладка Показатель
ФИОГруппаГород123456
Петров ИванСмирновСаратов
Смирнова ЮлияПоповСамара
Мартынова ЕкатеринаПоповСамара
Иванова КатяКузнецовОмск
Заранее спасибо.
10.06.2016 14:16:30
Николай, добрый день!
Подскажите, пожалуйста, как именно можно при использовании функции ВПР подставить (рядом) для выбранного значения (названия, маркировки) соответствующую ему таблицу с данными?

Заранее спасибо!

Пример:
Имеется: "лист-1" с названиями моделей и их техническим описанием.
Необходимо: на "лист-2" указывать актуальные в данный момент модели (в определенных ячейках, позиции ячеек определены для возможности последующей печати), и чтобы рядом с ними автоматически выводились таблицы с их описаниями с "лист-1".
Далее лист с таблицами выбранных моделей отправляется на печать.
27.06.2016 10:26:56
Николай, здравствуйте!

Подскажите как можно заставить ВПР работать со списком "Наименование"(из вашего примера), диапазон которого меняется, может быть короче или длиннее. Нужно составить универсальный шаблон, где будут прописаны все формулы, но расчёты будут основываться на выборке с помощью ВПР по списку "Наименование", но длинна списка может меняться бессистемно в широком диапазоне 10-10 000.
26.08.2016 17:17:38
Александр, используйте Умные Таблицы - и про меняющиеся размеры диапазонов можно будет забыть!
25.08.2016 12:14:41
Николай, добрый день,
подписалась на ваш канал на ютубе))) периодически смотрю большое вам спасибо, за то что делитесь с нами такой ценной информацией)

Николай, у меня к вам вопрос по ВПР в "умных" таблицах, если искомое мной значение находится не в первом столбце таблице, как мне на нее сослаться?

=ВПР(I175;(ВРАБОТЕ[Столбец8]:ВРАБОТЕ[Столбец28]);13;0)

жирным выделила диапазон, т.е. в столбце8 у меня находится искомое значение, наверное можно это как-то проще написать?
26.08.2016 17:16:19
Марина, рекомендую вместо ВПР использовать связку функций ИНДЕКС и ПОИСКПОЗ - это намного удобнее и нет проблем со столбцами - см. http://www.planetaexcel.ru/techniques/2/92/
Николай, еще раз большое спасибо Вам за уроки!

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

Задача.
Есть массив адресов. За каждым адресом закреплена обслуживающая район бригада.
Необходимо при формировании массива адресов из биллинга автоматически подставить напротив каждого адреса номер обслуживающей бригады.

К примеру:
АдресБригада
Советская, 10 - 235
Советская, 11 - 465
Советская, 22 - 25
Советская, 43 - 1236
Советская, 55 - 16
Советская, 220 - 187
Советская, 48/1 - 1177
Мы знаем, что по ул. Советской, дома 1-22 закреплены за 5 бригадой.
Возможно ли, чтобы функция проверяла только улицу и дом, не обращая внимание на № квартиры (либо, в данном случае - значения после знака "-")?
Т.е. первоначально мы создаем массив, в котором указаны только улицы и дома. Но при проверке вводим полный адрес, при этом функция "не обращает" внимание на номер квартиры.
12.10.2016 09:56:15
Здравствуйте Николай.
Есть две базы абонентов. Одна из них доделана полностью (#1). Адреса прописки совпадают в обеих базах. Как личные номера абонентов таблицы №1 заменить личными номерами таблицы №2. По признаку прописки
№1
ЛС           Фамилия      Имя        Отчество    Дата рожденияЛичный номерАдрес ЛС
99991013ИВАНОВ          ИВАНИВАНОВИЧ02.12.197500000000000000г. КАКОЙ-ТО, мкр-н МОЛОДЕЖНЫЙ, д. 1, кв.1
99991013ИВАНОВАИВАННАИВАНОВНА02.13.196600000000000000г. КАКОЙ-ТО, мкр-н МОЛОДЕЖНЫЙ, д. 1, кв.1
№2
ЛС   Фамилия  Имя        Отчество         Дата рожденияЛичный номерАдрес ЛС
2361ИВАНОВИВАНИВАНОВИЧ02.12.197500000000000000г. КАКОЙ-ТО, мкр-н МОЛОДЕЖНЫЙ, д. 1, кв.1
2361ИВАНОВАИВАННАНИКОЛАЕВНА02.13.196600000000000000г. КАКОЙ-ТО, мкр-н МОЛОДЕЖНЫЙ, д. 1, кв.1
За ранее спасибо!
12.10.2016 12:05:49
Добавлю, что массив данных очень большой ручками заменять ОЧЕНЬ долго.
13.10.2016 09:56:02
а можно брать данные из одного файла и подставлять их в другой?
13.10.2016 11:56:50
Вроде сделал всё как тут сказано,но у меня значение из второй таблицы почему то берет не из соседней ячейки справа,а ячейкой выше.Почему такое может быть?
25.10.2016 17:16:05
файл
Здравствуйте!
Все понятно, но уже 2 дня мучаюсь - не работает и все!
Нужно подставить цены из листа Фас ады
Пишет Допустимые для ввода значения ограничены другими пользователями.
Что это значит?

скрин1
скрин2
[img]C:\Users\Uliya\Desktop\ВПР\Image 2.jpg[/img]
Страницы: 1  2  3  
Наверх