我有一个工作表,其中所有方程式都在其中。在其他工作表中,我想计算不同变量的函数值。假设在Sheet2中,我在A1中的公式为= 125 * B1 ^ 2 + 20 * B1 + 222。在工作表A1的Sheet1中,我具有= eval(SUBSTITUTE(FORMULATEXT(Sheet2!A1),“ B1”,“ ”&CELL(“ address”,C10)))),所以基本上我更改了变量的值单元格C10中有不同。
我的评估函数是:
Function Eval(Ref As String)
Application.Volatile
Eval = Application.ThisCell.Parent.Evaluate(Ref)
End Function
问题是计算需要永远的时间,而我想在没有Volatile选项的情况下获得相同的结果,但是不知道如何实现。
答案 0 :(得分:2)
使用自Excel 4.0遗留下来的secret, built in EVALUATE
function,而不是创建自定义Eval
函数
创建一个名为“ EvaluatedFormula”之类的命名范围,并将“ Refers to:”设置为=EVALUATE(SUBSTITUTE(FORMULATEXT(Sheet2!$A$1),"B1","C" & ROW()))
然后,在单元格A10中,只需键入=EvaluatedFormula
,然后输入BOOM!完成。这可以在不到一秒钟的时间内计算出9,000多个行-比您的Eval
UDF