Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как отключить обновление диапазона ячеек с формулами - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как отключить обновление диапазона ячеек с формулами (Макросы/Sub)
Как отключить обновление диапазона ячеек с формулами
djon2012 Дата: Вторник, 17.09.2019, 23:49 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте! Подскажите пожалуйста как макросом отключить обновление определенного диапазона ячеек с формулами, остальные ячейки автоматически обновляются. Например отключаем автоматическое обновление формул в диапазоне ячеек A1:Y10000 (в моих условиях приблизительно 15000000 ячеек с формулами пересчет которых надо на время остановить), проделываем нужные операции и опять включаем автоматический пересчет формул в указанных ячейках. Данная операция нужна для более быстрой обработки макроса. Спасибо!
 
Ответить
СообщениеЗдравствуйте! Подскажите пожалуйста как макросом отключить обновление определенного диапазона ячеек с формулами, остальные ячейки автоматически обновляются. Например отключаем автоматическое обновление формул в диапазоне ячеек A1:Y10000 (в моих условиях приблизительно 15000000 ячеек с формулами пересчет которых надо на время остановить), проделываем нужные операции и опять включаем автоматический пересчет формул в указанных ячейках. Данная операция нужна для более быстрой обработки макроса. Спасибо!

Автор - djon2012
Дата добавления - 17.09.2019 в 23:49
gling Дата: Среда, 18.09.2019, 00:07 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1969
Репутация: 489 ±
Замечаний: 0% ±

2010
Здравствуйте. А вы уверены что нужно остановить пересчет определенного диапазона, а не пересчитать определенный диапазон?
[vba]
Код
ActiveSheet.Range("A1:C3").Calculate
[/vba]Это пересчет определенного диапазона при выключенном автопересчете формул.


ЯД-41001506838083
 
Ответить
СообщениеЗдравствуйте. А вы уверены что нужно остановить пересчет определенного диапазона, а не пересчитать определенный диапазон?
[vba]
Код
ActiveSheet.Range("A1:C3").Calculate
[/vba]Это пересчет определенного диапазона при выключенном автопересчете формул.

Автор - gling
Дата добавления - 18.09.2019 в 00:07
djon2012 Дата: Среда, 18.09.2019, 00:13 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
gling спасибо вам за быстрый ответ. Мне нужно остановить пересчет формул именно определенного диапазона а затем снова включить.
 
Ответить
Сообщениеgling спасибо вам за быстрый ответ. Мне нужно остановить пересчет формул именно определенного диапазона а затем снова включить.

Автор - djon2012
Дата добавления - 18.09.2019 в 00:13
gling Дата: Среда, 18.09.2019, 00:26 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1969
Репутация: 489 ±
Замечаний: 0% ±

2010
Остановите пересчет всей книги[vba]
Код
Application.Calculation = xlManual
[/vba]Пересчитайте нужный диапазон [vba]
Код
ActiveSheet.Range("A1:C3").Calculate
[/vba]Включите вновь автопересчет[vba]
Код
Application.Calculation = xlAutomatic
[/vba] Или всё же настаиваете на отключении формул в определенном диапазоне? Только мне не понятна такая процедура, ведь при включении автопересчета все формулы в книге будут пересчитаны и это займет время.


ЯД-41001506838083

Сообщение отредактировал gling - Среда, 18.09.2019, 00:28
 
Ответить
СообщениеОстановите пересчет всей книги[vba]
Код
Application.Calculation = xlManual
[/vba]Пересчитайте нужный диапазон [vba]
Код
ActiveSheet.Range("A1:C3").Calculate
[/vba]Включите вновь автопересчет[vba]
Код
Application.Calculation = xlAutomatic
[/vba] Или всё же настаиваете на отключении формул в определенном диапазоне? Только мне не понятна такая процедура, ведь при включении автопересчета все формулы в книге будут пересчитаны и это займет время.

Автор - gling
Дата добавления - 18.09.2019 в 00:26
djon2012 Дата: Среда, 18.09.2019, 06:38 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте gling! Да мне нужно отключить пересчет формул именно в определенном диапазоне. И да, вы абсолютно правы, что при включенном автопересчета ВСЕ ФОРМУЛЫ в книге будут пересчитаны и это ЗАЙМЕТ ВРЕМЯ. Как я уже упоминал у меня на листе более 15 000 000 формул в определенном диапазоне, обновление которых мне нужно только в определенный момент, а далее отключить пересчет этого диапазона ячеек с формулами. На листе кроме этого диапазона ячеек с формулами (15 000 000 ячеек), есть и с 100-ню других ячеек с формулами пересчет которых мне нужен постоянно. При работе макроса идет очень долгое его выполнение так как в процессе его работы идет постоянный перерасчет ВСЕХ ФОРМУЛ в книге а это напомню болеее 15 000 000 ячеек. Вот для этого мне нужно отключить перерасчет именно этого диапазона ячеек с 15 000 000 формул, оставляя возможность работать остальным ячейкам с формулами потом за надобностью снова включить чтобы обновить данные и отключить. Очень старался обьяснить аж взопрел. Пойду ка я випью кофейку, чего и вам желаю. Спасибо!
 
