Почему ВПР выдаёт #Н/Д

Формулу ВПР протянули по всем заказам, и почти везде появилась цена. Но в двух строках стоит #Н/Д, «нет данных»: так ВПР отвечает, когда не нашла ключ в справочнике. Ошибки выглядят одинаково, а причины у них разные. Выясните, что не так с этими артикулами:

Выделите по очереди оба артикула с #Н/Д и сравните их с прайсом
fx
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
Артикул
Цена, ₽
Артикул
Товар
Цена, ₽
1002
1001
Наушники
7360
'1004
1002
Колонка
11040
1009
1003
Зарядка
2300
1001
1004
Кабель
920
1003
1005
Чехол
1380
Лист1
Выделите артикул заказа, и под листом появится сравнение с прайсом.

Артикул 1004 в прайсе есть, но в заказе это число, сохранённое как текст, а для ВПР текст «1004» и число 1004 разные значения. Артикула 1009 в прайсе нет совсем.

Как понять, в чём дело

У #Н/Д в ВПР три частые причины. Каждую выдаёт свой признак, и лечат их по-разному:

Что видноПричина и что делать
Ключ-число прижат влево, у ячейки зелёный уголокЧисло, сохранённое как текст. Нажмите «Преобразовать в число»
Ключ-текст выглядит точь-в-точь как в справочникеЛишний пробел. Уберите его функцией СЖПРОБЕЛЫ
Ключа в справочнике нетЧинить нечего. Покажите понятный текст функцией ЕСЛИОШИБКА

«Преобразовать в число» прячется в меню значка с восклицательным знаком рядом с ячейкой. Если артикулов-текстов много, выделите весь столбец: пункт меню исправит их все сразу.

Пробел в текстовом ключе

Городу, фамилии или коду вроде КБ-1004 достаточно одного пробела в конце, чтобы ВПР перестала их узнавать. Целый столбец чистят функцией СЖПРОБЕЛЫ, а одну ячейку проще ввести заново:

fx
A
B
C
D
E
F
1
2
3
4
5
6
Город
Доставка, ₽
Город
Доставка, ₽
Москва
Москва
300
Казань
Казань
450
Самара
Самара
500
Лист1

Ключа правда нет: ЕСЛИОШИБКА

Артикула 1009 в прайсе нет, и чинить здесь нечего. Но в отчёте #Н/Д выглядит как поломка, и понятнее написать прямо: «нет в справочнике». Для этого есть функция ЕСЛИОШИБКА. Она считает формулу и, если вышла ошибка, показывает вместо неё запасной ответ.

Готовую ВПР целиком, без знака =, ставят первым аргументом, а запасной текст в кавычках вторым. Так же, как И стоит внутри ЕСЛИ, здесь одна функция окажется внутри другой:

=ЕСЛИОШИБКА(ВПР(A2;$D$2:$F$6;3;0);"нет в справочнике")

Excel считает такую формулу изнутри наружу: сначала ВПР, потом ЕСЛИОШИБКА смотрит на её ответ.

Артикул в A2:
=ЕСЛИОШИБКА(ВПР(A2;$D$2:$F$6;3;0);"нет в справочнике")
Поиск в прайсе
11 040
В ячейке
11 040
Колонка 1002 есть в прайсе. Поиск нашёл цену без ошибки, и она попала в ячейку.

ЕСЛИОШИБКА прячет любую ошибку, даже ту, которую можно исправить. На третьей вкладке кабель 1004 попал в «нет в справочнике», хотя он есть в прайсе: его артикул записан текстом. Поэтому сначала чинят ключи и только потом оборачивают ВПР в ЕСЛИОШИБКА.