Нейросеть для работы с таблицами: почему ВПР выдаёт #Н/Д
Нейросеть для работы с таблицами Excel нашла, почему ВПР выдаёт #Н/Д на кодах, которые точно есть: пробелы, числа как текст и одна формула вместо ручной сверки.
Д
Денис
Продакт LibraChat
8 мин чтения
Сестра ведёт небольшой интернет-магазин чехлов и держит всё в Excel: лист с заказами, лист со складом. Однажды вечером она прислала скриншот. Формула ВПР должна была подтянуть остаток к каждому заказу, а у 38 строк из 210 стояло #Н/Д. Коды при этом совпадали, она проверила глазами. Я тоже проверил глазами и тоже ничего не увидел. Через 40 минут сдался и спросил нейросеть для работы с таблицами. Она назвала причину за один ответ, и это была не та причина, на которую я думал. Ниже вся история, запрос и формула, которая теперь стоит у сестры в таблице.
Сорок минут глазами
Сначала я сделал то, что делает почти каждый. Взял код из заказа, нашёл его на складе через поиск, убедился, что он есть. Код был. Значит, думал я, сломана сама формула. Я переписал её трижды, менял диапазон, ставил знаки доллара. Ничего не изменилось.
Ошибка была в подходе. Я искал разницу там, где её видно, а она сидела в том, чего не видно: в пробелах и в том, как Excel хранит число. Глаз этого не различает. Две клетки с «10245» могут быть для Excel разными значениями.
Что я написал: нейросеть для работы с таблицами получила описание, а не файл
Я не стал отправлять файл. Описал устройство таблицы словами и сразу попросил порядок проверки, а не одну «правильную» формулу. Вот запрос, который я отправил в LibraChat:
В Excel у меня два листа. На листе «Заказы» в столбце A коды товаров, на листе «Склад» в столбце A коды, в столбце C остатки. В B2 листа «Заказы» пишу =ВПР(A2;Склад!A:C;3;0), и у части строк выходит #Н/Д, хотя такие коды на складе точно есть. Назови частые причины в том порядке, в каком их стоит проверять, и дай одну формулу, которая работает, даже если в кодах есть лишние пробелы и на одном листе код записан числом, а на другом текстом. Вместо #Н/Д пусть пишет «нет на складе».
Ответ начался с того, что формула у меня собрана правильно. Это меня немного задело, но так и было. Дальше шёл порядок проверки, привожу его дословно:
В начале, в конце или двойные внутри. Самая частая причина. Сравни `=ДЛСТР(A2)` и `=ДЛСТР(ячейка_на_складе)`: длины разные — пробелы есть.
2. Число и текст. На одном листе код — число, на другом текст. У текста часто зелёный треугольник. Проверка: `=ЕЧИСЛО(A2)` и `=ЕТЕКСТ(A2)`.
3. Неразрывный пробел. Символ 160, обычный `СЖПРОБЕЛЫ` его не убирает. Типично после выгрузки из 1С, с сайта или из PDF. Проверка: `=КОДСИМВ(ПСТР(A2;1;1))` и то же для конца строки.
4. Похожие буквы. Латинские O, A, C, E, P, X, H, K, M, T, B против кириллических О, А, С и остальных. Для глаза одно и то же, для `ВПР` — разные коды.
5. Прочие невидимые символы. Перенос строки (код 10), табуляция (9), лишний дефис или апостроф в начале ячейки.
И одна итоговая формула, которую я попросил:
```
=ЕСЛИОШИБКА(ИНДЕКС(Склад!$C$2:$C$10000;ПОИСКПОЗ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(A2&"";СИМВОЛ(160);""));СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ИНДЕКС(Склад!$A$2:$A$10000;0)&"";СИМВОЛ(160);""));0));"нет на складе")
```
К формуле было два честных уточнения. В старых версиях Excel её нужно вводить через Ctrl+Shift+Enter, в новых хватает Enter. И ведущие нули она не спасает: текст «00123» и число «123» так и останутся разными кодами. Я бы сам про это забыл.
Три причины #Н/Д, которые не видно глазами
Глазами из этих пяти причин не видно ни одной. Пробел в конце клетки выглядит как пустота. Число и текст выглядят как одинаковые цифры. Латинская «С» в коде «С-102» ничем не отличается от русской.
Меня больше всего удивила третья причина. Я знал про обычные пробелы и про СЖПРОБЕЛЫ, но не знал, что у выгрузок бывает «неразрывный» пробел, который эта функция не трогает. Формула из ответа убирает его отдельно, через ПОДСТАВИТЬ и СИМВОЛ(160).
Что делает итоговая формула, если разобрать её по кускам:
`A2&""` превращает код в текст, даже если он был числом. Так коды на обоих листах сравниваются как текст.
`ИНДЕКС` и `ПОИСКПОЗ` делают ту же работу, что ВПР, только по очищенным кодам.
`ЕСЛИОШИБКА` пишет «нет на складе» вместо #Н/Д.
Формула длинная, но вставляется один раз и протягивается на весь столбец. Диапазон до 10 000 строк я оставил как есть, у сестры строк меньше.
Как за минуту понять, какая причина у тебя
Не надо проверять всё подряд. Возьми одну строку с #Н/Д и найди тот же код на складе. Дальше три быстрые формулы в любой свободной клетке:
`=ДЛСТР(A2)` на обоих листах. Если на одном 5, а на другом 6, там лишний пробел.
`=ЕТЕКСТ(A2)` на обоих листах. Если на одном ИСТИНА, а на другом ЛОЖЬ, код записан по-разному: где-то текстом, где-то числом.
`=A2=Склад!A15`, где A15 — строка с тем же кодом. ЛОЖЬ при одинаковом виде значит, что дело в одной из первых двух причин или в невидимом символе.
У сестры сработала вторая проверка. Склад она выгружала из учётной программы, и коды там пришли текстом. В заказах она набирала их руками, и Excel сохранил их числами.
Что видишь · Вероятная причина · Чем проверить · Что делает итоговая формула
Длина кода разная — Пробел в начале или в конце — ДЛСТР — СЖПРОБЕЛЫ убирает лишние пробелы
ЕТЕКСТ даёт разное — Число на одном листе, текст на другом — ЕТЕКСТ — Приводит оба кода к тексту
Всё одинаково, а сравнение ЛОЖЬ — Неразрывный пробел из выгрузки — КОДСИМВ первого и последнего знака — Убирает СИМВОЛ(160) через ПОДСТАВИТЬ
Коды с буквами не находятся — Латинская буква вместо русской — Перепечатать код руками и сравнить — Не исправляет, нужна замена букв
#Н/Д только у новых строк — Диапазон не захватывает новые коды — Посмотреть адрес диапазона — Целые столбцы A:C не обрезаются
Что я делаю теперь, когда таблица ведёт себя странно
Из этой истории я вынес три правила. Они пригодились уже дважды, и оба раза не про ВПР.
Описываю нейросети устройство таблицы, а не только формулу: какие листы, что в каких столбцах, откуда пришли данные. Фраза «склад выгружен из программы» сразу наводит на мысль про текст и пробелы.
Прошу порядок проверки, а не одно решение. Одно решение может закрыть не ту причину, а порядок показывает, где смотреть.
Проверяю ответ на трёх строках, где знаю правильный результат. Если формула верна на них, ставлю её на весь столбец.
Нейросеть для работы с таблицами бесплатно справляется с такими вопросами: на тарифе «Искатель» можно описать таблицу и получить формулу с объяснением. Файл Excel тоже можно прикрепить к сообщению, и LibraChat ответит по содержимому. В приложении на телефоне таблицы в выборе файлов могут быть не видны, поэтому файлы я прикладываю в браузере.
Нейросеть для работы с таблицами Excel: что ещё у неё спрашивают
После истории с ВПР сестра стала спрашивать чат про таблицы регулярно. Я попросил её показать, о чём. Почти всё укладывается в четыре вида вопросов:
Задача · Как она звучит в запросе
Сумма по условию — «Посчитай выручку по каждому менеджеру: имена в столбце B, суммы в D»
Дубли — «Найди формулой повторяющиеся телефоны в столбце C и пометь их»
Разбить клетку — «В столбце A ФИО одной строкой, раздели на три столбца»
Подсветка — «Как подсветить красным строки, где остаток меньше 5»
У всех четырёх одно общее: в запросе есть адреса столбцов и пример того, что лежит в клетках. Без этого ответ будет общим, с этим получаешь формулу, которую можно сразу вставить.
И вот что мне понравилось больше всего. Сестра стала просить не только формулу, но и объяснение, что делает каждая её часть. Через месяц половину формул она пишет сама. По-моему, это лучший результат, чем просто рабочая таблица.
Сверка с реальностью остаётся за тобой
Формула из ответа работает на той таблице, которую ты описал. Если описал неточно, например перепутал столбцы, формула будет аккуратной и неверной. Поэтому проверка на трёх известных строках обязательна, это не перестраховка.
И ещё. Про сами остатки чат ничего знать не может. Если на складе ошибка в цифре, ВПР честно подтянет ошибку. Сверка с реальностью остаётся за тобой.
Нейросеть для работы с таблицами: проверь на своей
У тебя наверняка есть таблица, где одна формула капризничает. Открой LibraChat, опиши листы и столбцы так же, как я выше, вставь свою формулу и напиши, что именно выходит не так. Попроси порядок проверки и одну итоговую формулу. Попробуй, спорим, причина окажется в том, чего не видно глазами?
Бесплатного тарифа для этого хватает. Если таблицы у тебя каждый день и большие, посмотри, что дают платные тарифы для подробного анализа файлов.
нейросеть для работы с таблицамиexcelВПРформулыошибка #Н/ДLibraChat