|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
19.01.2009, 06:47 | #1 |
Регистрация: 19.01.2009
Сообщений: 3
|
поиск макросом дубликатов в таблице эксель
Приветствую
появилась необходимость поиска повторяющихся улиц с номерами домов в таблице эксель с помощью макроса Итак есть столбец "улица", рядом столбец "дом". Есть еще другие Столбцы в которых есть информация. Если есть 2 записи в которых улица и номер дома идентичны, то подсветить красным цветом чтобы менеджер мог удалить лишнюю запись. Так как дубликатов быть не должно. Таблица состоит из 20 000! записей(строк) Как можно было бы организовать алгоритм обхода так, чтобы это работало максимально производительно(быстро) |
19.01.2009, 07:20 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Прикрепите к сообщению пример файла (можно не весь, но столбцы с улицами и домами должны присутствовать)
А 20 000 строк - это не так уж и много. Или у Вас комп очень медленный?
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 19.01.2009 в 07:40. |
19.01.2009, 15:17 | #3 |
Регистрация: 19.01.2009
Сообщений: 3
|
комп вроде нормальный: два ядра по три гигагерца.
база во вложении а также моя версия макроса)) |
19.01.2009, 16:22 | #4 |
Форумчанин
Регистрация: 17.10.2008
Сообщений: 239
|
Мне кажется макрос написан достаточно компактно и должен работать быстро. Единственное изменение которое сделал это поместил перед вторым циклом
Код:
В этом случае будут пропускаться ячейки окашенные в красный цвет. А насколько повыситься быстродействие суди сам |
19.01.2009, 18:12 | #5 |
Регистрация: 19.01.2009
Сообщений: 3
|
думаю что проверка цвета почти ничего не даст..
вот щас подумал функцию getTrimCell2 надо переписать. зачем каждый раз делать конкатенацию Trim(Range(adr).Value) & Trim(Range(adr).Offset(0, 1).Value) надо просто отдельно сравнивать парами street1 = street2 and number1 = number2 |
19.01.2009, 19:05 | #6 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
а макрос - это обязательно? просто подсветить одинаковые условным форматированием недостаточно?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
19.01.2009, 21:37 | #7 | |
Регистрация: 19.01.2009
Сообщений: 3
|
Цитата:
только вот в процессе реализации возникает сообщение такое "недостаточно системных ресурсов для отображения диалогового окна" и как его вылечить ? у меня офис 2007 rus крякнутый |
|
19.01.2009, 23:06 | #8 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
идея плохая.
я посмотрел файл. оказалось порядка 250 строк - это повторы. слово обед 90 раз встретилось, 60 пустых строк... Цитата:
Макрос надо писать, который не подсветит, а который удалит дубликаты, что их подсвечивать.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
20.01.2009, 07:26 | #9 | |
Форумчанин
Регистрация: 17.10.2008
Сообщений: 239
|
Цитата:
И подумай вот о чем, если первое из повторенных значений находиться ну скажем в первой сотни - цикл будет крутиться более 19900 что займет достаточно времени. Чем не сокращение времени поиска повторений Я бы ввел дополнительное поле уже проверенных знаечний в какой нибудь из скрытых ячеек. Тогда первый цикл будет идти долго а вот поиск новых значений гораздо меньше. Надо будет найти совпадение вновь введенных занчений уже с отработанными. а это существенно меньше чем выполнять весь цикл Последний раз редактировалось Юнлинг; 20.01.2009 в 07:29. Причина: Дополнение. |
|
20.01.2009, 08:05 | #10 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Такие темы встречались уже множество раз.
Немного переделал макрос из этой темы. Вот что получилось... (см. вложение) (добавлено) Цитата:
Но формирование выборки уникальных адресов происходит за несколько секунд (создаётся новый лист с выборкой). При желании можно уменьшить время обработки до 1 секунды (если сразу считывать все адреса в массив, обрабатывать массив, а потом записывать массив на новый лист) Можно удалять также пустые и полупустые строки (если Вы сформулируете требования к удаляемым строкам)
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 20.01.2009 в 08:11. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск слова в таблице (datagridview) | kommunist | Общие вопросы .NET | 4 | 11.04.2010 20:38 |
Поиск значения в таблице | solo7_77 | Microsoft Office Excel | 3 | 15.11.2008 01:26 |
поиск в таблице | puma | Помощь студентам | 3 | 22.04.2008 23:56 |
Поиск в таблице БД | фЁдОр | БД в Delphi | 13 | 14.11.2007 10:05 |
Поиск в таблице | Voffka | БД в Delphi | 1 | 08.05.2007 01:16 |