Excel остановить выполнение формулы

I’ll show you how to stop formulas and functions from performing their calculations and updating in Excel.

This may seem trivial, but it will save you a lot of time when you are dealing with complex Excel files with thousands of formulas that are linked to other Excel files or with thousands of complex array formulas.  This is because these types of formulas take a long time to update/calculate and Excel recalculates all formulas and functions each time you edit a cell and hit Enter.

Stop Formula Calculations in Excel

Go to the Formulas tab and click Calculation Options and select Manual:

Download the sample workbook for this tutorial to test this out.  All of the numbers come from the RANDBETWEEN() function and so they will change each time the worksheet updates.  You can test this with automatic calculations on and then off to see the effect.

Turn Formula Calculations Back On in Excel

Follow the same steps as above but then select Automatic instead of Manual.

How to Manually Calculate Formulas and Functions

When you have the formula calculation set to manual, you will still need to be able to update formulas and function and this is easy to do:

Keyboard shortcut F9 (calculate the entire workbook)

Keyboard shortcut Shift + F9 (calculate the currently visible worksheet)

Buttons on the Ribbon Menu (Formulas tab, all the way to the right):

Notes

This works for the entire workbook; you can’t turn calculations off for just one sheet or tab.

Don’t forget to check if calculations have been set to manual or automatic when troubleshooting a workbook.  A common thing is to freak out that none of your formulas are working like they should until you remember that the automatic calculations have been turned off.


Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons

50+ Hours of Video

200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

 

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

  Заранее благодарен за ответ

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Вижу решение только по событиям.

 

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

 

Метод Calculate можно применять не только ко всему листу, но и к диапазону (см. Справку по Range.Calculate Method). Соответственно, Вы можете контролировать процесс расчета листа и остановить его при определенном условии.

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

зачем?  

  не встречался с такой неоходимостью раньше..  

  может быть вашу задачу(основную, останов вычислений предполагаю вспомогательной) можно решить по-другому?

 

по поводу ЗАЧЕМ!!!  

  В случае, если в ячейке Пользовательская функция дает какое-то значение, то это делает бессмысленным (по условиям задачи) все последующие (и возможно продолжительные) расчеты в книге. В этом случае хотелось бы просто проинофрмировать пользователя с помощью текстового сообщения об ошибки в условиях задачи и прекратить все последующие расчеты, не вводя пользователя в заблуждении при ожидании результатов расчета.    
По поводу метода Calculate сам думал, но хотелось бы чтобы вычисления принудительно завершились, при этом при новых изменениях данных в книге система опять в автоматическом режиме стала производить расчет!! (т.е. нужно опять скорректировать метод Calculate, но не в тойже Пользовательской функции!!! Тогда где, в обработке событий? Может есть какие-то другие пути?)

 

Предыдущее сообщение мое. Забыл указать пользователя.

 

Вот Вам простой пример, см. код листа.  
В А1 значение, которое Вы вводите, в остальных ячейках формулы.  
Если в А4 получается значение >20, вычисления останавливаются.  
Попробуйте ввести в А1 2, потом 3.

 

Казанский  
Сообщение то выдается, а расчет всех последующих формул в ячейке продолжается…  
А мне надо, чтобы прекратился……  

  Спасибо, но надо что-то добавить…

 

Что значит «расчет всех последующих формул в ячейке продолжается…» ?!    
Вот я ввожу А1=10. В А2-А4 значения изменяются, выдается сообщение, после закрытия сообщения в А5-А9 остаются прежние значения (см. скриншот). У Вас не так?  
Может, Вы включили автоматические вычисления?

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Может всё проще? В ячейке А1 некая формула, если её значение превысит 10 — автовычисление отключается.  
Private Sub Worksheet_Calculate()  
   If Range(«A1») > 10 Then Application.Calculation = xlManual  
End Sub

 

Ответ для Казанский: Вы правы, была установлена опция автоматические вычисления. Ваш метод интересен тем, что происходит поячеечное вычисление согласно условия.  

  Ответ для Юрий М:  
Проблема в том, что систему нужно затем специально переводить в автоматический режим вычислений. В решении Казанский она тоже в ручном режиме, но переводить в автоматический режим не требуется!!  

  Я думал (вернее надеялся), что в Excel есть какая-то глобальная функции типа Exit Function, которая позволяет остановить работу Exel непосредственно из пользовательской функции, но при этом сам Exel сохранял бы возможность автоматических вычислений при новом введении информации в какую-либо ячейку.    

  Если не получится как-то поиграться с Application.Calculation (что идеолгически красивее), то придется использовать 1-ый способ с поячеечным вычислением  

  Спасибо всем

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

{quote}{login=evgeniy234}{date=09.09.2010 02:53}{thema=}{post}Я думал (вернее надеялся), что в Excel есть какая-то глобальная функции типа Exit Function…{/post}{/quote}  
В Excel есть встроенный инструмент «итеративные вычисления»: Сервис-Параметры-Вычисления-Итерации-Погрешность. Может, там порыться?

 

