Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сравнение 2-х больших таблиц при помощи макроса - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение 2-х больших таблиц при помощи макроса (Макросы/Sub)
Сравнение 2-х больших таблиц при помощи макроса
Armagedon Дата: Пятница, 11.12.2020, 10:38 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Друзья, нужна Ваша посильная помощь.
Нужен макрос, который бы сравнивал две большие таблицы (Табл.1 - оригинал, Табл.2 - изменения).
Суть такова: в Табл.2 могут дополнятся строки и графы, отличные от строк и граф Табл.1. И нужно, чтобы маркос сравнивал построчные данные двух таблиц и подсвечивал в Табл.2 каждую измененную / добавленную ячейку, строку, графу. Как это можно сделать и можно ли?
Сам я плохо в макросах разбираюсь, поэтому прошу вашей компетентной помощи.
К сообщению приложен файл: Compare_tables-.xlsm (12.2 Kb)


Сообщение отредактировал Armagedon - Пятница, 11.12.2020, 10:39
 
Ответить
СообщениеДрузья, нужна Ваша посильная помощь.
Нужен макрос, который бы сравнивал две большие таблицы (Табл.1 - оригинал, Табл.2 - изменения).
Суть такова: в Табл.2 могут дополнятся строки и графы, отличные от строк и граф Табл.1. И нужно, чтобы маркос сравнивал построчные данные двух таблиц и подсвечивал в Табл.2 каждую измененную / добавленную ячейку, строку, графу. Как это можно сделать и можно ли?
Сам я плохо в макросах разбираюсь, поэтому прошу вашей компетентной помощи.

Автор - Armagedon
Дата добавления - 11.12.2020 в 10:38
Gustav Дата: Суббота, 12.12.2020, 00:59 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2731
Репутация: 1132 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
По поводу добавления граф в Таблицу 2 - довольно странное условие. Ведь новая графа - это новый столбец, новое поле, т.е. изменение структуры, после которого вся Таблица 2 автоматически переходит в категорию несовпадений.

И еще нужны ключевые поля в каждой таблице, т.е. поле (графа) или комбинация полей (граф), однозначно определяющие конкретную строку в каждой таблице. Что можно в вашем случае считать таким ключом? Графу "Наименование продукта"? Оно уникально, повторений не будет в ней?


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеПо поводу добавления граф в Таблицу 2 - довольно странное условие. Ведь новая графа - это новый столбец, новое поле, т.е. изменение структуры, после которого вся Таблица 2 автоматически переходит в категорию несовпадений.

И еще нужны ключевые поля в каждой таблице, т.е. поле (графа) или комбинация полей (граф), однозначно определяющие конкретную строку в каждой таблице. Что можно в вашем случае считать таким ключом? Графу "Наименование продукта"? Оно уникально, повторений не будет в ней?

Автор - Gustav
Дата добавления - 12.12.2020 в 00:59
Armagedon Дата: Суббота, 12.12.2020, 20:34 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Gustav, да, руководство часто может поставить странную задачу )) но надо исполнять.

По существу проблемы:
Ключевые (или уникальные) поля будут "Наименование продукта - Категория продукта - Количество - Ед.измер! - Стоимость за единицу - Ед.измер", то есть их сочетание / объединение в таком порядке.

Строки могут тоже появляться новые, это является меньшей критичностью?

Я уже рассматривал функцию ОБЪЕДИНИТЬ в Эксель, но тут задача подсветить. Услов.форматирование также мне не помогло.
Если есть какие-то варианты подходящего макроса?
 
Ответить
СообщениеGustav, да, руководство часто может поставить странную задачу )) но надо исполнять.

По существу проблемы:
Ключевые (или уникальные) поля будут "Наименование продукта - Категория продукта - Количество - Ед.измер! - Стоимость за единицу - Ед.измер", то есть их сочетание / объединение в таком порядке.

Строки могут тоже появляться новые, это является меньшей критичностью?

Я уже рассматривал функцию ОБЪЕДИНИТЬ в Эксель, но тут задача подсветить. Услов.форматирование также мне не помогло.
Если есть какие-то варианты подходящего макроса?

Автор - Armagedon
Дата добавления - 12.12.2020 в 20:34
Gustav Дата: Воскресенье, 13.12.2020, 16:58 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2731
Репутация: 1132 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Ключевые (или уникальные) поля будут "Наименование продукта - Категория продукта - Количество - Ед.измер! - Стоимость за единицу - Ед.измер", то есть их сочетание / объединение в таком порядке.
Не подходит. Такой ключ приведет к тому, что две строки с разницей лишь в одном поле, входящим в состав ключа, например, в количестве, просто будут считаться ДВУМЯ РАЗНЫМИ СТРОКАМИ. Думаю, это не то, что вы ожидаете от этого функционала.

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

