Нужна помощь по написанию макроса Exel, Нужка помощь в поправке кода! |
Здравствуйте, гость ( Вход | Регистрация )
Нужна помощь по написанию макроса Exel, Нужка помощь в поправке кода! |
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 -------------------- |
|
|
|
|
8.2.2013, 22:58
Сообщение
#2
|
|
Зачетный нексиавод Группа: Пользователи Сообщений: 1950 Регистрация: 22.5.2009 Из: Днепропетровск Пол: |
Да уж, а еще сложнее макрос не могли придумать, все решается стандартными средствами, а не функциями поиска и созданием массивов. Короче перемудрили ИМХО.
Пример реализации тут. Есть масса других способов, но этот самый явный. Все это можно сделать макросом даже без знания бейсика. Еще попробуй вот это - пользуюсь довольно старой версией, но и она много умеет. В новой наверняка наворотили еще больше. -------------------- |
|
|
|
|
9.2.2013, 0:10
Сообщение
#3
|
|
Почетный нексиавод Группа: Пользователи Сообщений: 2405 Регистрация: 28.3.2008 Из: Украина, Днепропетровск Пол: |
Да уж, а еще сложнее макрос не могли придумать, все решается стандартными средствами, а не функциями поиска и созданием массивов. Короче перемудрили ИМХО. Пример реализации тут. Есть масса других способов, но этот самый явный. Все это можно сделать макросом даже без знания бейсика. Еще попробуй вот это - пользуюсь довольно старой версией, но и она много умеет. В новой наверняка наворотили еще больше. Сложность в чем....я то могу и в ручную отсортировать, НО сколько времени у меня уйдет на перебор 166 тысяч строк, да и потом их надо сравнить еще с 80 тысячами, и так раз в квартал...руками и глазами напряжно от того задача Есть список льготной подписки на газету назовем №1 в нем 166 тыс строк - потенциальных получателей, НО по одному адресу могут проживать несколько людей из этого списка, это надо исправить, исключив дубликаты и сформировать новый список где из дубликатов (а на один адрес может проживать два и три, четыре) остаеться только ОДИН... Далее есть список №2 ветеранской подписки, в нем 8 тысяч строк, и соответственно есть тоже дубликаты со списком №1 НО здесь важны фамилии, и при сортировке надо сделать так что бы приплюсавав его к списку №1 и выкинув дубликаты приоритетом адресата остался список №2. Итоговым должен быть список для укрпочты, где одному адресу соответствует один экзеспляр газеты, причем (почему закрашиваю ячейки цветом) отдельно в списке должно быть выделенно адресатов списка №2.... Вот такая ерунда в прошлом году заняла две недели труда у 3 человек....создав этот макрос я сузил время до 24 часов....но осталась проблема, запускаю мокрос с перерывом на каждой 20 тыс. -------------------- |
|
|
|
|
9.2.2013, 0:22
Сообщение
#4
|
|
Почетный нексиавод Группа: Пользователи Сообщений: 2405 Регистрация: 28.3.2008 Из: Украина, Днепропетровск Пол: |
За ПЛЕКС спасибо....попробую поюзать...похоже что надо!
-------------------- |
|
|
|
|
9.2.2013, 8:19
Сообщение
#5
|
|
Зачетный нексиавод Группа: Пользователи Сообщений: 1950 Регистрация: 22.5.2009 Из: Днепропетровск Пол: |
А функцией ВПР() пользоваться не пробовал для сопоставления данных с первого списка со вторым. Работы максимум на 5 минут. Единственный минус, если адреса написаны по разному(нет точного совпадения), то до одного места обработка будет.
-------------------- |
|
|
|
|
9.2.2013, 10:29
Сообщение
#6
|
|
Почетный нексиавод Группа: Пользователи Сообщений: 2405 Регистрация: 28.3.2008 Из: Украина, Днепропетровск Пол: |
А функцией ВПР() пользоваться не пробовал для сопоставления данных с первого списка со вторым. Работы максимум на 5 минут. Единственный минус, если адреса написаны по разному(нет точного совпадения), то до одного места обработка будет. К сожелению иногда с пробелами траблы, и с вЫсоТОй (дом 12а или дом 12А или дом 12 А) строки, поэтому в код макроса еще внесена штука которая понижает все символы в строке и удаляет из нее пробелы. Но все же вопрос открыт. Может кто то сможет подсказать в чем проблема кода!!! -------------------- |
|
|
|
|
Текстовая версия | Сейчас: 4.5.2024, 14:34 |
Разработка сайта: JetBrain, 2008 |