На самом деле, вычислять можно не поячеечно, а подиапазонно.  
То есть сначала Вы делаете пересчет диапазона, от которого зависит значение определяющей ячейки, и самой этой ячейки. Можно одной командой пересчитать несколько несвязных диапазонов:  

  range(«A1:B10,D3:K4,F7»).calculate  

  Потом проверить значение ячейки и, если решение положительное, запустить пересчет всего листа:  

  activesheet.calculate

 

evgeniy234

Гость

#15

09.09.2010 20:05:53

спасибо всем попробую….

Как правило, когда вы используете формулу на листе, например, в ячейке C1, вы используете эту формулу = A1 + B2, и формула будет автоматически вычисляться с изменением данных в A1 и B2. Теперь, если вы хотите остановить автоматический расчет, я могу предложить вам два хитрых способа.

Остановить автоматический расчет с помощью параметров расчета в Excel

Остановить автоматический расчет с помощью VBA


стрелка синий правый пузырь Остановить автоматический расчет с помощью параметров расчета в Excel

Если вы хотите остановить автоматический расчет в Excel, вам просто нужно изменить автоматический расчет на ручной расчет.

Пожалуйста, нажмите Формула > Варианты расчета > Вручную. Смотрите скриншот:

Теперь автоматический расчет в Excel остановлен.


стрелка синий правый пузырь Остановить автоматический расчет с помощью VBA

Между тем, использование VBA может остановить автоматический расчет.

Если вы привыкли использовать VBA, вы также можете запустить приведенный ниже VBA для объединения всех остальных строк.

1. Держать ALT кнопку и нажмите F11 на клавиатуре, чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Module и скопируйте VBA в модуль.

VBA: остановить автоматическое вычисление с помощью VBA

Private Sub Workbook_Open()
'Updateby20140314
Application.Calculation = XlCalculation.xlCalculationManual
End Sub

3. Затем нажмите Run чтобы остановить автоматический расчет.

Функции: Если вы хотите восстановить автоматический расчет, просто нажмите Формула > Варианты расчета > Автоматически.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (3)


Оценок пока нет. Оцените первым!

Использование формулы — ошибка. Если вы не хотите, чтобы существующий номер недели обновлялся, вам необходимо присвоить номер недели как значение. Вы можете сделать это вручную, но проще всего использовать макрос (VBA). Вставьте фигуру (кнопку) на этот лист, добавьте значимый текст, назначьте макрос (как показано ниже). Затем, когда вы будете готовы обновить номера недель, просто нажмите кнопку.

Sub updateweekid()
Dim weekid As Long
Dim lastweekrow As Long, lastclientrow As Long

'get week #
weekid = Cells(1, 1).Value


'week list is column C, row2
'Find the last non-blank cell in column C(3)
lastweekrow = Cells(Rows.Count, 3).End(xlUp).Row

'client list is column d, row2
'Find the last non-blank cell in column D(4)
lastclientrow = Cells(Rows.Count, 4).End(xlUp).Row


'loop though updating week number
For i = 1 To (lastclientrow - lastweekrow)
Cells(lastweekrow + i, 3).Value = weekid
Next i

End Sub

I’m looking for some help with Excel and have created the problem in a Google sheet to highlight.

I’m trying to get a column (C) to auto-fill a value when data is entered in a second column (D). The auto-filled data is pulled from cell A1.

The data in cell A1 will change each week and I don’t want the rows with auto-filled data to update with the new value. Once entered, the data should be set.

For example, a cell in C gets autofilled with a ‘1’ when some text is entered in column D. Next week a ‘2’ is entered in A1. The cell in C should not change from a ‘1’ to a ‘2’.

You can see the formula I currently have in the sheet below.
https://docs.google.com/spreadsheets/d/1W6xRqpEAiVxKye0whMJd7ODbwLQaOtDLQdEB59j4brY/edit?usp=sharing can anyone help with stopping the cells updating once a value is present?

Thanks,

asked Sep 17, 2018 at 14:50

themeparkfocus's user avatar

3

Because it is possible in Google Sheets:

=if(isblank(D3),A$1,C3)

in C3 and copied down to suit.

Requires setting Spreadsheet settings… > Calculation > Iterative calculation to On (Max number of iterations to 1 is enough) and is not good practice.

The C column values will track the A1 value as long as the corresponding (ie same row) D column cells are blank.

Basically the same in Excel.

answered Sep 17, 2018 at 17:39

pnuts's user avatar

pnutspnuts

58k11 gold badges85 silver badges137 bronze badges

2

Using a formula is a mistake. If you don’t want the existing week number to be updated, then you need to assign the week number as a value. You could do this manually, but the easiest way is to use a macro (VBA). Insert a shape (button) on that sheet, add meaningful text, assign a macro (like the one below). Then when you are ready to update week numbers, just click the button.

