Повторные вычисления Excel (машинный перевод)

Дата последнего изменения: 8 мая 2009 г.

Применимо к: Excel 2010 | Office 2010 | VBA | Visual Studio

В этой статье
Зависимость, измененные ячейки и ячейки пересчитанные
Асинхронные пользовательские функции (UDF)
Временного и постоянного функции
Режимы вычислений, команды, Выборочный пересчета и таблицы данных

Важно!

Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

Пользователь может инициировать повторные вычисления в Microsoft Excel несколькими способами, например:

  • Ввод новых данных (если приложение Excel находится в режиме автоматического пересчета, описанные далее в этом разделе).

  • Явно инструкциями для пересчета всех или части книги Excel.

  • Удаление или вставка строки или столбца.

  • Сохранение книги при пересчет перед сохранением был установлен.

  • Выполнение определенных действий Автофильтр.

  • Дважды щелкнув разделитель строки или столбца (в режиме автоматического вычисления).

  • Добавление, редактирование или удаление определенных имен.

  • Переименование листа.

  • Изменение положения листа в связи с другими листами.

  • Скрытие или отображение строк, а не столбцов.

Примечание

В этом разделе не различает пользователей непосредственно нажатие клавиши или кнопки мыши и эти задачи, выполнять команду или макрос. Пользователь запускает команду или какого-либо вызвать команды для запуска таким образом, чтобы он по-прежнему считается на действия пользователя. Поэтому фраза «пользователь» означает также «пользователя или команда или процесс запускается пользователем.»

Зависимость, измененные ячейки и ячейки пересчитанные

Расчет листы Excel можно рассматривать как три этапа:

  1. Построение дерева зависимостей

  2. Построение цепочки вычислений

  3. Пересчет ячеек

Дерево зависимостей сообщает о том, какие ячейки зависит от которого другие пользователи Excel или являющаяся, какие ячейки являются влияют на какие другие. Из этого дерева Excel создает цепочку расчета. Расчет цепи перечислены все ячейки, содержащие формулы в том порядке, в котором они должны рассчитываться. Во время пересчета Excel изменяющий этой цепи, если встречает формулу, которая зависит от ячейки, которая еще не была рассчитана. В этом случае ячеек вычисляемого и зависимые ресурсы перемещаются вниз по цепочке. По этой причине время вычислений часто приводит к улучшению листа, который только что был открыт в первые несколько циклов вычислений.

При структурные изменения в книге, например, при вводе новой формулы Excel восстанавливает дерева и расчет цепочку зависимостей. При вводе новых данных или новые формулы, Microsoft Excel помечает все ячейки, которые зависят от новых данных как требующие пересчет. Ячейки, которые помечены таким образом, известны как "грязный". Все прямые и непрямые зависимые элементы, помеченные как "грязный", таким образом, если B1 зависит от A1 и C1 зависит B1, при изменении A1, B1 и C1, помечаются как "грязный".

Если ячейка зависит, прямо или косвенно, Microsoft Excel определяет циклическую ссылку и предупреждает пользователя. Это, как правило, пользователю необходимо исправить ошибку, и Excel предоставляет очень полезно переходов и графические инструменты, помогающие пользователям найти источник циклическую зависимость. В некоторых случаях намеренно требуется данное условие существует. Например может потребоваться выполнить итеративные вычисления, где отправной точкой для следующей итерации — это результат предыдущих итераций. Microsoft Excel поддерживает управление итеративные вычисления с помощью диалогового окна Параметры расчета.

Повторно после того, как ячейки как "грязный", завершении пересчета Далее, Microsoft Excel оценивает содержимое каждой ячейки «грязный» в порядке, определяется по цепочке вычислений. В примере заданным ранее, это означает, что B1 — сначала и затем C1. Этот пересчет происходит сразу после окончания пометки ячеек как "грязный", если режим повторного вычисления является автоматическим; в противном случае он происходит позже.

Начиная с версии Microsoft Excel 2002, объект Range в Microsoft Visual Basic для приложений (VBA) поддерживает метод Range.Dirty, который помечает ячейки как требующие вычислений. При использовании вместе с методом Range.Calculate (см. следующий раздел), дает возможность принудительного вычисления ячеек в заданном диапазоне. Это полезно при выполнении ограниченного вычисление во время макрос, пересчет устанавливаемый вручную, чтобы избежать излишних затрат, Расчет ячеек, не связанных между собой функции макросов. Методы расчета диапазона не доступны через C API.

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

