
У меня есть модель Excel, где основным элементом является одна большая структурированная таблица, которая содержит около 2000 столбцов и 200 строк. Каждый столбец содержит формулу, которая одинакова для каждой строки. В виде файла XLSB рабочая книга занимает около 11 МБ и открывается за 45 секунд. Сами формулы эффективны — полный расчет рабочей книги выполняется менее чем за 1 секунду.
Если я разделю эту модель на две, используя два отдельных листа в одной рабочей книге (со ссылками между ними), производительность не изменится. Но когда я разделю эти листы на две рабочие книги, используя ссылки в качестве внешних ссылок, я смогу открыть оба файла и обновить ссылки примерно за 10 секунд.
Почему отдельные рабочие книги могут улучшить производительность? Можно ли достичь той же производительности в рамках одной рабочей книги?
EDIT: Очищенные рабочие тетради можно найти здесь:https://drive.google.com/drive/folders/0Bz0YVEO1u0jOaGtpS1ZnR3kzRWc?usp=sharing Model1.xlsb и Model2.xlsb — это разделенные файлы. Чтобы создать Model1and2.xlsb, я просто переместил два листа из Model2 в Model1.
EDIT 2: Настройка Workbook.ForceFullCalculation=TRUE
решает эту проблему. Это определенно как-то связано со временем загрузки дерева зависимостей. Я добавил Model1and2-ForceFullCalculation.xlsb в общую папку для демонстрации.