Поэтому если в одной таблице в ключевом поле написано "ЯблокИ", а в другой - "ЯблокО", то это две разные несовпадающие строки (даже если все остальные поля попарно совпадают). И если по условиям общей задачи их следует считать одним и тем же, то сначала должна быть проведена работа по приведению к полному совпадению таких расхождений - хоть вручную! Иначе - это две разные строки, которые не должны сравниваться между собой по неключевым полям.

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


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Ключевые (или уникальные) поля будут "Наименование продукта - Категория продукта - Количество - Ед.измер! - Стоимость за единицу - Ед.измер", то есть их сочетание / объединение в таком порядке.
Не подходит. Такой ключ приведет к тому, что две строки с разницей лишь в одном поле, входящим в состав ключа, например, в количестве, просто будут считаться ДВУМЯ РАЗНЫМИ СТРОКАМИ. Думаю, это не то, что вы ожидаете от этого функционала.

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

Поэтому если в одной таблице в ключевом поле написано "ЯблокИ", а в другой - "ЯблокО", то это две разные несовпадающие строки (даже если все остальные поля попарно совпадают). И если по условиям общей задачи их следует считать одним и тем же, то сначала должна быть проведена работа по приведению к полному совпадению таких расхождений - хоть вручную! Иначе - это две разные строки, которые не должны сравниваться между собой по неключевым полям.

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

Автор - Gustav
Дата добавления - 13.12.2020 в 16:58
Gustav Дата: Воскресенье, 13.12.2020, 17:09 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2731
Репутация: 1132 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Обещанное решение на УФ. Ключевое поле одно - первое, "Наименование продукта". Если строка - новая, то подсвечиваются все поля, включая ключевое. В других строках подсвечиваются только расхождения.

История с новыми графами в состав решения не входит - по причине, которую я указал ранее (а начальство иногда надо стараться перевоспитывать и аргументированно прогибать под основы теории реляционных баз данных :))

Формулы на листе "Табл.2" для УФ такие (уважаем мобильных читателей форума). Для диапазона ключа - $B$4:$B$10 :
Код
=ЕНД(ПОИСКПОЗ($B4;Табл.1!$B:$B;0))

Для диапазона неключевых полей - $C$4:$G$10 :
Код
=ИЛИ(ЕНД(ПОИСКПОЗ($B4;Табл.1!$B:$B;0)); ЕСЛИОШИБКА(ИНДЕКС(Табл.1!C:C;ПОИСКПОЗ($B4;Табл.1!$B:$B;0))<>C4;ИСТИНА))
К сообщению приложен файл: CmpTbls03.xlsm (17.2 Kb)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеОбещанное решение на УФ. Ключевое поле одно - первое, "Наименование продукта". Если строка - новая, то подсвечиваются все поля, включая ключевое. В других строках подсвечиваются только расхождения.

История с новыми графами в состав решения не входит - по причине, которую я указал ранее (а начальство иногда надо стараться перевоспитывать и аргументированно прогибать под основы теории реляционных баз данных :))

Формулы на листе "Табл.2" для УФ такие (уважаем мобильных читателей форума). Для диапазона ключа - $B$4:$B$10 :
Код
=ЕНД(ПОИСКПОЗ($B4;Табл.1!$B:$B;0))

Для диапазона неключевых полей - $C$4:$G$10 :
Код
=ИЛИ(ЕНД(ПОИСКПОЗ($B4;Табл.1!$B:$B;0)); ЕСЛИОШИБКА(ИНДЕКС(Табл.1!C:C;ПОИСКПОЗ($B4;Табл.1!$B:$B;0))<>C4;ИСТИНА))

Автор - Gustav
Дата добавления - 13.12.2020 в 17:09
Armagedon Дата: Понедельник, 14.12.2020, 00:46 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Gustav, огромаднейшее СПАСИБО!!! Думаю, всех всё пока устроит! Поклон!
 
Ответить
СообщениеGustav, огромаднейшее СПАСИБО!!! Думаю, всех всё пока устроит! Поклон!

Автор - Armagedon
Дата добавления - 14.12.2020 в 00:46
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение 2-х больших таблиц при помощи макроса (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!