В Excel 2007 что логика стал пересчет на несколько потоков, таким образом, не являются взаимозависимыми разделы по цепочке вычислений и может быть вычислено в то же время. Можно настроить Microsoft Excel для использования нескольких потоков на один процессор компьютера или один поток в многопроцессорной или многоядерной компьютера.

Асинхронные пользовательские функции (UDF)

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

Временного и постоянного функции

Microsoft Excel поддерживает понятие переменной функции, то есть, значение которого неизвестно должен совпадать с одного момента к следующему даже в том случае, если ни один из аргументов (если он принимает любые) был изменен. Microsoft Excel выполняет повторное вычисление ячейки, которые содержат непостоянные функции, с помощью всех зависимых элементов, каждый раз, когда она пересчитывается. По этой причине слишком много адвокатам непостоянные функции можно сделать пересчет времени медленно. Они используются только в случае необходимости.

Следующие функции Excel volatile:

  • NOW

  • today

  • RAND

  • OFFSET

  • INDIRECT

  • INFO (в зависимости от аргументов)

  • CELL (в зависимости от аргументов)

VBA и C API поддерживает способов информирования Excel, определяемой пользователем функции (UDF) должны обрабатываться как зависимое. С помощью VBA UDF объявляется как volatile.

Function MyUDF(MakeMeVolatile As Boolean) As Double
   ' Good practice to call this on the first line.
   Application.Volatile (MakeMeVolatile)
   MyUDF = Now
End Function

По умолчанию Excel предполагает, что определяемые пользователем функции VBA не являются временными. Excel только узнает UDF volatile при ее первом вызове. Временный UDF могут быть изменены в энергонезависимом как в этом примере.

C API можно зарегистрировать функцию XLL как зависимое перед его первого вызова. Она также позволяет включить или выключить volatile состояния функций рабочего листа.

По умолчанию Excel обрабатывает XLL определяемые пользователем функции, принимающие аргументы диапазона и объявляются эквивалентов листа макросов как зависимое. Можно отключить это состояние по умолчанию с помощью функции xlfVolatile при первом вызове UDF.

Режимы вычислений, команды, Выборочный пересчета и таблицы данных

Microsoft Excel поддерживает три режима расчета.

  • Автоматический

  • Автоматически кроме таблиц.

  • Ручной

Если автоматическое вычисление, пересчет происходит после ввода всех данных и некоторые события, например, приведенных в предыдущем разделе. Для очень больших книг пересчет времени может быть так много времени, необходимо ограничить пользователей, когда это происходит, то есть перерасчет только при необходимости. Для этого Microsoft Excel поддерживается только в ручном режиме. Пользователь может выбрать режим через систему меню Excel или программным путем с помощью VBA, COM или C API.

Таблицы данных — специальные структуры на листе. Во-первых пользователь устанавливает вычисления результата на листе. Это зависит от одного или двух ключевых неизменных входных и другие параметры. Затем можно создать таблицы результатов для набора значений для одного или обоих ключей входных данных. Таблица создается с помощью Мастер таблицы данных. После настройки таблицы Excel видеосистемы расчет входных данных по одному и копирует результирующее значение в таблицу. Как можно использовать один или два входных данных, таблицы данных может быть одно - или двухмерный.

Пересчет таблиц данных обрабатывается немного по-разному:

  • Пересчет обрабатываются асинхронно пересчета регулярного книгу таким образом, большие таблицы может занять больше времени, чтобы пересчитать, чем остальная часть книги.

  • Допускаются циклических ссылок. Если вычисление, которое используется для получения результата зависит от одного или нескольких значений из таблицы данных, Microsoft Excel не возвращает ошибку для циклической зависимости.

Учитывая другой способ, которым Microsoft Excel обрабатывает пересчет таблицы данных, а также тот факт, что большие таблицы, которые зависят от сложных и длительных вычислений может занять много времени для расчета, Microsoft Excel позволяет отключить автоматическое вычисление таблиц данных. Для этого установите режим расчета автоматически кроме таблиц данных. При расчете в этом режиме пользователь пересчитывает таблиц данных, нажав клавишу F9 или какой-либо эквивалентное программные операции.

