powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как соптимизировать макрос
3 сообщений из 3, страница 1 из 1
как соптимизировать макрос
    #33500964
hrust999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть выкачка в 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 не являюсь, поэтому подскажите пожалуйста есть ли решение у моей задачи другим алгоритмом, чтобы быстро и красиво. Спасибо.
...
Рейтинг: 0 / 0
как соптимизировать макрос
    #33501051
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отсортируй по столбцу (столбцам) группировки сначала (Range.Sort). Тогда сможешь обойтись одним проходом.
Запомнить параметры первой строки, запомнить первое значение суммы.
Читаешь очередную строку и сравниваешь параметры очередной строки с предыдущими. Если отличаются - сохраненые параметры и накопленную сумму сбрасываешь в целевой лист, и повторяешь все сначала.

А еще можно после сортировки воспользоваться функцией Subtotal. Получишь результат на том же самом листе что и исходная таблица.
...
Рейтинг: 0 / 0
как соптимизировать макрос
    #33503125
hrust999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо попробую
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как соптимизировать макрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]