Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Отключить пересчет формул в excel

Как управлять режимами автоматических и многопоточных вычислений в Excel 2013

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

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

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

  1. Для отключения режима автоматических вычислений откройте Excel и выберите вкладку File (Файл).
  2. Выберите пункт Options (Параметры).
  3. В диалоговом окне Excel Options (Параметры Excel) выберите вкладку Formulas (Формулы), расположенную в меню слева.
  4. Чтобы отключить пересчет данных при каждом изменении значений, формул, имен или же при открытии листа Excel, содержащего формулы, выберите опцию Manual (Вручную) в разделе Calculation options (Параметры вычислений). Затем нажмите ОК.

Параметры вычислений

Следующий список поясняет опции, которые доступны в разделе Calculation options (Параметры вычислений):

  • Automatic (Автоматически) – пересчитывает все зависимые формулы и обновляет все открытые или внедрённые диаграммы при любом изменении значения, формулы или имени. Данная настройка установлена по умолчанию для каждого нового рабочего листа Excel.
  • Automatic except for data tables (Автоматически, кроме таблиц данных) – пересчитывает все зависимые формулы и обновляет все открытые или внедрённые диаграммы, за исключением таблиц данных. Для пересчета таблиц данных, когда данная опция выбрана, воспользуйтесь командой Calculate Now (Пересчет), расположенной на вкладке Formulas (Формулы) или клавишей F9.
  • Manual (Вручную) – пересчитывает открытые рабочие листы и обновляет открытые или внедрённые диаграммы только при нажатии команды Calculate Now (Пересчет) или клавиши F9, а так же при использовании комбинации клавиши Ctrl+F9 (только для активного листа).
  • Recalculate workbook before saving (Пересчитывать книгу перед сохранением) – пересчитывает открытые рабочие листы и обновляет открытые или внедрённые диаграммы при их сохранении даже при включенной опции Manual (Вручную). Если Вы не хотите, чтобы при каждом сохранении зависимые формулы и диаграммы пересчитывались, просто отключите данную опцию.
  • Enable iterative calculation (Включить итеративные вычисления) – разрешает итеративные вычисления, т.е. позволяет задавать предельное количество итераций и относительную погрешность вычислений, когда формулы будут пересчитываться при подборе параметра или при использовании циклических ссылок. Более детальную информацию о подборе параметров и использовании циклических ссылок можно найти в справке Microsoft Excel.
  • Maximum Iterations (Предельное число итераций) – определяет максимальное количество итераций (по умолчанию – 100).
  • Maximum Change (Относительная погрешность) – устанавливает максимально допустимую разницу между результатами пересчета (по умолчанию – 0.001).

Вы также можете переключаться между тремя основными режимами вычислений, используя команду Calculation Options (Параметры вычислений) в разделе Calculation (Вычисление) на вкладке Formulas (Формулы). Однако, если необходимо настроить параметры вычислений, все же придется обратиться к вкладке Formulas (Формулы) диалогового окна Excel Options (Параметры Excel).

Многопоточные вычисления в Excel

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

  1. Чтобы включить режим многопоточных вычислений, нажмите на вкладку File (Файл) и выберите пункт Options (Параметры), чтобы открыть диалоговое окно Excel Options (Параметры Excel). Затем нажмите Advanced (Дополнительно).
  2. Опуститесь вниз до раздела Formulas (Формулы) и установите флажок возле пункта Enable multi-threaded calculation (Включить многопоточные вычисления). Вы можете вручную установить количество потоков вычисления, которое необходимо использовать, или указать Excel задействовать все процессоры компьютера, выбрав Use all processors on this computer (Использовать все процессоры данного компьютера).

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

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

Как ускорить и оптимизировать код VBA

  1. Если в коде есть много всяких Activate и Select , тем более в циклах — следует немедленно от них избавиться. Как это сделать я писал в статье: Select и Activate — зачем нужны и нужны ли?
  2. Обязательно на время выполнения кода отключить:
    • автоматический пересчет формул . Чтобы формулы не пересчитывались при каждой манипуляции на листе во время выполнения кода — это может дико тормозить код, если формул много:

