Главная » Статьи » Разработки Воропай Андрея |
Исключение дубликатов строк
Программа работает таким образом. Запускаем программу, нажимаем кнопку "Загрузить Excel файл" и выбираем файл для обработки. Программа сама определяет первую строку со значениями, пропускает ее считая ее заголовком для столбцов. Фактически нам все равно с какой строки будут начинаться данные, с любой. При желании номер строки можно указать. Так же можно выбрать какой лист книги будем обрабатывать. Затем нажимаем кнопку "Обработаем файл" и ждем 3 часа:). Кнопкой "Остановка обработки" можно прекратить цикл обработки, при этом промежуточные результаты можно сохранить. Во время обработки программа отображает 2 индикатора процесса. Первый это строки, второй это колонки. Так же отображается реальное затраченное время и усредненное время работы. Индикаторы обновляются через каждые 50 строк. Как работает программа: 1. Организовываем цикл перебора всех заполненных столбцов начиная с 8-го. Последний столбец определяется автоматически. Можно добавлять любое количество столбцов, программа обработает их верно. 2. Для каждого столбца организовываем цикл по всем строкам, начиная от начальной строки данных+1 (пропускаем заголовок). 3. Для каждой ячейки пытаемся разделить значения через запятую. И для каждого полученного значения производим поиск, только в диапазоне - "Текущая ячейка + 1" до последней строки. 4. Если значение в очередной строке совпало то пытаемся все значения из данной строки (диапазон от текущей колонки, так получится на уменьшение), добавить через запятую в эталонную стоку (с которой начали искать). Дубликаты значений не добавляем. Если значений в ячейке несколько, организовываем перебор для каждого значения разделенного запятой. 5. Потом добавляем ACM номер через запятую в эталонную строку. 6. Поиск производим до того момента как найдем все значения по текущей колонке, для эталонной строки. 7. Колонки помеченные как дубликаты, повторно не обрабатываются. Оптимизировал, при работе с Excel VBA работает намного дольше. Все равно работает долговато, но обработка насчитывает в себе порядка 5 млн. операций, это много.... Лучший вариант был бы, загрузить данные из таблицы в БД, обработать их при помощи SQL запросов, затем опять выгрузить в Excel, думаю работать будет около получаса.... не больше. Источник: http://www.weblancer.net/users/waw/portfolio/1076887.html#item | |
Просмотров: 1113
| Теги: |
Всего комментариев: 0 | |