Здравствуйте. Есть файл расчета теплопотерь помещения с полуавтоматическим подбором отопительных приборов (используются макросы). Сам по себе файл (сравнительно) не тяжёлый, но жутко тормозит (при чем тормоза распространяются на все открытые документы excel). В файле присутствует макрос на создание сводной таблицы, так вот, ее формирование длилось порядка 3-5 минут (в зависимость от размера файла и мощности ПК). Пришлось в самом макросе запретить автоматический пересчет данных, после этого время сократилась до 20-30 сек. По мере добавления помещений файл начинает (НЕ РЕАЛЬНО) тормозит. Подскажите, пожалуйста, что может быть причиной жутких тормозов при работе с данным файлом, и какие могут быть способы по их устранению Спасибо. Р.s. Понимаю, что разобраться, как программа работает сложено, поэтому снял коротенький роликкак с ней работать. И прошу с пониманием отнестись к тому, что программа на Украинском языке (переписывать все данные таблиц и тому подобное слишком долго) Файл в архиве 500 Кб https://docs.google.com/file/d/0B3S8qXQB_TruREtGRC1JUFdNTE0/edit?usp=sharing
1. На всех листах промотать скролом вниз по строкам и очистить там где пусто с помощью "главная-очистить-очистить всё" 2. Также для столбцов 3. Удалить ненужные связи на другие книги 4. Уменьшить и/или вообще удалить условные форматирования 5. Если не поможет - тогда корректировать/упрощать Ваши массивные UDF'ки
3-5 минут ерунда! мне попадалась книга, которая открывалась только более 40 минут. И при зтом Чел заказывал UDF. Еле уговорил отказаться вообще от формул и функций. Оставил самый минимум. А остальной функционал разнёс по макросам. Сильно тормозит работу макроса работа с ячейками - надо считывать в массивы, словари, обрабатывать и потом вываливать на лист. А таким количеством формул и функций только одно: в настройках - ручной пересчёт
LightZ, К сожалению первые 4 пункта не помогли (подобное я и раньше делал)
Цитата
LightZ пишет: 5. Если не поможет - тогда корректировать/упрощать Ваши массивные UDF'ки
Сейчас как раз занимаюсь определением, на какую функцию идет самая большая трата времени. Ради эксперимента некоторые функцию пропустил через код: time1 = Timer …… time2 = Timer Debug.Print "{ИМЯ ФУНКЦИИ} = ", time2 - time1 Результаты в файле debug.xls (и это только при изменении одной ячейки)
Цитата
Александр Моторин пишет: А таким количеством формул и функций только одно: в настройках - ручной пересчёт
Автоматический пересчет (на всю книгу) это не совсем хорошо. В процессе заполнения данных желательно видеть изменения расчетных значений (я про лист «Q_heat»). Но Вы натолкнули меня на мысль. Попробовал отключить пересчет формул на конкретных листах (в зависимости от ситуации). Для этого создал макрос и посадил его на кнопку. В процессе заполнения состава ограждающих конструкций и расчета сопротивления (лист «Опори»), тормоза есть. Но как этот лист заполнен, отключил атомический пересчет на всех листах кроме «Q_heat» (в котором продолжаю дальше работать). Файл ведет себя гораздо «шустрее». Тормоза остались, но теперь ими можно управлять. Всем спасибо. Пока это единственный способ, что пришел в голову, может у кого-то появятся еще идеи, прошу поделиться. Хочется разобраться в природе «подтормаживания». На разных форумах пишут, что на скорость работы файла могут влиять динамически именованные диапазоны. В файле у меня их два. (1 - «Таблиці(А106:А136)», 2 – «Матеріали(А500:А600)» ) . Так же, по сути, все расчеты, построены на функции «ВПР()». Догадок много, знать бы, что именно изменить…
Тоже столкнулся с тормозом VBA в виде динамических/именованных диапазонов. Даже правильней написать, объемом данных в умных таблицах, что само по себе является динамическим диапазоном. Если данных в умной таблице нет, то расчет быстрей, данных много - медленней. Как это обойти? Спасибо.