Нелетучий Оценить - PullRequest
       7

Нелетучий Оценить

1 голос
/ 08 мая 2019

У меня есть лист, где все уравнения.В другом листе я хотел бы рассчитать значение функции для разных переменных.Допустим, на листе 2 у меня в формуле A1 = 125 * B1 ^ 2 + 20 * B1 + 222.В Sheet1 в ячейке A10 у меня есть = eval (SUBSTITUTE (FORMULATEXT (Sheet2! A1), " B1", "" & CELL ("address", C10))), поэтому в основном я меняю значение переменной с помощьюотличается в ячейке C10.

Моя функция eval:

Function Eval(Ref As String)
    Application.Volatile
    Eval = Application.ThisCell.Parent.Evaluate(Ref)
End Function

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

1 Ответ

2 голосов
/ 08 мая 2019

Вместо создания пользовательской функции Eval используйте секрет , встроенную функцию EVALUATE , перенесенную из Excel 4.0

Создайте именованный диапазон, называемый чем-то вроде «EvaluatedFormula», и установите для «Refers to:» значение =EVALUATE(SUBSTITUTE(FORMULATEXT(Sheet2!$A$1),"B1","C" & ROW()))

Затем в ячейке A10 вы просто набираете =EvaluatedFormula и BOOM! Это сделано. Это может вычислить более 9000 строк за доли секунды - намного быстрее, чем ваш Eval UDF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...