Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нужна помощь по написанию макроса Exel
Ukrainian NEXIA CLUB (Украинский Нексия Клуб) > Nexia клуб > Всё про всё
Puric
Вопрос собственно, есть макрос который формирует из общего списка адресов по рассылке газет новый список но уже без дубликатов по адресу (тоесть сравнение не по фамилии а по адресу, неважно в принципе)

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

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

Файл с макросом для екселя 2007(много строк для 2003) приложил...(первый лист кусочек списка, второй самы кнопки запуска макроса)
Вопрос, кто то может посоветовать=поправить макрос на кнопке "Общие пересечения" (макрос Кнопка2_Щелчок)

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

Пример реализации тут. Есть масса других способов, но этот самый явный. Все это можно сделать макросом даже без знания бейсика.

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

Пример реализации тут. Есть масса других способов, но этот самый явный. Все это можно сделать макросом даже без знания бейсика.

Еще попробуй вот это - пользуюсь довольно старой версией, но и она много умеет. В новой наверняка наворотили еще больше.


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

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

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

Вот такая ерунда в прошлом году заняла две недели труда у 3 человек....создав этот макрос я сузил время до 24 часов....но осталась проблема, запускаю мокрос с перерывом на каждой 20 тыс.
Puric
За ПЛЕКС спасибо....попробую поюзать...похоже что надо!
RosT
А функцией ВПР() пользоваться не пробовал для сопоставления данных с первого списка со вторым. Работы максимум на 5 минут. Единственный минус, если адреса написаны по разному(нет точного совпадения), то до одного места обработка будет.
Puric
Цитата(RosT @ 9.2.2013, 8:19) *
А функцией ВПР() пользоваться не пробовал для сопоставления данных с первого списка со вторым. Работы максимум на 5 минут. Единственный минус, если адреса написаны по разному(нет точного совпадения), то до одного места обработка будет.

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

Но все же вопрос открыт. Может кто то сможет подсказать в чем проблема кода!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2025 IPS, Inc.