Функция ВПР (на английском VLOOKUP) ищет значение в первом столбце таблицы и возвращает то, что стоит в той же строке в указанном столбце: =ВПР(E2;A2:C100;3;0) найдёт E2 в столбце A и вернёт значение из третьего столбца. Последний аргумент почти всегда ставьте 0 (ЛОЖЬ) — точное совпадение; 1 (ИСТИНА) нужен для поиска по интервалам в отсортированной таблице. Если значение не найдено, ВПР возвращает #Н/Д — её прячет =ЕСЛИОШИБКА(ВПР(E2;A2:C100;3;0);""). Искать влево ВПР не умеет — для этого есть ИНДЕКС и ПОИСКПОЗ.
Функцией ВПР (по-английски VLOOKUP) пользоваться довольно просто. Есть десятки примеров и даже пошаговых инструкций. Однако, новичкам в Excel непросто даётся понимание того, как работают формулы с функцией ВПР.
В этой статье я попробую максимально понятно описать, как работает ВПР простыми словами и научить вас её использовать.
Как работает ВПР. Для чайников
Расшифровка названия функции уже дает половину ответа на вопрос "Как работает ВПР?". Ведь она расшифровывается как Вертикальный ПРосмотр. Потому что находит искомое, просматривая данные в таблице вертикально.
Синтаксис функции ВПР
Синтаксис функции ВПР выглядит следующим образом:
=ВПР(что_найти;таблица;номер_столбца;интервальный_просмотр)
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Товар | Цена | Ед. | Ищем | Цена | Ед. | |
| 2 | Чай | 120 | шт. | Кофе | 300=ВПР(E2;A2:C4;2;0) | уп.=ВПР(E2;A2:C4;3;0) | |
| 3 | Кофе | 300 | уп. | ||||
| 4 | Какао | 180 | уп. |
Номер столбца считается от левого края таблицы A2:C4: цена — 2-й столбец, единица — 3-й.
В английском Excel: =VLOOKUP(E2,A2:C4,2,0)
Я обучал синтаксису функции многих людей, и выявил, что самая распространенная сложность - запомнить порядок аргументов функции, что за чем следует.

Когда я думаю о функции, я вспоминаю знакомую всем телепередачу "Что? Где? Когда?".
Первые два аргумента — как раз "Что?" и "Где?", и идут именно в этом порядке. Первый аргумент - искомое значение, иначе говоря, что мы ищем. Второй аргумент — диапазон, таблица, простыми словами — где мы ищем. Третий аргумент числовой, и обозначает, когда мы должны остановиться, считая столбцы в таблице слева направо от найденного в первом столбце таблицы значения.
А четвертый аргумент ("интервальный просмотр") вроде бы даже не обязательный, но на поверку очень важен. Ведь от его значения зависит, как будет работать функция. Жаль, вопроса "Как?" в телепередаче не было. :)
Интервальный просмотр — 0 или 1, ЛОЖЬ или ИСТИНА
Скажу заранее. Если нужно просто найти искомое значение и вернуть то, что напротив — используйте в этом параметре 0 (или ЛОЖЬ, но 0 напечатать проще) и не читайте дальше.
Если же хотите узнать главный секрет функции ВПР, то дальше информация для вас.
Тот, кто перевел последний параметр range lookup с английского как "интервальный просмотр", испортил жизнь многим новичкам в Excel.
Потому что там нет ничего интервального, все вполне себе сплошное. А корректно перевести параметр следовало бы "способ просмотра диапазона".
Также справочный текст говорит следующее:

