Всем доброго времени суток. В продолжение темы Пересчет только видимых ячеек и по совету многоуважаемого _Boroda_, все же решил пересмотреть формулы... В прилагаемом файле имеется два листа (урезанная версия, реальный файл Лист 1 - более 9000 строк и Лист 2 - более 5000 строк)
Собственно проблема заключается в том, что при работе со вторым листом очень часто необходимо использование автофильтра и при каждом изменении данного автофильтра происходит пересчет всей книг, на более менее слабых машинах это занимает продолжительное время. Как выяснилось хорошенько подвешивает формула
Код
=СУММЕСЛИ(номер_смет;C3;сумма_выпол)
находится она на листе 1 в желтых столбцах E и G (распостранена она на более чем 9000 строк и ссылается на листе 2 более чем на 5000 строк) Есть ли какая либо альтернатива данной функции с целью ускорения?
Всем доброго времени суток. В продолжение темы Пересчет только видимых ячеек и по совету многоуважаемого _Boroda_, все же решил пересмотреть формулы... В прилагаемом файле имеется два листа (урезанная версия, реальный файл Лист 1 - более 9000 строк и Лист 2 - более 5000 строк)
Собственно проблема заключается в том, что при работе со вторым листом очень часто необходимо использование автофильтра и при каждом изменении данного автофильтра происходит пересчет всей книг, на более менее слабых машинах это занимает продолжительное время. Как выяснилось хорошенько подвешивает формула
Код
=СУММЕСЛИ(номер_смет;C3;сумма_выпол)
находится она на листе 1 в желтых столбцах E и G (распостранена она на более чем 9000 строк и ссылается на листе 2 более чем на 5000 строк) Есть ли какая либо альтернатива данной функции с целью ускорения?and_evg
and_evg, вы заставляете 9000 раз пройтись по 5000 строк. тут дело не в функции а в её применении. При таких условиях, нужно уходить от формул в сторону MSQuery или PowerQuery, ну или VBA. тут можно как на формулы влиять, включая и отключая пересчет, так и просто все строить через VBA.
and_evg, вы заставляете 9000 раз пройтись по 5000 строк. тут дело не в функции а в её применении. При таких условиях, нужно уходить от формул в сторону MSQuery или PowerQuery, ну или VBA. тут можно как на формулы влиять, включая и отключая пересчет, так и просто все строить через VBA.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
При работе на листе с проблемными формулами: [vba]
Код
Private Sub Worksheet_Activate() 'Включаем в приложении ручной пересчет Application.Calculation = xlManual 'Разрешаем пересчет формул на этом листе Me.EnableCalculation = True End Sub
Private Sub Worksheet_Change(ByVal Target As Range) 'Пересчитываем только те ячейки которые зависят (если есть) от измененной On Error Resume Next Target.Dependents.Calculate End Sub
[/vba]
При работе на другом листе [vba]
Код
Private Sub Worksheet_Deactivate() 'Запрещаем пересчет формул на этом листе Me.EnableCalculation = False 'Включаем в приложении автоматический пересчет Application.Calculation = xlAutomatic End Sub
При работе на листе с проблемными формулами: [vba]
Код
Private Sub Worksheet_Activate() 'Включаем в приложении ручной пересчет Application.Calculation = xlManual 'Разрешаем пересчет формул на этом листе Me.EnableCalculation = True End Sub
Private Sub Worksheet_Change(ByVal Target As Range) 'Пересчитываем только те ячейки которые зависят (если есть) от измененной On Error Resume Next Target.Dependents.Calculate End Sub
[/vba]
При работе на другом листе [vba]
Код
Private Sub Worksheet_Deactivate() 'Запрещаем пересчет формул на этом листе Me.EnableCalculation = False 'Включаем в приложении автоматический пересчет Application.Calculation = xlAutomatic End Sub