使用UDF的慢速宏,求解器和公式

时间:2017-09-26 06:50:45

标签: vba performance excel-vba user-defined-functions solver

我正在运行基本上的VBA代码:

  1. 将某些单元格设置为等于某些值
  2. 这些被送入产生数字的模型
  3. 解算器用于更改输入并获取最终数字输出
  4. 循环次数约为150,不是太多。 这一切都发生在工作簿2中。计算在工作簿1中进行。 在工作簿1中,有相当多的单元格中包含用户定义的函数。总共约4000个。

    运行VBA代码时,整个过程需要一分钟才能完成。如果我删除工作表1中的数据(因为它不需要这个特定的宏),那么VBA代码只需要大约5秒钟。这很好。

    有没有办法有效地关闭/锁定/忽略所有这些UDF单元减慢宏?只是那个范围的数据。我已经尝试过ManualCalc Vs AutoCalc,但似乎没有这样做。

    提前致谢

    安东尼

1 个答案:

答案 0 :(得分:0)

我的经验是,使用解算器时,VBA代码应仅限于工具调用。关闭AutoCalc将不会执行任何操作,因为解算器强制计算当前正在考虑的情况。在我看来,你必须使用公式,因为它们的计算速度要快得多。