На текущий момент весь анализ провожу глазками. С формулами не сталкивался. Как по мне, условий много, из за чего писал много, дабы раскрыть все детали анализа.
Столбцы A / B / C / G - хранили конфиденциальную информацию и для оформления примера были отчищены от содержимого. Содержимое других колонок были изменены на более приятные к нашему слуху значения, но суть анализа не изменилась.
Как работает система?
Имеется система учета поставки товаров до потребителя. Заполняется она удаленно, всеми поставщиками товаров. Вся информация собирается в одну БД. Система делает выгрузку БД на HDD, каждые 7 день после окончания рабочей недели, всех доставленных товаров со своими внутренними параметрами. В итоге получаем excel файлы с разными датами выгрузки, но с недельным периодом.
Задача стоит следующая.
Сравнивать файлы предыдущей выгрузки с выгрузкой текущей. Если изменения имеются, то внести их в таблицу (назовем ее Сводные данные) с пометкой даты сверки. При наступлении следующей выгрузки, проверять с предыдущей, снова внести все изменения в таблицу "Сводные данные" со пометкой даты сверки. И так не переставая, сравнивать одну выгрузку с другой, и вносить изменения.
Структура выгружаемого файла не меняется, меняется только его содержимое. Это изменение и надо найти в файлах между разными датами выгрузки.
Система присваивает имена выгружаемым файлам в следующем формате.
hardware_2019-09-15
hardware_2019-09-22
hardware_2019-09-29
hardware_2019-10-06
Для примера прикрепил файлы с данными и файл "Сводные данные" куда необходимо собирать всю измененную информацию.
Название столбцов в файлах типа hardware_:
Столбец D - SITE - Место доставки товара. Потребитель. (значение является ключевым для проведения сверки между файлами выгрузки).
Столбец E - BOARD_TYPE - Тип доставленного товара.
Столбец F - BOARD_SUM - Количество доставленного товара (неразрывна с колонкой BOARD_TYPE).
Столбец H - SITE_TYPE - Откуда пришел товар.
Столбец I - Power Type - В какой таре пришел товар.
Сверяются следующие столбцы в файлах с данными, в той же последовательности и выводятся в таблицу при ее обнаружении.
Столбец E - BOARD_TYPE и Столбец F - BOARD_SUM из предыдущей выгрузки, с Столбцом E - BOARD_TYPE и Столбцом F - BOARD_SUM текущей.
Столбец H - SITE_TYPE из предыдущей выгрузки, с Столбцом H - SITE_TYPE текущей.
Столбец I - Power Type из предыдущей выгрузки, с Столбцом I - Power Type текущей.
Методы анализа.
Если в Текущем и Предыдущем файле данные в колонках совпадают то это означает - что тип и список товара не менялся.
Если в Текущем файле появилась новая запись по типу и количеству товара, а в Предыдущем файле такой записи нет – то это означает доставка нового товара.
Если в Текущем файле отсутствует запись по типу и количеству товара, а в Предыдущем файле запись имеется – то это означает не поставку товара, ранее поставляемого товара.
Если в Текущем файле изменилось количество товара без изменения имени в большую сторону, исходя из данных о количестве и имени товара в Предыдущем файле - то это означает доставка нового товара.
Если в Текущем файле изменилось количество товара без изменения имени в меньшую сторону, исходя из данных о количестве и имени товара в Предыдущем файле - то это означает не поставку товара, ранее поставляемого товара.
Таблица "Сводные данные" должна хранить в себе все найденные изменения по всем дням сверки.
Сверка происходит между новым выгруженным файлом и предыдущим. Найденные значение вносят в таблицу. При появлении новой выгрузки, снова делается сверка между новым выгруженным файлом и предыдущим, со смещением на неделю.
Пример:
Имеем две выгрузки
hardware_2019-09-15 и hardware_2019-09-22.
Выгрузка hardware_2019-09-22 сравнивается с выгрузкой hardware_2019-09-15. Найденная информация записывается в файл и сохраняется под именем hardware_2019-09-22
Выгрузка hardware_2019-09-29. Она ужа сравнивается с выгрузкой hardware_2019-09-22. Найденная информация записывается в файл и сохраняется под именем hardware_2019-09-29
Выгрузка hardware_2019-10-06 уже сравнивается с hardware_2019-09-29 ну и т.д.