если печать производится внутри кода, то эту строку желательно вставить сразу после строки, выводящей лист на печать(при условии, что печать не происходит в цикле. В этом случае — по завершению цикла печати).
Я советую всегда отключать разбиение на страницы, т.к. это может тормозить весьма значительно, т.к. заставляет при любом изменении на листах обращаться к принтеру и переопределять кол-во и размер печатных страниц. А это порой очень не быстро.
На всякий случай можно отключить отображение информации в строке статуса Excel (в каких случаях там вообще отображается информация и зачем можно узнать в статье: Отобразить процесс выполнения). Хоть это и не сильно поедает ресурсы — иногда может все же ускорить работу кода:

Главное, что следует помнить — все эти свойства необходимо включить обратно после работы кода . Иначе могут быть проблемы с работой внутри Excel. Например, если забыть включить автопересчет формул — большинство формул будут пересчитывать исключительно принудительным методом — Shift+F9. А если забыть отключить обновление экрана — то есть шанс заблокировать себе возможность работы на листах и книгах. Хотя по умолчанию свойство ScreenUpdating и должно возвращаться в True, если было отключено внутри процедуры — лучше не надеяться на это и привыкать возвращать все свойства на свои места принудительно. По сути все это сведется к нескольким строкам:

‘Возвращаем обновление экрана Application.ScreenUpdating = True ‘Возвращаем автопересчет формул Application.Calculation = xlCalculationAutomatic ‘Включаем отслеживание событий Application.EnableEvents = True

Как такой код выглядит на практике. Предположим, надо записать в цикле в 10 000 строк значения:

Sub TestOptimize() ‘отключаем обновление экрана Application.ScreenUpdating = False ‘Отключаем автопересчет формул Application.Calculation = xlCalculationManual ‘Отключаем отслеживание событий Application.EnableEvents = False ‘Отключаем разбиение на печатные страницы ActiveWorkbook.ActiveSheet.DisplayPageBreaks = False ‘Непосредственно код заполнения ячеек Dim lr As Long For lr = 1 To 10000 Cells(lr, 1).Value = lr ‘для примера просто пронумеруем строки Next ‘Возвращаем обновление экрана Application.ScreenUpdating = True ‘Возвращаем автопересчет формул Application.Calculation = xlCalculationAutomatic ‘Включаем отслеживание событий Application.EnableEvents = True End Sub

Разрывы печатных страниц можно не возвращать — они тормозят работу в любом случае.
Следует избегать циклов, вроде Do While для поиска последней ячейки . Часто такую ошибку совершают начинающие. Куда эффективнее и быстрее вычислять последнюю ячейку на всем листе или в конкретном столбце без этого тормозного цикла Do While. Я обычно использую

другие варианты определения последней ячейки я детально описывал в статье: Как определить последнюю ячейку на листе через VBA?

Для более опытных пользователей VBA я приведу несколько решений по оптимизации кодов в различных ситуациях:

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

Sub TestOptimize_Array() ‘Непосредственно код заполнения ячеек Dim arr, lr As Long ‘запоминаем в массив одним махом все значения 10000 строк первого столбца arr = Cells(1, 1).Resize(10000).Value ‘если нужно заполнение для двух и более столбцов ‘arr = Cells(1, 1).Resize(10000, 2).Value ‘или ‘arr = Range(Cells(1, 1),Cells(10000, 2)).Value ‘или автоматически вычисляем последнюю ячейку и заносим в массив данные, начиная с ячейки А3 ‘llastr = Cells(Rows.Count, 1).End(xlUp).Row ‘последняя ячейка столбца А ‘arr = Range(Cells(3, 1),Cells(llastr, 2)).Value For lr = 1 To 10000 arr(lr,1) = lr ‘заполняем массив порядковыми номерами Next ‘Выгружаем обработанный массив обратно на лист в те же ячейки Cells(1, 1).Resize(10000).Value = arr End Sub