Ответить
СообщениеЗдравствуйте gling! Да мне нужно отключить пересчет формул именно в определенном диапазоне. И да, вы абсолютно правы, что при включенном автопересчета ВСЕ ФОРМУЛЫ в книге будут пересчитаны и это ЗАЙМЕТ ВРЕМЯ. Как я уже упоминал у меня на листе более 15 000 000 формул в определенном диапазоне, обновление которых мне нужно только в определенный момент, а далее отключить пересчет этого диапазона ячеек с формулами. На листе кроме этого диапазона ячеек с формулами (15 000 000 ячеек), есть и с 100-ню других ячеек с формулами пересчет которых мне нужен постоянно. При работе макроса идет очень долгое его выполнение так как в процессе его работы идет постоянный перерасчет ВСЕХ ФОРМУЛ в книге а это напомню болеее 15 000 000 ячеек. Вот для этого мне нужно отключить перерасчет именно этого диапазона ячеек с 15 000 000 формул, оставляя возможность работать остальным ячейкам с формулами потом за надобностью снова включить чтобы обновить данные и отключить. Очень старался обьяснить аж взопрел. Пойду ка я випью кофейку, чего и вам желаю. Спасибо!

Автор - djon2012
Дата добавления - 18.09.2019 в 06:38
Nic70y Дата: Среда, 18.09.2019, 08:23 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5687
Репутация: 1248 ±
Замечаний: 0% ±

ru13;10;03
15000000 ячеек с формулами
прикольно.
обновление которых мне нужно только в определенный момент
так может заменить их макросом (или еще чем) и запускать его в определенный момент


ЯД(poison) 41001841029809
 
Ответить
Сообщение
15000000 ячеек с формулами
прикольно.
обновление которых мне нужно только в определенный момент
так может заменить их макросом (или еще чем) и запускать его в определенный момент

Автор - Nic70y
Дата добавления - 18.09.2019 в 08:23
djon2012 Дата: Среда, 18.09.2019, 08:58 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте Nic70y. 15000000 ячеек с формулами много я сам в шоке, но заменять их макросом ненужно, нуно отключить макросом их перерасчет.


Сообщение отредактировал djon2012 - Среда, 18.09.2019, 18:10
 
Ответить
СообщениеЗдравствуйте Nic70y. 15000000 ячеек с формулами много я сам в шоке, но заменять их макросом ненужно, нуно отключить макросом их перерасчет.

Автор - djon2012
Дата добавления - 18.09.2019 в 08:58
Nic70y Дата: Среда, 18.09.2019, 09:02 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5687
Репутация: 1248 ±
Замечаний: 0% ±

ru13;10;03
отключить макросом их перерасчет.
именно в такой трактовке это не возможно.


ЯД(poison) 41001841029809
 
Ответить
Сообщение
отключить макросом их перерасчет.
именно в такой трактовке это не возможно.

Автор - Nic70y
Дата добавления - 18.09.2019 в 09:02
K-SerJC Дата: Среда, 18.09.2019, 11:19 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 470
Репутация: 83 ±
Замечаний: 0% ±

Excel 2013
а если отключить расчет
по событию листа change определить диапазон ячеек которые не относятся в этим 15000000 и запустить пересчет этого диапазона?

танец с бубнами конечно, но как вариант... ;)


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщениеа если отключить расчет
по событию листа change определить диапазон ячеек которые не относятся в этим 15000000 и запустить пересчет этого диапазона?

танец с бубнами конечно, но как вариант... ;)

Автор - K-SerJC
Дата добавления - 18.09.2019 в 11:19
djon2012 Дата: Среда, 18.09.2019, 19:37 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А возможно ли сделать так чтобы отключить автоматический пересчет формул на одном листе книги Excel, но оставить его на другом. Другими словами на Лист1 формулы не будут автоматически пересчитываться, а на Лист2 будут автоматически пересчитываться
 
Ответить
СообщениеА возможно ли сделать так чтобы отключить автоматический пересчет формул на одном листе книги Excel, но оставить его на другом. Другими словами на Лист1 формулы не будут автоматически пересчитываться, а на Лист2 будут автоматически пересчитываться

