IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Нужна помощь по написанию макроса Exel, Нужка помощь в поправке кода!
Puric
сообщение 8.2.2013, 14:07
Сообщение #1


Почетный нексиавод
******

Группа: Пользователи
Сообщений: 2405
Регистрация: 28.3.2008
Из: Украина, Днепропетровск
Пол:



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

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

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

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

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

Сообщение отредактировал Puric - 8.2.2013, 14:48


--------------------
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
RosT
сообщение 8.2.2013, 22:58
Сообщение #2


Зачетный нексиавод
******

Группа: Пользователи
Сообщений: 1950
Регистрация: 22.5.2009
Из: Днепропетровск
Пол:



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

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

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


--------------------

Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Puric
сообщение 9.2.2013, 0:10
Сообщение #3


Почетный нексиавод
******

Группа: Пользователи
Сообщений: 2405
Регистрация: 28.3.2008
Из: Украина, Днепропетровск
Пол:



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

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

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


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

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

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

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


--------------------
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Puric
сообщение 9.2.2013, 0:22
Сообщение #4


Почетный нексиавод
******

Группа: Пользователи
Сообщений: 2405
Регистрация: 28.3.2008
Из: Украина, Днепропетровск
Пол:



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


--------------------
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
RosT
сообщение 9.2.2013, 8:19
Сообщение #5


Зачетный нексиавод
******

Группа: Пользователи
Сообщений: 1950
Регистрация: 22.5.2009
Из: Днепропетровск
Пол:



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


--------------------

Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Puric
сообщение 9.2.2013, 10:29
Сообщение #6


Почетный нексиавод
******

Группа: Пользователи
Сообщений: 2405
Регистрация: 28.3.2008
Из: Украина, Днепропетровск
Пол:



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

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

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


--------------------
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 18.4.2024, 17:34
Разработка сайта: JetBrain, 2008