- ЛОЖЬ или 0 обозначает точное совпадение;
- ИСТИНА, 1 или эквивалентный им пропуск параметра (т.к. это значение по умолчанию) обозначает приблизительное совпадение
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Сумма от | Скидка | Сумма заказа | Точно (0) | Интервал (1) | |
| 2 | 0 | 0% | 3500 | #Н/Д=ВПР(D2;$A$2:$B$4;2;0) | 5%=ВПР(D2;$A$2:$B$4;2;1) | |
| 3 | 1000 | 5% | 5000 | 10%=ВПР(D3;$A$2:$B$4;2;0) | 10%=ВПР(D3;$A$2:$B$4;2;1) | |
| 4 | 5000 | 10% |
Суммы 3500 в таблице нет: с 0 ВПР возвращает #Н/Д, с 1 — строку с ближайшим меньшим значением (1000 → 5%). Так считают скидки, тарифы и налоговые шкалы. Таблица должна быть отсортирована по возрастанию.
В английском Excel: =VLOOKUP(D2,$A$2:$B$4,2,1)
И вот с этим приблизительным совпадением сразу возникает ряд вопросов. Что значит приблизительное? Насколько? Каким алгоритмом считается "приблизительность"? Зачем сортировать? И почему по возрастанию?
Тайна четвертого параметра ВПР
Корректно и глубоко тема разницы алгоритмов поиска ВПР и ПОИСКПОЗ в рунете практически не раскрыта. Между тем, примечательный факт в том, что:
- Когда четвертый параметр ЛОЖЬ или 0 — используется линейный поиск;
- Когда он ИСТИНА, 1 или не указан явно, но используется по умолчанию — используется бинарный поиск.
В чем разница?
Линейный поиск — это когда Excel находит искомое значение, пробегая сверху вниз по одной строке. Это совершенно не оптимально, и именно поэтому с большими таблицами ВПР работает очень медленно!
Бинарный же поиск в Excel позволяет находить данные практически мгновенно, так как выполняет четыре основных шага:
- Длина диапазона данных делится пополам и позиция чтения перемещается в середину.
- Найденное значение (пусть n) сравнивается с тем, которое мы ищем (пусть m).
- Если m > n, то берется вторая часть массива, если m < n — первая часть.
- Далее шаги 1-3 повторяются на выбранной части диапазона.
Простыми словами, это похоже на поиск по словарю. Открываем его посередине, смотрим, в какой половине нужное нам значение. В первой? Тогда открываем первую часть посередине, и так продолжаем делить напополам, пока не находим искомое.
В сравнении с линейным поиском, на целиком заполненном столбце Excel (1048576 строк, или 2 в 20 степени) бинарный будет в ~52.000 раз быстрее! (1048576 поделить на 20).
Но есть несколько моментов, которые нужно знать для работы с ВПР в этом режиме:
- Данные должны быть сортированы по возрастанию (как и полагается любому словарю).
- Если искомое не найдено, возвращается значение той строки, что предшествовала бы искомой, если бы она была в диапазоне.
- Если вы уверены, что все искомые значения в диапазоне присутствуют, достаточно будет только сортировки
- Если искомое может отсутствовать, а вы не хотите возвращать значение другой строки, формулу можно немного усложнить.
=ЕСЛИ(ВПР(искомое;диапазон;1;1)<>искомое;"";ВПР(искомое;диапазон;n;1))
Так будет выглядеть формула, которая будет возвращать пустоту, если искомое не найдено, при этом будет оставаться столь же быстрой (практически мгновенной даже при работе с сотнями тысяч строк!).
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Код | Товар | Ищем | Результат | |
| 2 | 101 | Чай | 205 | Кофе=ЕСЛИ(ВПР(D2;$A$2:$A$5;1;1)<>D2;"";ВПР(D2;$A$2:$B$5;2;1)) | |
| 3 | 205 | Кофе | 300 | =ЕСЛИ(ВПР(D3;$A$2:$A$5;1;1)<>D3;"";ВПР(D3;$A$2:$B$5;2;1)) | |
| 4 | 310 | Сок | |||
| 5 | 420 | Вода |
Кода 300 нет: «интервальная» ВПР нашла бы 205 и вернула «Кофе». Первая ВПР проверяет, совпал ли найденный код с искомым, и если нет — возвращает пустоту.
Важный момент - в Excel 2019 и выше даже при использовании параметра 0 используется оптимальный быстрый алгоритм, поэтому большого прироста скорости в последних версиях такая формула не даст (зато даст в Excel 2016 и всех версий что раньше). Вероятнее всего, в Microsoft решили, что пришло время упростить жизнь пользователям, которые не хотят во всём этом разбираться :)
Как сделать ВПР — понятная пошаговая инструкция
Как сделать правильно формулу ВПР, чтобы найти несколько значений одной таблицы в другой и найти совпадения, или для совпадающих данных вернуть данные напротив?
Ниже пошаговая инструкция по использованию функции ВПР с полезными лайфхаками и картинками. Итак:
Если читали выше, я упоминал, как просто запомнить синтаксис функции ВПР. 3 вопроса в указанном порядке. Что? Где? Когда? И потом уже "Как?"
1. Что?
Что будет искать формула? Как правило, здесь указывается адрес ячейки, в которой находится искомое значение.

2. Где?
Где будет искать формула значение из первого шага? Обычно тут указывается диапазон ячеек, состоящий из нескольких столбцов. Лайфхак: выделяйте столбцы целиком (например, B:D), а не диапазон ($B$2:$D$250). Это быстрее и не требует закреплять диапазоны (а закреплять их нужно, иначе при протягивании формулы вниз адрес будет меняться). Выделить столбцы можно, проведя по буквам столбцов левой кнопкой мыши (как показывает стрелка на скриншоте).

3. Когда?
Когда остановиться, считая слева направо для выбора возвращаемого формулой значения? В данном случае нам нужна сумма, а это второй столбец таблицы.

