ВПР, который на самом деле работает

Макрос для Excel, который обновляет цены и остатки по прайс-листам поставщиков. Понимает кривые артикулы, работает с двумя ключами, не ломает твою скидку.

Excel 2016+ Без установки Локальная работа
vlookup-app.xlsm — Модуль1 VBA
' Три кнопки — весь процесс
Sub AutoLoadData()
    ' Загружает выгрузку сайта и прайс поставщика
    ' Автоматически создаёт копию файла
End Sub

Sub NormalizeAndComparePrices()
    ' ВПР по двум артикулам
    ' Нормализация: А→A, пробелы, дефисы
    ' Учитывает суффиксы, не трогает скидки
End Sub

Sub ExportUpdatedData()
    ' Сохраняет в копию файла выгрузки
    ' Готово к загрузке на сайт
End Sub

Как это началось

Я администрировал интернет-магазин и каждый день — обновлял цены по прайсам. Делаешь эту формулу в Excel, протягиваешь, двигаешь-копируешь-вставляешь. Потом оказывается, что у этого поставщика пробелы в артикулах — надо убирать, а здесь наши контентщики накосячили и поставили русскую "А" вместо английской. И так без конца.

В конце концов решил, что проще разобраться в VBA и сделать один раз хороший инструмент и закрыть проблемы навсегда.

Сначала написал простой макрос. Потом добавил нормализацию артикулов. Потом — второй артикул для обработки. Потом решил, что настройки можно вынести из кода VBA в лист, чтобы можно было легко что-то подправить. А потом понял, что этот инструмент может пригодится кому-то еще. Так появился этот сайт.

Сейчас этот макрос доступен тебе. Бесплатно, до 5000 строк. Если нужно больше или моих базовых настроек не хватает для твоих задач — пиши, я буду рад помочь.

Что умеет макрос

Не просто ВПР, а полноценное решение для обновления цен

ВПР по двум артикулам

Сначала ищет по основному артикулу. Если не нашёл — по второму (штрих-коду, например). Двойная подстраховка от ошибок.

Нормализация артикулов

Убирает лишние пробелы, заменяет русские буквы на английские (А→A, В→B, С→C), приводит к верхнему регистру. Настраивается.

Суффиксы для своих товаров

Добавь суффикс к артикулу — и макрос не будет трогать склад или цену у этих позиций. Твоя наценка останется.

Скидки и старые цены

Поддерживает формат "новая цена / старая цена". Если у поставщика есть старая цена — макрос перенесёт её. Нет — оставит твою.

Автоматические копии

При загрузке данных макрос создаёт копию файла выгрузки. Все изменения сохраняются в неё — оригинал не трогается.

Статистика и логи

Показывает, сколько цен изменилось, сколько не нашлось, есть ли сильные скачки (>20%). Пишет логи по брендам.

Подводные камни артикулов

Почему стандартный ВПР не справляется

1. Русские и английские буквы

AB-12345 — у тебя на сайте
АВ-12345 — в прайсе поставщика (русские А и В!)
AB-12345 — после нормализации совпадут

Это самая частая ошибка. Визуально идентично, для Excel — разные. Макрос заменяет все русские аналоги на английские: А→A, В→B, С→C, Е→E и т.д.

2. Точка vs дефис — разные товары

FR.4521.12 — товар А, цена 5000₽
FR-4521-12 — товар Б, цена 8500₽
Если убрать точки и дефисы — получишь хаос в ценах!

Встречал у одного бренда: артикулы идентичны по цифрам, но разница в одном символе — и это разные товары с разными ценами. Поэтому нормализацию можно настраивать точечно.

3. Регистр имеет значение

abc-123 — у тебя
ABC-123 — у поставщика

Технический нюанс: стандартная функция ВПР нечувствительна к регистру. Но в VBA сравнение строк по умолчанию чувствительное — «abc» и «ABC» разные. Макрос приводит всё к верхнему регистру, если тебе это подходит.

4. Пробелы и невидимые символы

"12345 " — пробел в конце
"12 345" — пробел в середине
"12345 " — неразрывный пробел (Alt+0160)

