|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.09.2012, 00:11 | #1 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
Ускорение макроса поиска и суммирования
Доброго времени суток Ув. форумчане
Помогите пожалуйста ускорить макрос: Код:
Макрос только дописал, работает нормально, но очень долго сек 40 на не заполненной таблице, а что будет когда заполнят... мин 5-10 нужно будет ждать проверки... если эксель не слетит((( Вот, такая вот проблемка. Заранее спасибо за внимание. С Ув. Staniiislav
Единственный способ стать умнее, играть с более умным противником...
|
28.09.2012, 00:22 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
А зачем макрос? Разве формулы не справятся с суммированием?
Чтобы ускорить макрос, считываем данные в массив, в массиве уже циклом проходим по значениям (сравнивая и суммируя их), потом выгружаем результаты на лист. Уложитесь в 1 секунду по времени. Примеров такого кода на форуме множество. |
28.09.2012, 00:32 | #3 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
формулами было бы проще... попробовал через суммпроизв но перечисление двух условий + проверка этих двух условий 33 раза... форму огромная, вычислений уйма, соответственно подтормаживает.
На счет массивов, я об этом думал, но не совсем компетентен в данном вопросе, если можете дать пару ссылок, будет чудесно П.С. сегодня заходил на ваш сайт, смотрел как мою задачу можно переменить к вашим примерам с массивами, если честно не догадался... точнее соображалка не сообразила )))) Спасибо за ответ
Единственный способ стать умнее, играть с более умным противником...
|
28.09.2012, 09:23 | #4 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Моя "соображалка" откровенно ленится представлять файл, вычитывая код.
Предчувствую, что можно сделать быстро, на массивы то уж точно можно перевести - но нужен файл.
webmoney: E265281470651 Z422237915069 R418926282008
|
28.09.2012, 10:01 | #5 |
Форумчанин
Регистрация: 14.02.2009
Сообщений: 753
|
Думаю можно было бы применить комбинированный способ:
1. считать всё в массив. Типа M = Range("E29:DX627"). 2. Загнать сочетания операций и корпусов в словарь. 3. Пройтись по массиву циклом с проверкой сочетаний из словаря, подсчётом и записью результатов в массив результатов(или в тот же словарь) 4. Выгрузить результаты на лист
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru |
28.09.2012, 10:44 | #6 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
Спасибо за ответы!
Взял за основу код EducatedFool вот что получилось: Код:
Единственный способ стать умнее, играть с более умным противником...
|
28.09.2012, 11:07 | #7 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
Вот файлик, может еще быстрее макрос можно сделать (или я не правильно воспользовался функцией EducatedFool)?
на листе "Таблица" 31 календарный день, который будут заполнять Условия для проверки: каждая операция может иметь суммы нескольких корпусов (но не должна суммировать повторения по корпусам и операции, то есть для операции 201, 1 корпус не должен просуммировать все найденные 201=1, а только 201=1 + 201=2, и т.д. суммы берутся из листа "Расценка")
Единственный способ стать умнее, играть с более умным противником...
Последний раз редактировалось staniiislav; 28.09.2012 в 11:14. |
28.09.2012, 13:39 | #8 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
может не совсем понятен вопрос? кто подскажет пример решения данного вопроса?
Единственный способ стать умнее, играть с более умным противником...
|
28.09.2012, 23:40 | #9 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
вот так пока быстрее считает 10 сек:
на форуме нашел пример Код:
Советы по усовершенствованию будут?
Единственный способ стать умнее, играть с более умным противником...
|
29.09.2012, 11:02 | #10 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
может, как-то так
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ускорение макроса Copy Paste | Ivan Dulin | Microsoft Office Excel | 1 | 21.05.2012 19:51 |
Ускорение макроса | ymnuhj | Microsoft Office Excel | 5 | 12.05.2012 00:48 |
макрос для поиска позиций и вывода данных на лист поиска | mr-111 | Microsoft Office Excel | 12 | 13.03.2012 15:03 |
Ускорение работы макроса Cell Name. | Foxx | Microsoft Office Word | 0 | 26.02.2012 21:38 |
Запуск макроса с параметрами из другого макроса | Saladin | Microsoft Office Excel | 2 | 19.01.2009 09:43 |