Исключение дубликатов строк

http://avoropay.ucoz.ru/publ/4-1-0-9
Программа работает таким образом. Запускаем программу, нажимаем кнопку "Загрузить Excel файл" и выбираем файл для обработки.
Программа сама определяет первую строку со значениями, пропускает ее считая ее заголовком для столбцов.
Фактически нам все равно с какой строки будут начинаться данные, с любой. При желании номер строки можно указать.
Так же можно выбрать какой лист книги будем обрабатывать.
Затем нажимаем кнопку "Обработаем файл" и ждем 3 часа:). Кнопкой "Остановка обработки" можно прекратить цикл обработки, при этом промежуточные результаты можно сохранить.
Во время обработки программа отображает 2 индикатора процесса. Первый это строки, второй это колонки. Так же отображается реальное затраченное время и усредненное время работы. Индикаторы обновляются через каждые 50 строк.
Как работает программа:
1. Организовываем цикл перебора всех заполненных столбцов начиная с 8-го. Последний столбец определяется автоматически. Можно добавлять любое количество столбцов, программа обработает их верно.
2. Для каждого столбца организовываем цикл по всем строкам, начиная от начальной строки данных+1 (пропускаем заголовок).
3. Для каждой ячейки пытаемся разделить значения через запятую. И для каждого полученного значения производим поиск, только в диапазоне - "Текущая ячейка + 1" до последней строки.
4. Если значение в очередной строке совпало то пытаемся все значения из данной строки (диапазон от текущей колонки, так получится на уменьшение), добавить через запятую в эталонную стоку (с которой начали искать). Дубликаты значений не добавляем. Если значений в ячейке несколько, организовываем перебор для каждого значения разделенного запятой.
5. Потом добавляем ACM номер через запятую в эталонную строку.
6. Поиск производим до того момента как найдем все значения по текущей колонке, для эталонной строки.
7. Колонки помеченные как дубликаты, повторно не обрабатываются.
Оптимизировал, при работе с Excel VBA работает намного дольше. Все равно работает долговато, но обработка насчитывает в себе порядка 5 млн. операций, это много....
Лучший вариант был бы, загрузить данные из таблицы в БД, обработать их при помощи SQL запросов, затем опять выгрузить в Excel, думаю работать будет около получаса.... не больше.