Sub updateweekid()
Dim weekid As Long
Dim lastweekrow As Long, lastclientrow As Long

'get week #
weekid = Cells(1, 1).Value


'week list is column C, row2
'Find the last non-blank cell in column C(3)
lastweekrow = Cells(Rows.Count, 3).End(xlUp).Row

'client list is column d, row2
'Find the last non-blank cell in column D(4)
lastclientrow = Cells(Rows.Count, 4).End(xlUp).Row


'loop though updating week number
For i = 1 To (lastclientrow - lastweekrow)
Cells(lastweekrow + i, 3).Value = weekid
Next i

End Sub

answered Sep 20, 2018 at 4:40

Tedinoz's user avatar

TedinozTedinoz

5,1412 gold badges24 silver badges34 bronze badges

Регистрация на форуме тут, о проблемах пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите восстановить пароль

Поиск по форуму
Расширенный поиск

как отменить операцию в excel, которая длится очень долго и система выдает сообщение — эксель не отвечает.

DiemonStar
Посмотреть профиль
Найти ещё сообщения от DiemonStar

отменить перед запуском макроса
—обновление экрана
—пересчет формул

———
заметно ускорит выполнение
———
а пока попробуйте Esc и Ctrl-Break.

shanemac51
Посмотреть профиль
Найти ещё сообщения от shanemac51


Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке — https://slurm.club/3MeqNEk

Excel: как остановить операцию?

Скажем, я создала какую-то функцию на несколько ячеек (или даже, по ошибке, на весь столбец, а может и в самой функции ошибка) и вычисление занимает слишком много времени. Можно ли как-то остановить это? Кнопка Esc не действует. Наверное можно переключиться в режим ручных вычислений, но хочется именно вариант на случай ошибки. У меня кажется Эксел 2008, MacOX.

И еще вопрос, раз уж: как в Маке на клавишах переключаться с одного языка на другой, как было в ПС (кнтр-шифт кажется)?
Спасибо огромное!

Новый мэкбук

Немного ламерские вопросы с учетом, что на мэке я давно, но с этим я так и не разобралась, а сейчас обновила мэкбук и хочу наконец-то по нормальному…

Time Machine и MacBook

Не хочет бакапиться на NAS. Пишет, что Time Machine couldn’t complete the backup to «nakopitel.local». Time Machine could not backup…

Винтажный iPad 4. Проблема.

Здравствуйте Я не могу подключится к icloud на своём iPad 4 Выдаёт ошибку с описанием «неизвестная ошибка» либо сбой выполнения входа, либо…

Как остановить автоматический пересчет в Excel

В таблице Excel, изображенной ниже, я хотел бы, чтобы перерасчет прекратился для верхней части из строк 1-5. Под перерасчетом я имею в виду, что, например, в ячейках M2, H4, S4 есть формула today (), и каждый раз, когда я открываю ее, она пересчитывается. Я бы хотел, чтобы он рассчитывался один раз и один раз сохраняю, чтобы не пересчитывать еще раз, снова открывал. Какие-либо предложения? я пытался

enter image description here

3 ответа

Что ж, установка Application.Calculation = xlCalculationManual во время Workbook_Open не всегда может гарантировать вам желаемый результат, поскольку существует вероятность того, что Excel может быть в xlCalculationAutomatic при открытии файла.

Итак, обходной путь: откройте Excel и установите вычисление вручную либо в VBE, либо через меню, а затем откройте свой файл.
В VBE введите Application.Calculation = xlCalculationManual в окне, затем нажмите Enter и откройте файл.
В Excel для версии 2007 нажмите Formula Menu , перейдите к Calculation Group , в Calculation Options выберите Automatic/Manual . Для более старых версий Tools > Options > Calculation .

Я бы посоветовал оценить функцию в VBA на нужных вам событиях.

Если вы хотите, чтобы функция СЕГОДНЯ выполнялась по вашему запросу, я бы создал кнопку с макросом, который переоценивает СЕГОДНЯ.

Как я бы это реализовал, зависит от того, хотите ли вы / нужно ли иметь ячейку в виде формулы. Если рассчитанного значения достаточно, вы можете рассчитать его в VBA и установить значение в нужные ячейки. Если вы хотите иметь формулу и сохранить последнее вычисленное значение СЕГОДНЯ, вы можете установить формулу в ячейку. Range(«M2»).Formula = Date() & «other formula part»

Самое простое решение — установить сегодняшнее значение в какой-либо ячейке в VBA.

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

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

Понравилась статья? Поделить с друзьями:
  • Excel открывает файлы в режиме только для чтения
  • Excel оставлять значение вместо формулы
  • Excel оставить целую часть
  • Excel открывает файл с ошибкой
  • Excel оставить целое число