Но здесь следует учитывать и тот момент, что большие массивы могут просто вызвать переполнение памяти. Наиболее актуально это для 32-битных систем, где на VBA и Excel выделяется памяти меньше, чем в 64-битных системах

  • Если используете быстрый ЕСЛИ — IIF , то замените его на IF . Then . Else
  • Так же лучше вместо Switch() и Choose() применить тот же IF . Then . Else
  • В большинстве случаев проверять строку на «не пусто» лучше через Len() , чем прямое сравнение с пустотой: Len(s)=0 вместо s = «» . Связано с тем, что работа со строками значительно медленнее, чем с числовыми данными и Len по сути не подсчитывает длину переменной, а берет это число непосредственно уже готовое из памяти. При сравнении же текста с пустой строкой(«»), VBA сначала создает в памяти переменную нулевой длинны, а уже потом сравнивает с ней наш текст. Поэтому в некоторых случаях так же ускоряет сравнение и в таком виде: s = vbNullString
  • Не применять объединение строк без необходимости. Например, s = «АВ» , будет быстрее, чем: s =»А» & «В»
  • Не применять сравнение текстовых величин напрямую. Лучше применить встроенную функцию StrComp:
    If s <> s1 Then будет медленнее, чем
    If StrComp(s, s1, vbBinaryCompare) = 0
    и тем более, если при сравнении необходимо не учитывать регистр:
    If LCase(s) <> LCase(s1) Then будет медленнее, чем
    If StrComp(s, s1, vbTextCompare) = 0
  • Циклы For … Next в большинстве случаев работает быстрее, чем цикл Do . Lоор
  • Избегать присвоения переменным типа Variant . Хоть соблазн и велик — этот тип забирает много памяти и в дальнейшем замедляет работу кода. Так же для объектных переменных следует избегать по возможности безликого глобального типа Object и применять конкретный тип:

    Проблемы с формулами в таблице Excel

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

    Решение 1: меняем формат ячеек

    Очень часто Excel отказывается выполнять расчеты из-за того, что неправильно выбран формат ячеек.

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

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

    Очевидно, что формат ячеек нужно изменить, и делается это следующим образом:

    1. Чтобы определить текущий формат ячейки (диапазон ячеек), выделяем ее и, находясь во вкладке “Главная”, обращаем вниманием на группу инструментов “Число”. Здесь есть специальное поле, в котором показывается формат, используемый сейчас.
    2. Выбрать другой формат можно из списка, который откроется после того, как мы кликнем по стрелку вниз рядом с текущим значением.

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

    1. Выбрав ячейку (или выделив диапазон ячеек) щелкаем по ней правой кнопкой мыши и в открывшемся списке жмем по команде “Формат ячеек”. Или вместо этого, после выделения жмем сочетание Ctrl+1.
    2. В открывшемся окне мы окажемся во вкладке “Число”. Здесь в перечне слева представлены все доступные форматы, которые мы можем выбрать. С левой стороны отображаются настройки выбранного варианта, которые мы можем изменить на свое усмотрение. По готовности жмем OK.
    3. Чтобы изменения отразились в таблице, по очереди активируем режим редактирования для всех ячеек, в которых формула не работала. Выбрав нужный элемент перейти к редактированию можно нажатием клавиши F2, двойным кликом по нему или щелчком внутри строки формул. После этого, ничего не меняя, жмем Enter.

    Примечание: Если данных слишком много, на ручное выполнение последнего шага потребуется немало времени. В данном случае можно поступить иначе – воспользуемся Маркером заполнения. Но этот работает только в том случае, когда во всех ячейках используются одинаковая формула.

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

    Решение 2: отключаем режим “Показать формулы”

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

    1. Переключаемся во вкладку “Формулы”. В группе инструментов “Зависимость формул” щелкаем по кнопке “Показать формулы”, если она активна.
    2. В результате, в ячейках с формулами теперь будут отображаться результаты вычислений. Правда, из-за этого могут измениться границы столбцов, но это поправимо.

    Решение 3: активируем автоматический пересчет формул

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

    1. Заходим в меню “Файл”.
    2. В перечне слева выбираем раздел “Параметры”.
    3. В появившемся окне переключаемся в подраздел “Формулы”. В правой части окна в группе “Параметры вычислений” ставим отметку напротив опции “автоматически”, если выбран другой вариант. По готовности щелкаем OK.
    4. Все готово, с этого момента все результаты по формулам будут пересчитываться в автоматическом режиме.

    Решение 4: исправляем ошибки в формуле

    Если в формуле допустить ошибки, программа может воспринимать ее как простое текстовое значение, следовательно, расчеты по ней выполнятся не будут. Например, одной из самых популярных ошибок является пробел, установленный перед знаком “равно”. При этом помним, что знак “=” обязательно должен стоять перед любой формулой.

    Также, довольно часто ошибки допускаются в синтаксисах функций, так как заполнить их не всегда просто, особенно, когда используется несколько аргументов. Поэтому, рекомендуем использовать Мастер функций для вставки функции в ячейку.

    Чтобы формула заработала, все что нужно сделать – внимательно проверить ее и исправить все выявленные ошибки. В нашем случае нужно просто убрать пробел в самом начале, который не нужен.

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

    Распространенные ошибки

    В некоторых случаях, когда пользователь допустил ошибку при вводе формулы, в ячейке могут отображаться такие значения:

    • #ДЕЛ/0! – результат деления на ноль;
    • #Н/Д – ввод недопустимых значений;
    • #ЧИСЛО! – неверное числовое значение;
    • #ЗНАЧ! – используется неправильный вид аргумента в функции;
    • #ПУСТО! – неверно указан адрес дапазона;
    • #ССЫЛКА! – ячейка, на которую ссылалась формула, удалена;
    • #ИМЯ? – некорректное имя в формуле.

    Если мы видим одну из вышеперечисленных ошибок, в первую очередь проверяем, все ли данные в ячейках, участвующих в формуле, заполнены корректно. Затем проверяем саму формулу и наличие в ней ошибок, в том числе тех, которые противоречат законам математики. Например, не допускается деление на ноль (ошибка #ДЕЛ/0!).

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

    1. Отмечаем ячейку, содержащую ошибку. Во вкладке “Формулы” в группе инструментов “Зависимости формул” жмем кнопку “Вычислить формулу”.
    2. В открывшемся окне будет отображаться пошаговая информация по расчету. Для этого нажимаем кнопку “Вычислить” (каждое нажатие осуществляет переход к следующему шагу).
    3. Таким образом, можно отследить каждый шаг, найти ошибку и устранить ее.

    Также можно воспользоваться полезным инструментом “Проверка ошибок”, который расположен в том же блоке.

    Откроется окно, в котором будет описана причина ошибки, а также предложен ряд действий касательно нее, в т.ч. исправление в строке формул.

    Заключение

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

    Excel не считает числа: не суммирует, не вычитает, не перемножает, не делит и не вычитает.(числа не складываются)

    Не один раз сталкивался с ситуацией, когда открываешь «экселевский» файл, присланный по почте, ставишь в ячейках новые числа (цифры), а ячейки с формулами остаются неизменными – не считаются (не складываются, не делятся, не перемножаются). Это явление довольно распространенное, и обусловлено тем, что в программе Excel отключен автоматический расчет формул в ячейках.

    Отключать автоматический расчет удобно если у Вас слабый компьютер и приходится работать с большими таблицами по нескольку сотен тысяч строк. Если отключены расчеты машина (компьютер) не зависает и не тормозит.

    Как же посчитать значения формул при отключенном автоматическом расчете?

    Все довольно просто. Необходимо:

    • Зайти во вкладку «формулы»;
    • Группа элементов «Вычисление»;
    • Кнопка «Произвести вычисления»

    Как включить автоматические выключения формул в Excel?

    Включить вычисления можно двумя способами:

    Первый способ – все в той же вкладке «формулы» в группе элементов «вычисления» выбрать кнопку «Параметры вычислений». Появится выпадающий список из трех позиций:

    1. Автоматически – автоматическое вычисление;
    2. Автоматически, кроме данных таблиц;
    3. Вручную – ручная активация расчетов.

    • Открыть меню «Файл» => «Параметры»;
    • В появившемся окне перейти во вкладку «Формулы»;
    • Поставить флажок напротив пункта «Автоматически» в меню «Вычисления в книге»;
    • Нажать кнопку «Ок».

    Как видите все несложно.

    Удачи в изучении Excel и успехов в работе.

    Вопросы можете задавать в комментариях.

    Похожее:

    1. Умножение столбцов таблицы Excel на выбранное число.Как умножить столбец таблицы Excel на одно.
    2. Как увеличить производительность труда или Таблица: Сочетание горячих клавиш в «Эксель»:Как увеличить производительность труда подчиненных в программе.
    3. Сумма или среднее значение одной и той же ячейки с разных листов документа Excel.Добрый день. Часто возникают ситуации, когда нужно.

    Excel не считает числа: не суммирует, не вычитает, не перемножает, не делит и не вычитает.(числа не складываются): 4 комментария

    подруга дала лицензию и офис не работал, все искал почему, но решил удалить. скачал с торрента другую версию и все работает, теперь буду учиться в экселе работаьь вот!

    Не тянется формула по столбцу, он остается пустым, хотя формула присутствует. Автоматический расчет включен, не понимаем в чем дело. Подскажите, пожалуйста.

    Добрый день, попробуйте изменить формат ячеек с текстового на общий.

    How to stop automatic recalculation in excel

    In the excel sheet pictured below I would like the recalculation to stop for the top portion from Row 1-5. And what I mean with recalculation is that for example cell M2, H4, S4 have the today() formula and every time I open it it recalculates. I would like for it to calculate once and once I save as to not recalculate again once opened again. Any suggestions? I have tried

    Создан 02 июн. 16 2016-06-02 12:24:53 Luis

    check, if your workbook_open event is fired. Or check application.calculation value on your sheet – Luboš Suk 02 июн. 16 2016-06-02 12:32:09

    If you want the rest of the sheet to calculate normally, you will have to write a Macro into the BeforeSave event, that writes the Today() value into the cells as values. – Sun 02 июн. 16 2016-06-02 12:36:14

    instead of turning automatic calculation on and off, replace you TODAY() formula with a fixed date. Add a button that will update the fixed date when you press it. That way it will only update the information to today when you are ready for it. – Forward Ed 02 июн. 16 2016-06-02 20:13:12

    3 ответа

    Well, setting Application.Calculation = xlCalculationManual at the time of Workbook_Open may not always assure you the desired result as there is a possibility that the Excel might be in xlCalculationAutomatic while opening your file.

    So the workaround is, open Excel and set calculation to manual either in VBE or through menus and then open your file.
    In VBE, type Application.Calculation = xlCalculationManual in immediate window then hit Enter and then open your file.
    In Excel, for 2007 version, click on Formula Menu , go to Calculation Group , in Calculation Options select Automatic/Manual . For older versions, Tools > Options > Calculation .

    Создан 02 июн. 16 2016-06-02 17:27:32 Mrig

    I don’t have the reputation to post a comment to ask a clarifying question, so I will post an answer instead (making an assumption about what your answer would be).

    As long as you never want those cells to recalculate (and don’t mind losing the formula), the easiest solution would be to convert them to values.

    simple macro to achieve this for first 5 rows:

    I would suggest evaluating the function in VBA on events you want.

    If you want TODAY function to calculate on your request, I would create a button with a macro that reevaluates TODAY.

    How I would implement this depends on if you want/need to have the cell as a formula. If it is enough to have the calculated value, you can calculate in VBA and set the value to the cells you want. If you want to have a formula and keep the last evaluated TODAY value, you can set the formula to the cell. Range(«M2»).Formula = Date() & «other formula part»

    The easiest solution is to set todays value in some cell, in VBA

    Создан 02 июн. 16 2016-06-02 12:52:21 flang3r

    Читать еще:  Как вычислить среднее число в excel
  • Ссылка на основную публикацию
    Adblock
    detector