|
|
|
как соптимизировать макрос
|
|||
|---|---|---|---|
|
#18+
есть выкачка в excell балансовых данных. Упрощенно выглядит в excel вот так a b c d 1 20202 810 350 2 20207 810 450 3 20202 810 300 Делаю кнопку, чтобы сгруппировать их по столбцам a и b, результат сложить и выкинуть на другой лист. Макрос на кнопке идет по следующему алгоритму. 'столбец d - признак уже обработанной строки Цикл по всей выгрузке Если столбец d <> 1 ' т.е. строка не была обработана Запоминаю параметры из текущей строки (param) Цикл по всей выгрузке от строки текущая + 1 Если столбец d <> 1 и param = параметры Сумма d = 1 end if next d = 1 выкидываю результат на новый лист end if next т.е. использую для группировки двойной цикл представленный алгоритм упрощен, проблема в том, что выгрузка моя более 20 тысяч строк в excel плюс в телах циклов дополнительные обработки. Все делается очень долго в районе 30 минут, что никак не приемлемо для пользователя. Хочется сделать все на кнопке поэтому встроенные итоги не хочу применять. в Microsoft query тоже долго. спецом по vba не являюсь, поэтому подскажите пожалуйста есть ли решение у моей задачи другим алгоритмом, чтобы быстро и красиво. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2006, 21:17:22 |
|
||
|
как соптимизировать макрос
|
|||
|---|---|---|---|
|
#18+
отсортируй по столбцу (столбцам) группировки сначала (Range.Sort). Тогда сможешь обойтись одним проходом. Запомнить параметры первой строки, запомнить первое значение суммы. Читаешь очередную строку и сравниваешь параметры очередной строки с предыдущими. Если отличаются - сохраненые параметры и накопленную сумму сбрасываешь в целевой лист, и повторяешь все сначала. А еще можно после сортировки воспользоваться функцией Subtotal. Получишь результат на том же самом листе что и исходная таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2006, 23:05:42 |
|
||
|
|

start [/forum/topic.php?fid=61&gotonew=1&tid=2185332]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 409ms |

| 0 / 0 |
