Трюк №67. Как в Excel 2010 уменьшить влияние переменных функций на скорость пересчета и увеличить производительность
Пересчитываемые функции, которые должны пересчитываться практически после каждого действия пользователя в Excel 2010, могут потребовать огромного количества времени. Хотя пересчитываемые функции слишком полезны, чтобы полностью отказываться от них, всегда есть способ сократить вызываемые ими задержки.
Пересчитываемая функция — это просто функция, которая пересчитывается каждый раз, когда в Excel производится какое-либо действие, например, ввод данных, изменение ширины столбцов и т. д. Одно из немногих действий, которое не вызывает пересчета переменной функции, — это изменение форматирования ячеек, если только вы не делаете это при помощи средства Специальная вставка → Форматы (Paste Special → Formats).
Вероятно, самые известные пересчитываемые функции — это функции СЕГОДНЯ (TODAY) и ТДАТА (NOW). Поскольку функция СЕГОДНЯ (TODAY) возвращает текущую дату, а функция ТДАТА (NOW) возвращает текущие дату и время, необходимо, чтобы обе они часто пересчитывались. Однако если на рабочем листе много пересчитываемых функций, вы, вероятно, заставляете Excel 2010 постоянно выполнять множество ненужных операций пересчета. Эта проблема может усугубиться, если пересчитываемые функции вложены в обычные (не пересчитываемые) функции, так как при этом формула целиком становится пересчитываемой.
Чтобы понять о чем речь, предположим, на рабочем листе функция СЕГОДНЯ (TODAY) используется в таблице, состоящей из 20 столбцов и 500 строк. Это будет означать, что в рабочей книге находится 10 000 пересчитываемых функций, тогда как нужную работу могла бы выполнить только одна.
Вместо того чтобы помещать 10 000 функций СЕГОДНЯ (TODAY) в каждую ячейку таблицы, в большинстве случаев можно просто ввести ее в ячейку, не входящую в эту таблицу, дать ей имя TodaysDate (или просто использовать идентификатор ячейки) или любое другое понятное имя и затем ссылаться на TodaysDate во всех функциях.
[stextbox id=»warning»]Быстрый и простой способ сделать так — выделить таблицу целиком и выбрать команду Правка → Заменить (Edit → Replace), чтобы во всех формулах заменить TODAY() на TodaysDate.[/stextbox]
Теперь у вас будет всего лишь одна функция СЕГОДНЯ (TODAY) вместо 10 000.
В качестве другого примера предположим, что первые 500 строк столбца В заполнены относительной формулой, например, =СЕГОДНЯ()-А1 (=TODAY()-A1), а в первых 500 строках столбца А находится дата, относящаяся к прошедшему периоду.
Каждый раз, когда вы производите любое действие в Excel, вы заставляете Excel 2010 пересчитывать пересчитываемую функцию СЕГОДНЯ (TODAY) в 499 раз больше, чем необходимо! Поместив функцию СЕГОДНЯ (TODAY) в любую ячейку и присвоив ячейке имя TodaysDate (или любое другое, удобное вам), вы можете просто использовать формулу =TodaysDate-Al. Теперь Excel придется пересчитать только одну функцию СЕГОДНЯ (TODAY), что существенно улучшит производительность.