VBA в Excel
Oct. 4th, 2010 11:17 pm![[identity profile]](https://www.dreamwidth.org/img/silk/identity/openid.png)
![[community profile]](https://www.dreamwidth.org/img/silk/identity/community.png)
Друзья, нужна помощь с Экселем!
Имеется файл .xls с кучей листов, под завязку набитых однотипными записями (логи). Записей порядка 700000.
Записи имеют вид "Имя_человека" - "Дата_время" (ну и плюс всякие второстепенные данные). По одному человеку может быть куча записей в один день, но в разное время.
Необходимо обработать это все так, чтоб для каждого человека оставалась только одна запись за день, но с минимальным и максимальным временем за этот же день (в результате останется не так уж много строк, в один лист экселя все поместится).
Я смог написать только скрипт с тупым перебором (создается пустой лист, а потом данные каждой записи (человек+дата) проверяются на наличие в этом листе, и в случае отсутствия, добавляются туда). За выходные обработалось около 20% записей, хотя выполнялось на довольно шустром сервере.
Попробовал вместо вложенных циклов использовать FIND(), но стало еще хуже. На большее моей фантазии не хватает.
Посоветуйте механизм/алгоритм/процедуру, которые помогут решить поставленную задачи во вменяемые сроки (ну хотя бы чтоб за ночь обсчиталось). Не обязательно листинг приводить, подайте идею, докручу сам.
Да, использовать можно только встроенные функции Excel. Access, SQL, Delphi и прочие блага цивилизации, увы, недоступны.
Всем заранее спасибо.
Имеется файл .xls с кучей листов, под завязку набитых однотипными записями (логи). Записей порядка 700000.
Записи имеют вид "Имя_человека" - "Дата_время" (ну и плюс всякие второстепенные данные). По одному человеку может быть куча записей в один день, но в разное время.
Необходимо обработать это все так, чтоб для каждого человека оставалась только одна запись за день, но с минимальным и максимальным временем за этот же день (в результате останется не так уж много строк, в один лист экселя все поместится).
Я смог написать только скрипт с тупым перебором (создается пустой лист, а потом данные каждой записи (человек+дата) проверяются на наличие в этом листе, и в случае отсутствия, добавляются туда). За выходные обработалось около 20% записей, хотя выполнялось на довольно шустром сервере.
Попробовал вместо вложенных циклов использовать FIND(), но стало еще хуже. На большее моей фантазии не хватает.
Посоветуйте механизм/алгоритм/процедуру, которые помогут решить поставленную задачи во вменяемые сроки (ну хотя бы чтоб за ночь обсчиталось). Не обязательно листинг приводить, подайте идею, докручу сам.
Да, использовать можно только встроенные функции Excel. Access, SQL, Delphi и прочие блага цивилизации, увы, недоступны.
Всем заранее спасибо.
no subject
Date: 2010-10-05 08:14 pm (UTC)