4. Как?
Как искать? О разнице способов поиска ВПР читайте выше: Интервальный просмотр - 0 или 1, ЛОЖЬ или ИСТИНА? Обычно выбирается линейный поиск, так что тут вводим "0".

И на всякий случай, пройдем все шаги подряд и посмотрим, как это выглядит на практике.

| A | B | C | D | E | F | G | H | |
|---|---|---|---|---|---|---|---|---|
| 1 | Заказ | Товар | Кол-во | Цена | Сумма | Прайс | Цена | |
| 2 | 1 | Кофе | 2 | 300=ВПР(B2;$G$2:$H$4;2;0) | 600=C2*D2 | Чай | 120 | |
| 3 | 2 | Чай | 5 | 120=ВПР(B3;$G$2:$H$4;2;0) | 600=C3*D3 | Кофе | 300 | |
| 4 | 3 | Какао | 1 | 180=ВПР(B4;$G$2:$H$4;2;0) | 180=C4*D4 | Какао | 180 |
Ссылка на прайс закреплена знаками $ — при протягивании формулы вниз она не сдвигается.
В английском Excel: =VLOOKUP(B2,$G$2:$H$4,2,0)
ВПР по вхождению подстроки
Помимо поиска по точному совпадению, ВПР умеет искать данные и с неточным совпадением, т.к. поддерживает подстановочные символы (? и *). Важно, что их учёт возможен только в режиме линейного поиска (четвертый параметр 0 или ЛОЖЬ). Ниже пример с использованием знака вопроса, обозначающего один любой символ:

| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Название | Цена | Ищем часть | Цена | |
| 2 | Чай зелёный | 120 | кофе | 300=ВПР("*"&D2&"*";A2:B4;2;0) | |
| 3 | Кофе молотый | 300 | |||
| 4 | Сок яблочный | 90 |
Звёздочки слева и справа означают «любые символы»: нашлась первая строка, где встречается «кофе». Регистр не важен.
В английском Excel: =VLOOKUP("*"&D2&"*",A2:B4,2,0)
Не работает ВПР — ошибки и причины
Функция ВПР иногда ведет себя непредсказуемо, например, не подтягивает значения, возвращает ошибки там, где не должна, или возвращает неожиданные значения. Рассмотрим, почему ВПР не срабатывает так, как должен.
ВПР выдает ошибку #Н/Д
Формулы с ВПР выдают ошибку "#Н/Д", когда функция не находит искомое значение в указанной таблице. Следует понимать, что поиск производится исключительно по первому столбцу, а также — что если не закрепить выбранный диапазон поиска, при протягивании формулы будет смещаться и он, что в 99% случаев будет приводить к ошибкам.
Хотите избавиться от ошибки, когда искомое не найдено? Почитайте, как сделать это с помощью функции ЕСЛИОШИБКА в соответствующей статье. А я лишь приведу формулы оттуда:
Текст "ошибка", если ошибка:
=ЕСЛИОШИБКА(ВПР(ячейка-или-значение;диапазон;номер-столбца;0);"ошибка")
Или "пусто", если ошибка (ячейка будет пустой):
=ЕСЛИОШИБКА(ВПР(ячейка-или-значение;диапазон;номер-столбца;0);"")
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Ищем | ВПР | С ЕСЛИОШИБКА | Товар | Цена | |
| 2 | Кофе | 300=ВПР(A2;$E$2:$F$3;2;0) | 300=ЕСЛИОШИБКА(ВПР(A2;$E$2:$F$3;2;0);"") | Чай | 120 | |
| 3 | Сок | #Н/Д=ВПР(A3;$E$2:$F$3;2;0) | =ЕСЛИОШИБКА(ВПР(A3;$E$2:$F$3;2;0);"") | Кофе | 300 |
«Сока» нет в таблице: ВПР вернула #Н/Д, а с ЕСЛИОШИБКА ячейка осталась пустой.
В английском Excel: =IFERROR(VLOOKUP(A3,$E$2:$F$3,2,0),"")
ВПР не подтягивает значение, хотя искомое в таблице есть
Иногда такое бывает — вы видите, что в таблице есть данные, которые вы ищете, но ВПР будто не срабатывает. Не находит данные. Абсолютно всегда проблема не в ВПР, а в самих данных, и они действительно не совпадают. Самые распространенные проблемы, когда визуально в ячейках одинаковы, но на поверку — нет:
- В таблице искомых значений или в диапазоне поиска присутствуют лишние пробелы, которые нужно удалить.
- Вместо обычных пробелов в ячейках используются неразрывные пробелы, визуально между ними нет никакой разницы, но программа её видит.
- В данных присутствуют переносы строк, символы табуляции, возврат каретки и другие виды "невидимых" символов
- Вместо кириллицы используется латиница или наоборот, для букв с идентичным написанием (для компьютера русская А и английская A - разные символы!). Тогда нужно заменить кириллицу на похожую латиницу (или наоборот).
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Ищем | Как есть | СЖПРОБЕЛЫ / -- | Ключ | Значение | |
| 2 | Чай | #Н/Д=ВПР(A2;$E$2:$F$3;2;0) | Чай=ВПР(СЖПРОБЕЛЫ(A2);$E$2:$F$3;2;0) | Чай | Чай | |
| 3 | 205 | #Н/Д=ВПР(A3;$E$5:$F$6;2;0) | Кофе=ВПР(--A3;$E$5:$F$6;2;0) | Кофе | Кофе | |
| 4 | ||||||
| 5 | 101 | Чай | ||||
| 6 | 205 | Кофе |
В A2 после «Чай» лишний пробел — СЖПРОБЕЛЫ его убирает. В A3 код 205 записан текстом, а в таблице — числом: два минуса превращают текст в число.
В английском Excel: =VLOOKUP(TRIM(A2),$E$2:$F$3,2,0)
Рекомендация в таких случаях следующая. Попробуйте сравнить ячейки, которые видите как одинаковые, отдельно (Например, скопируйте их в ячейки A1 и A2 на другой лист). Сначала сравните целиком (=A1=A2, должно вернуть "ИСТИНА"), если конструкция возвращает "ЛОЖЬ", сравните их уже посимвольно (первый символ с первым, второй со вторым и т.д.), здесь вам поможет функция ПСТР.
Левый ВПР: поиск влево через ИНДЕКС и ПОИСКПОЗ
ВПР ищет только в первом столбце таблицы и возвращает значения правее. Если нужно найти по столбцу справа и вернуть значение слева, используйте связку ИНДЕКС + ПОИСКПОЗ или ПРОСМОТРX в Excel 365.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Город | Менеджер | Ищем менеджера | Его город | ПРОСМОТРX | |
| 2 | Москва | Анна | Олег | Казань=ИНДЕКС(A2:A4;ПОИСКПОЗ(D2;B2:B4;0)) | Казань=ПРОСМОТРX(D2;B2:B4;A2:A4) | |
| 3 | Казань | Олег | ||||
| 4 | Тула | Иван |
ПОИСКПОЗ находит номер строки Олега в столбце B, ИНДЕКС берёт значение с тем же номером из столбца A. ПРОСМОТРX делает то же одной функцией и по умолчанию ищет точное совпадение.
В английском Excel: =INDEX(A2:A4,MATCH(D2,B2:B4,0))
Функция ВПР — частые вопросы
Как называется ВПР на английском?
VLOOKUP. Синтаксис тот же: =VLOOKUP(lookup_value,table_array,col_index_num,range_lookup).
Почему ВПР выдаёт #Н/Д?
Значение не найдено в первом столбце таблицы. Частые причины — лишние пробелы, число в одной таблице и текст в другой или 1 вместо 0 в последнем аргументе.
Что ставить в интервальный просмотр — 0 или 1?
0 (ЛОЖЬ) — для точного совпадения, это нужно почти всегда. 1 (ИСТИНА) — для поиска по шкалам в отсортированной таблице.
Как сделать ВПР влево?
Формулой =ИНДЕКС(A2:A100;ПОИСКПОЗ(E2;B2:B100;0)) или ПРОСМОТРX в Excel 365.
Как убрать #Н/Д в ВПР?
Оберните формулу: =ЕСЛИОШИБКА(ВПР(E2;A2:C100;3;0);"").
Найти дубли между двумя таблицами, сравнить списки и подставить значения без формул можно в пару кликов с !SEMTools.
!SEMTools решает эту и сотни других задач в пару кликов!
Итоги: функция ВПР в Excel
| Задача | Формула |
|---|---|
| Найти значение по ключу | =ВПР(E2;A2:C100;3;0) |
| Поиск по шкале | =ВПР(E2;A2:B10;2;1) |
| По части текста | =ВПР("*"&E2&"*";A2:B100;2;0) |
| Пусто вместо #Н/Д | =ЕСЛИОШИБКА(ВПР(…);"") |
| Поиск влево | =ИНДЕКС(A:A;ПОИСКПОЗ(E2;B:B;0)) |
Надеюсь, на этой странице вы нашли то, что искали. ВПР с нулём в конце решает большинство задач поиска; главное — одинаковые данные в обеих таблицах.
Добрый день. Отличная статья, но, возможно, стоит еще осветить проблему, когда столбец с нужными (возвращаемыми) данным находится левее от столбца с искомым значением, то можно воспользоваться «Левым ВПР». Через функцию =выбор. А еще лучше использовать новый эксель и использовать формулу =просмотрx, которая проще и лучше будет для новичков. (x на конце формулы на английском, что нелепо)