Страницы: 1
RSS
Нужен макрос поиска дублей
 
Есть файл с данными. Кол-во столбцов - 9, Кол-во строк - более 1млн.
Необходимо найти строки с одинаковой первой ячейкой (ячейкой первого столбца).
Простая сортировка на листе, либо проверка по формуле не подходит - слишком большой объем данных, работает очень долго.

Пока представляется следующий механизм.

1. В пустой столбец записываются нумерация строки (чтобы в конце отсортировать так же, как было).
2. данные переносятся в массив, там сортируются по первому столбцу.
3. Циклом проверяется идентичность текущей строки по сравнению со следующей строкой (идентичность - только по первой ячейке строки). Одинаковые строки - красится фон и шрифт
4. Массив отсортировывается так, как был изначально (в п.1)
5. Массив записывается в книгу.
6. Книга сохраняется.

Обязательное условие: макрос должен работать на Excel 2007 и 2010 (если для этих версий есть различие в коде - то согласуем позже, для какой версии пишем).
КРИТИЧНОЕ УСЛОВИЕ - быстрота работы макроса. (не более 20 минут точно, а то и меньше).


Опция 1.
Установить ограниченное количество срабатывания макроса

Опция 2.
Установить пароль на макрос

Опция 3.
Настроить прекращение работы макроса при нажатии на Esc

Опция 4.
Прогресс бар


Интересует цена (на основную задачу и а задача+опции) и срок.
Если предложите другой механизм - без проблем. Главное результат и быстрота работы макроса.
 
Готов выполнить.
 
Цена? Срок?
 
Написал в ЛС.
 
ответил
 
"...Кол-во строк - более 1млн. ...
... быстрота работы макроса. (не более 20 минут ..."
Просто для интереса - можете показать примерчик Вашего файла? Не 1 млн строк, конечно, а небольшой кусочек того, что есть и что нужно получить.
 
Прогрессбар, если выводить не этапы работы, а именно прогресс - будет отъедать серьёзный процент времени работы. Я бы ограничился статусом в статусбаре.
С другой стороны, если нужно " красится фон и шрифт" - то это всё ерунда, т.к. 90% времени займёт именно эта покраска части этого миллиона :(
И зачем красить?
P.S. Делать не берусь, т.к. есть уже исполнитель.
 
Не, ну массив-то не нужен (тем более, что его ещё два раза сортировать...)
Достаточно отобрать ключ (первый столбец) с исходной нумерацией, запросом. Делающим сразу и признак дублирования (having count() ещё не отменён :) ), при этом результирующий рекордсет можно там же и отсортировать по номеру строки... останется только сделать один проход по рекордсету, сводя его с листом.
А вот "опции" при таком варианте - дело интересное. Всё упрётся в защиту самого кода - тогда 1 и 2 логически проистекают из этого, 3 - уже сложнее, поскольку тогда надо делать асинхронный запрос, а 4 - будет неинформативен (ибо почти всё время займет обработка выборки) :) )
 
Опция 1.
Установить ограниченное количество срабатывания макроса.
- вообще не понял. Сделать конечно можно, но тогда нужно это количество проверять online  :)
Да и то - вопрос идентификации юзера довольно сложный...
Всё остальное легко или сложно, но ломается.

Или это количество запусков за сеанс работы с Экселем? Это просто... Но что это даст?

Остальные опции решаемы.
 
Оплату получил.
Страницы: 1
Наверх