Excel предоставляет методы, которые можно изменить режим повторного вычисления и управления пересчет. Эти методы были улучшены от версии к версии для более точного управления. Функции C API в этом отношении, отражают те, которые были доступны в Microsoft Excel версии 5 и поэтому не дают тот же элемент управления, что у вас с помощью VBA в более поздней версии.

Чаще всего используются при Excel находится в режиме ручной расчет, эти методы позволяют Выборочный расчет книг, листов и диапазонов, полный пересчет всех открытых книг и даже полный перестроения цепочки расчет и дерево зависимостей.

Расчет диапазона

Сочетание клавиш: нет

VBA: Range.Calculate (впервые появившийся в Excel 2000, изменены в Excel 2007) и Range.CalculateRowMajorOrder (впервые появившийся в Excel 2007)

C API: Не поддерживается

  • В ручном режиме

    Пересчитывает только те ячейки, в данном диапазоне независимо от того, являются ли они испорчены или нет. Поведение метода Range.Calculate в Excel 2007; Тем не менее старое поведение по-прежнему поддерживается в Range.CalculateRowMajorOrder method.

  • Автоматическое или автоматически, за исключением режимы таблицы

    Пересчитывает книги, но не вынуждает пересчет диапазон или все ячейки в диапазоне.

Расчет активного листа

Нажатие клавиши: SHIFT + F9

VBA: ActiveSheet.Calculate

C API: xlcCalculateDocument

  • Все режимы

    Пересчитывает ячейки, помеченные для вычисления только активного листа.

Вычисления листа

Сочетание клавиш: нет

VBA: Worksheets(reference).Calculate

C API: Не поддерживается

  • Все режимы

    Пересчитывает измененные ячейки и их иждивенцев в пределах только указанный лист. Ссылка — это имя рабочего листа, как строка или порядковый номер соответствующей книги.

    Excel 2000 и более поздние версии предоставляют свойство лист Boolean, свойство EnableCalculation. Этому свойству True из False dirties все ячейки в таблицу. В режимах автоматического это также вызывает пересчет всей книги.

    В ручном режиме следующий код вызовет перерасчет только активного листа.

    With ActiveSheet
      .EnableCalculation = False
      .EnableCalculation = True
      .Calculate
    End With
    

Структура книги перестроить и принудительно пересчет

Нажатие клавиши: CTRL + ALT + SHIFT + F9 (впервые появившийся в Excel 2002)

VBA: Workbooks(reference).ForceFullCalculation (впервые появившийся в Excel 2007)

C API: Не поддерживается

  • Все режимы

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

Все открытые книги

Клавиша: F9

VBA: Application.Calculate

C API: xlcCalculateNow

  • Все режимы

    Пересчитывает все, помечен как "грязный", Excel, иждивенцев volatile или измененных данных и ячейки программным образом помечен как "грязный". Если пересчет автоматически кроме таблиц, вычисляет эти таблицы, для которых требуется обновление и также все временные функции и их иждивенцев.

Перестроить дерево всех открытых книг и принудительное вычисление

Нажатие клавиши: CTRL + ALT + F9

VBA: Application.CalculateFull

C API: Не поддерживается

  • Все режимы

    Пересчитывает все ячейки во всех открытых книгах. Если пересчет автоматически кроме таблиц, она заставляет таблицы, которые будут пересчитаны.

Примечание

Отказ от ответственности относительно машинного перевода. Данная статья была переведена с помощью компьютерной системы без участия человека. Microsoft предлагает эти машинные переводы, чтобы помочь пользователям, которые не знают английского языка, ознакомиться с материалами о продуктах, услугах и технологиях Microsoft. Поскольку статья была переведена с использованием машинного перевода, она может содержать лексические,синтаксические и грамматические ошибки.

См. также

Концепции

Многопотоковые повторные вычисления в Excel (машинный перевод)

Типы данных, используемые Excel (машинный перевод)

Управление памятью в Excel (машинный перевод)

Принципы программирования Excel (машинный перевод)