Страница 1 из 2
Помогите в создании макроса сравнения двух документов Excel
Добавлено: 11 июн 2014, 17:38
Aliver
Доброго времени суток, уважаемые.
Если не затруднит, помогите в решении проблемки.
Есть две таблицы Ведомость1 не структурированный документ с объединенными ячейками и Ведомость2 относительно упорядоченный документ.
Хотелось бы чтобы при выборе наименования в Ведомость1 проверялось бы наличие данного товара в Ведомость2 при наличии сходства сравнивались бы цены и количество. При одинаковых результатах к примеру изменить цвет1 соответствующих ячеек в обоих таблицах. При отличных результатах проверки выделить другим цветом2. При отсутствии совпадений при поиске товара отметить этот товар цветом3
В результате перебора строк в Ведомость1 останутся не подсвеченными строки в Ведомость2 которые не сравнивались.
Большое человеческое спасибо откликнувшимся.
Re: Помогите в создании макроса сравнения двух документов Excel
Добавлено: 11 июн 2014, 18:03
pashulka
Aliver, Стесняюсь спросить, а что означает, цитирую "… при выборе наименования в Ведомость1" ?
Проще говоря, как Вы собираетесь выбирать нужный товар(наименование) в ведомости ?
И если конечной целью является - перебор всех строк в "Ведомость1", то не проще ли обойтись без выбора конкретного товара, а просто перебрать все наименования программно.
Re: Помогите в создании макроса сравнения двух документов Excel
Добавлено: 11 июн 2014, 22:12
Aliver
Спасибо Вам большое за желание помочь.
Как я уже говорил Ведомость1 плохо структурированный документ, выбрать там строчку с названием программно по моему проблематично. Ведомость2 документ чуть лучше организован но тоже не идеал, есть ячейки не относящиеся к сути решения вопроса. Поэтому алгоритм сравнения я бы выбрал такой:
1.По горячей клавише Макроса, после того как пользователь сделал нужную ячейку с товаром активной
2. Макрос считывает значение ячейки, помещает в буфер, производит по нему поиск в ячейках Ведомость2.
3. Если нет совпадений красим ячейки в двух таблицах в цвет3.
3. Если присутствует совпадение считываем в Ведомость1 ячейку Цена и сравниваем ее с ячейкой цена в Ведомость2 по результатам красим ячейки в двух ведомостях в цвет1 или цвет2.
4. то же самое с количеством
5. конец работы макроса
Далее пользователь выбирает в Ведомость1 другой товар и вновь запускает макрос.
Спасибо за понимание. Возможно алгоритм и не оптимален, но на мой взгляд при такой организации ячеек нет другого подхода. Если предложите другой вариант решения, большое спасибо, но все же просьба прислушаться к моему.
Re: Помогите в создании макроса сравнения двух документов Excel
Добавлено: 11 июн 2014, 22:31
pashulka
Aliver, Если Вы ничего не скрываете от общественности

то определить ячейку с товаром несложно (собственно, эта ячейка не пустая и не об'единена с другими ячейками), так что можно их и перебрать (см. пример, где всё расписано очень подробно, возможно даже слишком ...)
Только имейте ввиду, что в момент выполнения макроса обе книги должны быть открыты. Если есть вероятность, что "Ведомость2" может быть закрыта, то её можно, либо программно открыть, либо отказаться от поиска (метод Find) и воспользоваться стандартной функцией рабочего листа =ВПР() которую можно вызвать в макросе.
Re: Помогите в создании макроса сравнения двух документов Excel
Добавлено: 11 июн 2014, 23:19
Aliver
Огромное спасибо за помощь. Не надеялся даже что в Мире остались люди готовые на оперативную и безвозмездную помощь начинающим. Огромное Вам за это уважение.
Не сочтите за наглость, пока разбираюсь с Вашим макросом, на первый взгляд такой немного отрицательный момент. Хотелось бы, чтобы Ведомость2 так же отмечалась теми же цветами. Тогда можно было бы точно определить тот момент, что например строка 15 в Ведомости2 просто отсутствует в Ведомости1.
А так истинные документы посложнее приведенных примеров, пытаюсь применить Ваш макрос там, о результатах обязательно сообщу.
И еще раз большое спасибо, выручаете.
Re: Помогите в создании макроса сравнения двух документов Excel
Добавлено: 11 июн 2014, 23:50
pashulka
Почему же сразу отрицательный

просто я надеялся, что после изучения макроса, любой сможет самостоятельно изменить цвет заливки и во второй ведомости и сравнить не только цену, но и количество. Но если времени на изучение VBA нет, то смотрите расширенную версию макроса.
Re: Помогите в создании макроса сравнения двух документов Excel
Добавлено: 12 июн 2014, 13:55
Aliver
Доброго времени суток.
Еще раз большое спасибо за помощь. Ваш макрос безусловно работает на моем примере. Только вот когда пытаюсь применить его к реальной задаче что то не срастается

у меня конечно, к Вам претензий абсолютно никаких.
Из того что удалось найти и разобраться:
у Вас нет поиска если ячейка объединенная... а это как раз мой случай... убрал это ограничение
все равно не работает. Как выяснил в сравниваемых ячейках текст отличается пробелами...
Если не очень затруднит еще раз помочь или подсказать в какую хоть сторону смотреть.
Прикрепляю оригиналы документов с которыми предстоит работать.
Большое человеческое спасибо Вам.
Re: Помогите в создании макроса сравнения двух документов Excel
Добавлено: 12 июн 2014, 15:47
pashulka
С лишними пробелами (которые кстати, наличествуют в обоих файлах, причём как в конце текста, так и в его начале) можно бороться следующим образом (см. пример)
К сожалению, текст отличается не только пробелами, так что, если действовать по уму, то нужно приводить в порядок базы данных, откуда черпаются подобные расхождения :
Гель Санфор-WC SPECIAL 750/15 д/генер,уб
Гель Санфор-WC SPECIAL 750/15 д/генер,убор,
Или, как всегда, героически преодолевать собственно-ручно созданные проблемы, в данном случае, написать ещё один макрос, где пользователь сможет ещё раз пошукать отсутствующий товар, где при поиске будет отбрасываться некоторое количество правых символов(как вариант, слов)
Re: Помогите в создании макроса сравнения двух документов Excel
Добавлено: 12 июн 2014, 16:09
Aliver
Огромаднейшее спасибо

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

Тем не менее творение Ваших рук позволяет существенно упростить жизнь. Буду пробовать разбираться в Вашем коде, курить матчасть и пытаться бороть пробелы.
Огромнейшее Вам уважение и еще раз спасибо.
Re: Помогите в создании макроса сравнения двух документов Excel
Добавлено: 12 июн 2014, 19:40
pashulka
Лишние пробелы (в нужных столбцах) удаляются в самом начале макроса, просто эти изменения не сохраняются, чтобы Вы могли от них отказаться ... так что с этой проблемой, вроде как, можно и не бороться
А что касается разницы в наименованиях, то мы можем отсечь некоторое количество "лишних" символов (собственно, то о чём говорилось в моём прошлом сообщении). Правда, это работает только если искомый текст, содержит большее количество символов, чем текст, где осуществляется поиск, но это, как раз, Ваш случай (см. модуль)
P.S. Обратите внимание на то, что чем больше символов, Вы отбрасываете, тем больше время выполнения макроса, но и больше вероятность, что-то найти (причём, не обязательно нужное, ибо если отсечь у 'молока' 50% то будет найден 'мол') так, например, при -10% находится 5 наименований, а при -25% уже 15