Автор - djon2012
Дата добавления - 18.09.2019 в 19:37
K-SerJC Дата: Четверг, 19.09.2019, 08:28 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 470
Репутация: 83 ±
Замечаний: 0% ±

Excel 2013
но оставить его на другом.

все равно танец с бубном
отключить автоматический пересчет

а в модуле листа где надо считать
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Me.Cells.Calculate
End Sub
[/vba]

персчет будет при изменении на этом листе

если надо пересчитывать формулы на листе при внесении изм из другого
тогда в модуль листа при изменении данных в котором запускается пересчет:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.Sheets("Лист1").Cells.Calculate
End Sub
[/vba]

пересчет на Лист1 будет


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Четверг, 19.09.2019, 08:32
 
Ответить
Сообщение
но оставить его на другом.

все равно танец с бубном
отключить автоматический пересчет

а в модуле листа где надо считать
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Me.Cells.Calculate
End Sub
[/vba]

персчет будет при изменении на этом листе

если надо пересчитывать формулы на листе при внесении изм из другого
тогда в модуль листа при изменении данных в котором запускается пересчет:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.Sheets("Лист1").Cells.Calculate
End Sub
[/vba]

пересчет на Лист1 будет

Автор - K-SerJC
Дата добавления - 19.09.2019 в 08:28
djon2012 Дата: Четверг, 19.09.2019, 08:52 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
K-SerJC спасибо вам большое. Попробую.
 
Ответить
СообщениеK-SerJC спасибо вам большое. Попробую.

Автор - djon2012
Дата добавления - 19.09.2019 в 08:52
Gustav Дата: Четверг, 19.09.2019, 11:36 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1683
Репутация: 683 ±
Замечаний: 0% ±

начинал с Excel 4.0...
Можно попробовать без программирования обернуть все формулы условием, зависящим от некоторой "управляющей" ячейки (например, A1). Т.е., например, имеющуюся формулу (допустим, в ячейке B2):
Код
=B1+1

превратить в
Код
=ЕСЛИ($A$1;B1+1)

И далее вводить в ячейку A1 число 1, если пересчет формул нужен, и число 0 (или просто стирать значение), если пересчет не нужен.

Точно не уверен (но можно же проверить на практике!), но, вроде бы, если по условию получается ЛОЖЬ, то выражение в функции ЕСЛИ, соответствующее значению ИСТИНА, не вычисляется/не пересчитывается (и наоборот, соответственно, тоже). Т.е., вроде бы, в ЕСЛИ по соображениям экономии всегда вычисляется только одна его часть.

P.S. Провел небольшое исследование. Добавил в формулу вызов пользовательской функции (UDF):
Код
=ЕСЛИ($A$1;B1+1+qwerty())

Где сама UDF имеет такой вид:
[vba]
Код
Function qwerty()
    qwerty = 10 'и на эту строку ставим точку прерывания
End Function
[/vba]
Так вот, при "выключенном пересчете" (при A1 = 0) любые изменения, производимые с ячейкой B1, не вызывают захода в UDF и останова на точке прерывания. Установка же значения A1 = 1 тут же приводит к такому останову.


Мой tip box - яд 41001663842605

Сообщение отредактировал Gustav - Четверг, 19.09.2019, 11:49
 
Ответить
СообщениеМожно попробовать без программирования обернуть все формулы условием, зависящим от некоторой "управляющей" ячейки (например, A1). Т.е., например, имеющуюся формулу (допустим, в ячейке B2):
Код
=B1+1

превратить в
Код
=ЕСЛИ($A$1;B1+1)

И далее вводить в ячейку A1 число 1, если пересчет формул нужен, и число 0 (или просто стирать значение), если пересчет не нужен.

Точно не уверен (но можно же проверить на практике!), но, вроде бы, если по условию получается ЛОЖЬ, то выражение в функции ЕСЛИ, соответствующее значению ИСТИНА, не вычисляется/не пересчитывается (и наоборот, соответственно, тоже). Т.е., вроде бы, в ЕСЛИ по соображениям экономии всегда вычисляется только одна его часть.

P.S. Провел небольшое исследование. Добавил в формулу вызов пользовательской функции (UDF):
Код
=ЕСЛИ($A$1;B1+1+qwerty())

Где сама UDF имеет такой вид:
[vba]
Код
Function qwerty()
    qwerty = 10 'и на эту строку ставим точку прерывания
End Function
[/vba]
Так вот, при "выключенном пересчете" (при A1 = 0) любые изменения, производимые с ячейкой B1, не вызывают захода в UDF и останова на точке прерывания. Установка же значения A1 = 1 тут же приводит к такому останову.

Автор - Gustav
Дата добавления - 19.09.2019 в 11:36
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как отключить обновление диапазона ячеек с формулами (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!