Excel-оптимизация файлов



Я работаю с довольно большим документом Excel (~9 МБ) размером, который имеет более 60 листов и каждый из которых содержит много формул CUBEVALUE в нем.



Этот документ открывается за 2 минуты (не считая обновления значений), и хотя я прочитал много рекомендаций, например:




  • разделение листов (невозможно из-за природы этого файла)

  • более короткие формулы, (невозможно)

  • тестируется как на 32, так и на 64 битах (производительность не заметно разные)


Мне было интересно, если вы, ребята, наткнулись на какие-либо способы оптимизации времени открытия для Excel без существенного изменения содержимого в нем, или любые другие предложения.

573   2  

2 ответов:

  1. Сохраните его как двоичную книгу Excel (.xlsb). Вы можете сохранить макросы, размер файла будет составлять 25-35% от исходного и многие операции (не только открытие/закрытие) будут выполняться быстрее.

  2. Избавьтесь от любых неустойчивых функций, которые пересчитывают лист без необходимости. Косвенные, смещение, адрес, сегодня и сейчас входят в список волатильных функций. Большинство из них можно заменить энергонезависимыми альтернативами.

  3. Улучшить оставшийся расчет рабочая книга, делая формулы и функции рабочего листа более эффективными. Помощь по этому вопросу доступна на странице Code Review - Excel, партнер StackExchange. Никаких примеров не приводилось, поэтому никакой конкретной помощи не предлагалось.

  4. Улучшите время выполнения любой подпроцедуры cod на том же сайте. Большие блоки должны обрабатываться "в памяти" с массивами, а не циклически по ячейкам и т. д. Опять же, никаких примеров не приводилось, поэтому никакой конкретной помощи не предлагалось.

Если вы используете корпоративную сеть, попробуйте сначала загрузить файл на локальный компьютер, а затем открыть.

Это также может зависеть от наличия ссылок на другие файлы, постарайтесь свести их количество к минимуму, если таковые имеются.

Несомненно, объем данных в вашем файле-это основной драйвер времени открытия.

Comments

    Ничего не найдено.