Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Ukrainian NEXIA CLUB (Украинский Нексия Клуб) _ Всё про всё _ Нужна помощь по написанию макроса Exel

Автор: Puric 8.2.2013, 14:07

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

Размер списка-исходника 166048 строк 12 столбов.
Макрос проводит сравнение с разбросом в 15 строк, помечая дубликаты как пройденные и зонося их в массив (массив в цикле, цикл через 15 елемонтов начинает с 1 заменяя данные)

Проблема, постепенное затупление обработчика, то есть к примеру на первой сотне от проходит 10-12 строй за секунду, на первом десятке тысяч уже 1-2 за секунду, на двадцатой тысяче уже за 2-3 секунды одну строку.

http://www.ex.ua/view/20104862(первый лист кусочек списка, второй самы кнопки запуска макроса)
Вопрос, кто то может посоветовать=поправить макрос на кнопке "Общие пересечения" (макрос Кнопка2_Щелчок)

Заранее спасибо....

Автор: RosT 8.2.2013, 22:58

Да уж, а еще сложнее макрос не могли придумать, все решается стандартными средствами, а не функциями поиска и созданием массивов. Короче перемудрили ИМХО.

Пример реализации http://www.ex.ua/view_storage/602950633605. Есть масса других способов, но этот самый явный. Все это можно сделать макросом даже без знания бейсика.

Еще попробуй вот http://www.planetaexcel.ru/plex/ - пользуюсь довольно старой версией, но и она много умеет. В новой наверняка наворотили еще больше.

Автор: Puric 9.2.2013, 0:10

Цитата(RosT @ 8.2.2013, 22:58) *
Да уж, а еще сложнее макрос не могли придумать, все решается стандартными средствами, а не функциями поиска и созданием массивов. Короче перемудрили ИМХО.

Пример реализации http://www.ex.ua/view_storage/602950633605. Есть масса других способов, но этот самый явный. Все это можно сделать макросом даже без знания бейсика.

Еще попробуй вот http://www.planetaexcel.ru/plex/ - пользуюсь довольно старой версией, но и она много умеет. В новой наверняка наворотили еще больше.


Сложность в чем....я то могу и в ручную отсортировать, НО сколько времени у меня уйдет на перебор 166 тысяч строк, да и потом их надо сравнить еще с 80 тысячами, и так раз в квартал...руками и глазами напряжно от того задача

Есть список льготной подписки на газету назовем №1 в нем 166 тыс строк - потенциальных получателей, НО по одному адресу могут проживать несколько людей из этого списка, это надо исправить, исключив дубликаты и сформировать новый список где из дубликатов (а на один адрес может проживать два и три, четыре) остаеться только ОДИН...
Далее есть список №2 ветеранской подписки, в нем 8 тысяч строк, и соответственно есть тоже дубликаты со списком №1 НО здесь важны фамилии, и при сортировке надо сделать так что бы приплюсавав его к списку №1 и выкинув дубликаты приоритетом адресата остался список №2.

Итоговым должен быть список для укрпочты, где одному адресу соответствует один экзеспляр газеты, причем (почему закрашиваю ячейки цветом) отдельно в списке должно быть выделенно адресатов списка №2....

Вот такая ерунда в прошлом году заняла две недели труда у 3 человек....создав этот макрос я сузил время до 24 часов....но осталась проблема, запускаю мокрос с перерывом на каждой 20 тыс.

Автор: Puric 9.2.2013, 0:22

За ПЛЕКС спасибо....попробую поюзать...похоже что надо!

Автор: RosT 9.2.2013, 8:19

А функцией ВПР() пользоваться не пробовал для сопоставления данных с первого списка со вторым. Работы максимум на 5 минут. Единственный минус, если адреса написаны по разному(нет точного совпадения), то до одного места обработка будет.

Автор: Puric 9.2.2013, 10:29

Цитата(RosT @ 9.2.2013, 8:19) *
А функцией ВПР() пользоваться не пробовал для сопоставления данных с первого списка со вторым. Работы максимум на 5 минут. Единственный минус, если адреса написаны по разному(нет точного совпадения), то до одного места обработка будет.

К сожелению иногда с пробелами траблы, и с вЫсоТОй (дом 12а или дом 12А или дом 12 А) строки, поэтому в код макроса еще внесена штука которая понижает все символы в строке и удаляет из нее пробелы.

Но все же вопрос открыт. Может кто то сможет подсказать в чем проблема кода!!!

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)