Когда книга работает медленно: выясним, что на самом деле пересчитывает Excel
Рабочая тетрадь, которая занимала секунду, теперь занимает сорок. Ничего не было добавлено, что казалось бы большим. Причина почти всегда в том, что Excel пересчитывает гораздо больше, чем нужно, при каждом редактировании, и решение состоит в том, чтобы определить, какая из восьми вещей это делает.
Что вы делаете: установите для расчета значение «Вручную», чтобы вы могли работать, измерьте один перерасчет, затем проработайте список ниже в порядке, сколько обычно стоит каждый из них.
Краткая версия. Excel пересчитывает цепочку зависимостей. Все, что заставляет цепочку касаться миллиона строк, делает цепочку дорогой.
Сначала сделайте файл снова пригодным для использования.
- Формулы, Параметры расчета, Руководство. Теперь редактирование не вызывает полного перерасчета.
- Нажмите F9 один раз и посчитайте секунды. Это ваш базовый уровень, и он нужен вам, чтобы знать, помогли ли изменения.
- Shift+F9 пересчитывает только активный лист, что сужает стоимость.
- Когда закончите, выключите «Вручную». Общая книга, оставленная в режиме «Вручную», является источником неправильных чисел, которые выглядят правильно.
Восемь причин: самая дорогая в первую очередь
1. Летучие функции
NOW, TODAY, RAND, RANDBETWEEN, OFFSET, INDIRECT, CELL, INFO. Они пересчитываются всякий раз, когда что-либо в книге меняется, как и все, что от них зависит. Найдите их с помощью Ctrl+Ф, посмотрите в формулах, найдите OFFSET( и INDIRECT(.
заменять OFFSET с INDEX, который не является нестабильным. Заменять INDIRECT с реальной ссылкой или именем таблицы. Заменять TODAY() в десять тысяч рядов с одной ячейкой, вмещающей TODAY() на что указывают строки.
2. Ссылки на целые столбцы внутри тяжелых формул.
=SUMIFS(B:B, A:A, $D2) скопировав 50 000 строк, Excel запрашивает около миллиона строк 50 000 раз. Преобразуйте источник в таблицу и используйте структурированные ссылки, которые охватывают только используемые строки и автоматически расширяются:
=SUMIFS(Sales[Amount], Sales[Region], $D2)
3. Поисковые запросы, которые должны быть сводными или запросами
Существует 200 000 поисков, позволяющих получить сводку из сорока строк. Сводная таблица выполняет то же агрегирование за один проход. Еще лучше сделать это в Power Query, чтобы это происходило один раз при обновлении, а не при каждом вычислении.
4. Условное форматирование для целых столбцов
Это самый тихий. Применение правила к A:A вместо A2:A5000, а затем копирование и вставка ячеек разбивает их на сотни перекрывающихся правил. «Главная страница», «Условное форматирование», «Управление правилами», затем «Этот рабочий лист». Если список прокручивается, это ваша проблема. Удалите их все и повторно примените два или три к реальным диапазонам.
5. Завышенный запас хода.
Ctrl+Конец должен попасть в последнюю ячейку данных. Если он попадает на XFD1048576, файл содержит миллион пустых отформатированных строк. Выберите каждую строку под данными, щелкните правой кнопкой мыши, выберите «Удалить», затем сохраните, закройте и снова откройте. Требуется повторное открытие: используемый диапазон пересчитывается при загрузке файла.
6. Ссылки на закрытые книги
Данные, Редактировать ссылки. Каждая внешняя ссылка заставляет Excel искать информацию, а ссылка на файл в медленном сетевом ресурсе может добавить много секунд. Разбейте те, которые вам не нужны, и вставьте значения там, где исходный код закончен.
7. Располагайте формулы больше, чем нужно
A SUMPRODUCT или динамический массив с диапазоном в миллион строк выполняет расчеты в миллион строк. Привяжите диапазон к данным и отдайте предпочтение современным функциям динамических массивов, которые обычно работают быстрее, чем устаревшие формы Ctrl+Shift+Ввод, выполняющие ту же работу.
8. Формы, изображения и скрытые объекты
Главная страница, «Найти и выбрать», «Панель выбора» отобразит их список. Книга, в которую неоднократно вставлялись диаграммы, может накапливать сотни невидимых объектов, каждый из которых перерисовывается.
Структурные исправления
| вместо | делать | Почему это быстрее |
|---|---|---|
| Формулы над необработанными строками | Агрегация в Power Query | Запускается один раз за обновление |
| Поиск во второй таблице | Отношения в модели данных | Сжатый и индексированный |
| Лист в месяц | Одна длинная таблица со столбцом месяца. | Одна расчетная цепочка, а не двенадцать |
| Формулы сохраняются для завершенных периодов | Вставка значений закрытых месяцев | Нечего пересчитывать |
| Все в одной книге | Файл данных и файл отчета | Тяжелая часть обновляется по требованию. |
Как применить это в своей работе
- Нажмите F9 на самом медленном файле и запишите номер, прежде чем что-либо трогать.
- Искать
OFFSET(иINDIRECT(и посчитайте попадания. Обычно здесь находятся секунды. - Откройте «Управление правилами» на каждом листе и посмотрите, сколько существует условных форматов. Часто это число исчисляется сотнями.
- Нажмите Ctrl+Конец на каждом листе. Исправьте все отклонения, затем сохраните и снова откройте.
- Переместите одно повторяющееся вычисление в Power Query и засеките разницу. Именно это сравнение убеждает команду изменить способ создания файла.
Единственная привычка, которую нужно сохранить
Когда работа книги замедляется, спросите, что изменилось, а не что удалить. Файлы редко замедляются постепенно; они замедляются, когда кто-то добавил столбец поиска или применил формат ко всему листу.
Сколько времени сейчас занимает один перерасчет вашей основной книги?
Excel для аналитиков состоит из 378 страниц, на которых каждая формула и диалог читаются по одному, поэтому книга перестает быть местом, где появляются числа, и становится тем местом, которое вы можете проверить.
Excel для аналитиков, 19 долларов США →Power Query или Power Pivot объясняет, куда должна была пойти работа, и предел строки рассказывает о том, что делать, если файл слишком велик для сетки.
Читать Power Query и Power Pivot →