Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в 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 по тематическим разделам со ссылками на все статьи.