Power Query: как найти продажи без товара в справочнике
В отчёт загрузили продажи нового месяца и присоединили справочник себестоимости. Часть товаров появилась впервые. Если удалить строки без совпадения, выручка уменьшится; если заменить неизвестную себестоимость нулём, вырастет расчётная маржа. Правильнее сохранить продажи и выделить неизвестные товары в отдельную очередь исправления.
Сначала договоритесь, какая таблица главная
В этой задаче каждая строка продаж должна остаться в результате. Поэтому начинайте с левого внешнего объединения: слева продажи, справа справочник. В редакторе Power Query выберите запрос продаж, команду объединения запросов, справочник и одинаковые ключевые столбцы. Тип ключа должен совпадать: текстовый артикул нельзя надёжно сопоставить с числом, которое потеряло ведущие нули.
До объединения проверьте уникальность артикула в справочнике. Если цена зависит от периода или склада, один артикул не описывает нужную строку. Сначала определите полный ключ и только затем присоединяйте значения.
Сохраните признак отсутствующего совпадения
После объединения Power Query создаёт вложенную таблицу для каждой строки. До раскрытия можно посчитать число совпадений. Ноль означает неизвестный ключ, единица — однозначное совпадение, больше единицы — неоднозначный справочник. В M операция выглядит так; Sales и Products — уже подготовленные запросы с текстовым SKU.
let
Joined = Table.NestedJoin(Sales, {"SKU"}, Products, {"SKU"}, "Product", JoinKind.LeftOuter),
Checked = Table.AddColumn(Joined, "MatchCount", each Table.RowCount([Product]), Int64.Type)
in
Checked
Что делать с неизвестной себестоимостью
Раскройте стоимость для совпавших строк, а записи с MatchCount=0 вынесите в отдельный запрос ссылкой. В нём сгруппируйте неизвестные SKU и добавьте выручку или количество продаж: владелец справочника увидит приоритет исправления. Не подменяйте неизвестное значение нулевой стоимостью, если такой смысл не задан правилами учёта.
Выручку можно показать полностью, а маржу — только для строк с подтверждённой себестоимостью, с отдельным показателем покрытия. В отчёте должно быть видно, что часть товаров пока не оценена. Тогда пользователь не перепутает технический пропуск с высокой прибылью.
Примите обновление контрольными числами
Для маленькой проверки возьмите продажи A на 100 и B на 200, а в справочнике оставьте только A. После левого объединения должны сохраниться две продажи и выручка 300. B появится в очереди неизвестных. После добавления B в справочник повторное обновление должно убрать его из очереди без ручного редактирования результата запроса.
Сравните сумму до и после объединения. Если она выросла, ищите несколько совпадений справа. Если уменьшилась, проверьте тип объединения и фильтры после раскрытия. Удобно хранить контрольный итог отдельным запросом, чтобы проверка повторялась на следующем месяце.
В рабочем процессе назначьте владельца справочника. Аналитик сообщает отсутствующие ключи, владелец добавляет корректные сведения, отчёт обновляется повторно. Исправление в итоговой таблице Excel пропадёт при обновлении, поэтому править надо источник или отдельную управляемую таблицу корректировок.
Соберите обновляемый отчёт на практике
В платном курсе вы объедините выгрузки со справочниками и научитесь проверять отсутствующие ключи. В практикуме по продажам и марже нужно обновить отчёт при появлении нового товара и сверить контрольные числа. Это позволяет отработать весь цикл: найти пропуск, исправить источник и получить проверенный отчёт следующего месяца.
Откройте программу курса «Продвинутый Excel: Power Query, Power Pivot и автоматизация отчётов».
Начните с пробного урока о рабочей книге и первом запросе Power Query.
Для следующего этапа: объединение файлов из папки и обновление отчёта.
Продолжить на практике
- Продвинутый Excel: Power Query, Power Pivot и автоматизация отчётов ↗
Научитесь собирать и обновлять рабочие отчёты в Excel. Power Query для загрузки и очистки данных, сложные формулы, Power Pivot и DAX для расчётов. Практикумы по продажам, остаткам и закупкам, план-факту подразделений.
