#excel #excel-formula
Вопрос:
Рассмотрим следующий пример:
Cell A1 with value 1
Cell A2 with formula =IF(A1>50,1,0)
Cell A3 with whatever calculation depending on A2 =foo(A2)
Когда я изменю значение в A1 на 100, значение в A2 изменится, и это заставит A3 пересчитать. Идеальный. Но, когда я изменяю значение в A1 на 2, то A2 пересчитывает, давая тот же результат, но A3 все равно пересчитает.
Есть ли способ заставить excel не пересчитывать формулы, когда их предшествующие ячейки на самом деле не меняют значения? Моя проблема возникает, когда foo является очень долгой, трудоемкой функцией, а A1 постоянно меняется, но не всегда приводит к изменению A2.
Для воспроизведения проблемы foo
может использоваться следующий энергонезависимый UDF. Для расчета на моем компьютере требуется около 5 секунд.
Function foo(x)
foo = 0
For j = 1 To 100
For i = 1 To 1000000
foo = foo 0.01
Next i
Next j
End Function
Комментарии:
1. является
foo
ли изменчивой функцией?2. @ScottCraner Нет. Изменение любой другой ячейки не приведет к пересчету foo.
3. Я не могу воспроизвести, можешь показать фу, чтобы мы могли проверить?
4. @ScottCraner Пожалуйста, посмотрите мою правку.
5. Насколько я понимаю, если какой-либо из аргументов в UDF будет изменен, UDF произведет пересчет. Поскольку A2 пересчитывается, я думаю, что технически он считается «измененным», даже если расчет приводит к одному и тому же значению. Поэтому я думаю, что это работает по замыслу, и этого нельзя избежать (но я более чем рад, что оказался неправ).