Поставщики любят копировать из 1С или других систем — и тащат за собой «мусор». Макрос вычищает все невидимые символы перед сравнением.

Как работать с макросом

Три кнопки, два файла, одна настройка

1

Загрузить данные

Выбираешь два файла: сначала выгрузку с сайта, потом прайс поставщика. Макрос автоматически:

  • Создаст копию файла выгрузки
  • Предложит выбрать лист в прайсе
  • Загрузит данные в рабочий лист
2

Обновить

Макрос запускает ВПР по двум артикулам с нормализацией:

  • Найдёт совпадения по артикулам
  • Обновит цены и остатки
  • Покажет статистику изменений
Логика скидок: «новая цена» — цена со скидкой, «старая цена» — зачёркнутая. Если старая цена появляется у поставщика — макрос перенесёт её как акцию.
3

Сохранить

Макрос переносит обновлённые данные в файл-копию:

  • Сохранит в нужные столбцы
  • Файл готов к загрузке на сайт
  • Никакого Ctrl+C / Ctrl+V

Лайфхак для нескольких поставщиков

Когда много прайсов от разных поставщиков, удобнее создать в каждом файле отдельный лист и скопировать туда столбцами артикул, цену, склад и т.д. — именно то, что обновляешь. Так меньше кликов при выборе листа.

P.S. В мире пока не существует системы, которая автоматически понимает, где в прайсе поставщика нужные данные. Поставщики слишком креативные.

Лист «Настройки»

Укажи, в каких столбцах лежат данные

Параметр Пример значения Описание
Имя листа Выгрузкиbrands_santehnicaНазвание листа в рабочем файле для данных сайта
Имя листа ПоставщикаПрайсНазвание листа для данных поставщика
Р-С_Артикул1AСтолбец с основным артикулом сайта
Р-С_Артикул2BСтолбец со вторым артикулом (штрих-код и т.п.)
Р-С_Цена новаяCСтолбец с текущей ценой на сайте
Р-С_Цена стараяDСтолбец со старой (зачёркнутой) ценой
Р-С_СкладEСтолбец с остатками
Р-П_Артикул1AСтолбец с артикулом в прайсе поставщика
Р-П_Цена новаяBСтолбец с ценой поставщика
И-С_Имя листа в файлеSheet1Название листа в файле выгрузки с сайта
И-П_Столбец Артикул основной1Номер столбца в файле прайса поставщика
Важно: Столбец A на листе настроек нельзя изменять — там названия параметров. Меняй только значения в столбце B.
Настройка нормализации артикулов

В разделе «ЗАМЕНА И УДАЛЕНИЕ СИМВОЛОВ» можно настроить, какие символы удалять или заменять:

"." → ""     ' удалить точки
"-" → ""     ' удалить дефисы
" " → ""     ' удалить пробелы

В разделе «ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ»:

  • Замена русских букв на английские — Да/Нет
  • Преобразовать в верхний регистр — Да/Нет
Настройка суффиксов

Суффиксы позволяют защитить некоторые товары от обновления. Добавь суффикс к артикулу на своём сайте — и макрос будет знать, что делать:

ТипПоведение макроса
1Не обновляет склад (цена обновляется)
2Не обновляет ни склад, ни цену

Пример: артикул ABC-123_wh с типом 1 — цена обновится, склад останется твоим.

Важно

Безопасность и локальная работа

Это не онлайн-сервис. Макрос работает только на твоём компьютере, в твоём Excel. Никакие данные не уходят в интернет.

Что гарантируется

  • Нет интернет-запросов. Макрос не делает запросов к внешним серверам, не отправляет данные о ценах, скидках, артикулах.
  • Работа только с твоими файлами. Макрос обрабатывает только те файлы, которые ты сам выбираешь через диалог.
  • Конфиденциальность коммерческих данных. Твои наценки, скидки, базы поставщиков — всё остаётся только на твоём компьютере.

Почему код под паролем?

