Почему ВПР выдаёт #Н/Д
Формулу ВПР протянули по всем заказам, и почти везде появилась цена. Но в двух строках стоит #Н/Д, «нет данных»: так ВПР отвечает, когда не нашла ключ в справочнике. Ошибки выглядят одинаково, а причины у них разные. Выясните, что не так с этими артикулами:
Артикул 1004 в прайсе есть, но в заказе это число, сохранённое как текст, а для ВПР текст «1004» и число 1004 разные значения. Артикула 1009 в прайсе нет совсем.
Как понять, в чём дело
У #Н/Д в ВПР три частые причины. Каждую выдаёт свой признак, и лечат их по-разному:
«Преобразовать в число» прячется в меню значка с восклицательным знаком рядом с ячейкой. Если артикулов-текстов много, выделите весь столбец: пункт меню исправит их все сразу.
Пробел в текстовом ключе
Городу, фамилии или коду вроде КБ-1004 достаточно одного пробела в конце, чтобы ВПР перестала их узнавать. Целый столбец чистят функцией СЖПРОБЕЛЫ, а одну ячейку проще ввести заново:
Ключа правда нет: ЕСЛИОШИБКА
Артикула 1009 в прайсе нет, и чинить здесь нечего. Но в отчёте #Н/Д выглядит как поломка, и понятнее написать прямо: «нет в справочнике». Для этого есть функция ЕСЛИОШИБКА. Она считает формулу и, если вышла ошибка, показывает вместо неё запасной ответ.
Готовую ВПР целиком, без знака =, ставят первым аргументом, а запасной текст в кавычках вторым. Так же, как И стоит внутри ЕСЛИ, здесь одна функция окажется внутри другой:
=ЕСЛИОШИБКА(ВПР(A2;$D$2:$F$6;3;0);"нет в справочнике")
Excel считает такую формулу изнутри наружу: сначала ВПР, потом ЕСЛИОШИБКА смотрит на её ответ.
ЕСЛИОШИБКА прячет любую ошибку, даже ту, которую можно исправить. На третьей вкладке кабель 1004 попал в «нет в справочнике», хотя он есть в прайсе: его артикул записан текстом. Поэтому сначала чинят ключи и только потом оборачивают ВПР в ЕСЛИОШИБКА.