Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Сравнение прайс-листов

    Сравнение прайс-листов из кода VBA Excel с помощью массивов: сравнение номенклатуры, добавление новых позиций, корректировка цен на конкретном примере.

    Данные для сравнения прайс-листов

    Исходный прайс-лист (лист Price текущей рабочей книги ThisWorkbook):

    Поступивший прайс-лист (единственный лист файла Price1.xlsx):

    Имя файла с поступившим прайс-листом значения не имеет, так как мы будем его выбирать с помощью стандартного диалога выбора файлов.

    Для фиксации результатов сравнения прайс-листов создадим новый лист NewPrice в книге ThisWorkbook и внесем в него информацию из исходного и поступившего прайс-листов:

    • Добавим на лист NewPrice все позиции номенклатуры исходного листа Price и новые позиции из поступившего файла Price1.xlsx.
    • На новом листе NewPrice заменим цены совпадающих позиций номенклатуры в исходном и поступившем листах на цены поступившего листа, увеличенные на 10% с округлением до рублей (сделаем наценку).
    • Увеличим на листе NewPrice цены новых позиций на 10% с округлением до рублей (сделаем наценку).
    • Скопируем форматы столбцов таблицы на листе Price в таблицу на листе NewPrice.

    В результате должна получиться следующая таблица (без окончательной сортировки по алфавиту, чтобы были видны добавленные снизу новые позиции номенклатуры):

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

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

    Сравнение прайс-листов в VBA Excel

    Код VBA Excel для сравнения двух прайс-листов с подробными комментариями:

    Результат работы кода в виде таблицы с окончательной сортировкой по алфавиту и границами ячеек:

    При запуске процедуры SravneniyePraysListov книга с кодом должна быть активной, поэтому мы добавили строку ThisWorkbook.Activate. Например, если мы вручную откроем книгу Price1.xlsx, которая станет активной, и запустим процедуру SravneniyePraysListov из редактора VBA, то получим кучу ошибок, так как использовали короткие ссылки: на листы без указания книги и на диапазоны без указания книги и листа.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    Добавить комментарий

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