Код VBA защищён паролем по нескольким причинам:

  • - Защита от случайных изменений. Пользователь не сможет случайно удалить или изменить строку кода и потом жаловаться, что «макрос не работает».
  • - Целостность функционала. Логика работы проверена и отлажена. Модификации могут привести к ошибкам в данных.
  • - Коммерческая защита. Это мой труд, который я бесплатно предоставляю с ограничениями. Если нужен открытый код — обсудим условия.

Как самостоятельно проверить безопасность

Ты можешь убедиться в безопасности файла самостоятельно. Вот что можно сделать:

1. Проверка антивирусом

Перед открытием файла проверь его антивирусом:

  • - Кликни правой кнопкой мыши на файл → «Проверить на вирусы»
  • - Или загрузи файл на VirusTotal.com — бесплатный сервис, который проверяет файл десятками антивирусов одновременно

2. Проверка сетевой активности

Можешь убедиться, что макрос не лезет в интернет:

  • - Открой «Монитор ресурсов» (Resource Monitor) в Windows — он показывает сетевые запросы каждого процесса
  • - Запусти макрос и убедись, что Excel не отправляет никаких данных
  • - Или временно заблокируй Excel в файрволе — макрос должен работать без интернета

3. Разблокировка файла Windows

Windows блокирует файлы, скачанные из интернета. Это стандартная защита. Чтобы разрешить выполнение:

  1. Кликни правой кнопкой на файл → Свойства
  2. Внизу поставь галочку «Разблокировать» (если есть)
  3. Нажми ОК

Это безопасно — ты просто разрешаешь Excel запустить этот конкретный файл.

4. Посмотреть структуру файла

Открой файл в Excel и посмотри листы:

  • - Настройки — обычная таблица с параметрами
  • - Выгрузка — сюда загружаются данные с сайта
  • - Поставщик — сюда загружается прайс
  • - Никаких скрытых листов с подозрительным содержимым

Доверяй, но проверяй

Если у тебя остались сомнения — напиши мне. Могу предоставить открытый код для аудита (под NDA или просто так — обсудим). Также можешь найти знакомого, кто разбирается в VBA, и попросить его проверить код после снятия пароля.

Прозрачность — лучший способ доверия. Я не прячусь и открыт к диалогу.

Бонус

Поиск новинок

Ещё один макрос в комплекте — для контент-менеджеров

Что делает

Сравнивает прайс поставщика с товарами на твоём сайте и находит позиции, которых у тебя ещё нет.

  • Подгружаешь артикулы с сайта в столбцы A, B, C
  • Выбираешь файл или папку с прайсами поставщика
  • Макрос сканирует и удаляет строки с совпадениями
  • Создаёт файл только с новинками

Особенности

  • Работает с объединёнными ячейками (своя логика)
  • Можно сканировать сразу папку с файлами
  • Подсветит найденные строки цветом
  • Обновляет статус в базе: «Да» / «Нет»
Пример результата
' До: прайс поставщика (500 строк)
Артикул | Название        | Цена
A-001   | Смеситель       | 5000
A-002   | Кран            | 3000
A-003   | Раковина NEW   | 8000  ' ← новинка!
B-100   | Унитаз          | 12000

' После: только новинки
Артикул | Название        | Цена
A-003   | Раковина NEW   | 8000

Удобно, когда поставщик присылает «всё подряд», а тебе нужно добавить только то, чего ещё нет.

Скачать vlookup-app

Бесплатно. Работает локально. Без регистрации.

Скачать .xls

Есть вопросы или идеи?

Напиши — отвечу на всё, что связано с автоматизацией Excel

Доработка этого макроса

  • - Увеличение лимита строк
  • - Поддержка другого формата скидок
  • - Интеграция с твоей CMS
  • - Дополнительные поля для обновления

Индивидуальные решения

  • - Макросы VBA на заказ
  • - Автоматизация отчётности
  • - Обработка данных из разных источников
  • - Интеграция Excel с другими системами

Даже если макрос просто помог тебе в работе — напиши. Буду рад отзыву, знакомству или просто обсуждению твоих задач по обработке данных.