2017-09-26 55 views
0

式我正在运行VBA代码基本上是:慢宏,解算器以及与UDF的

  1. 集某些细胞等于一定值
  2. 这些被馈送到产生一个数字用于
  3. 求解器的模型改变输入并获得最终数字输出

循环次数约为150次,不是太多次。 这一切都发生在工作簿2中。计算发生在工作簿1中。 在工作簿1中,有相当多的具有用户定义函数的单元格。总共约4000个。

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

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

在此先感谢

安东尼

+0

作为解决方法,您可以将有问题的“工作表1”排除到另一个工作簿中。 –

+0

是的,这是最有可能的选择,谢谢。唯一的问题是模型将不得不为每个工作簿更新数据。把它看作工作表1中的“模型表”,它从外部程序中引入数据。然后Worksheets 2,3,4 ..是来自该数据的分析。如果我将工作表1分解出来,则需要将外部数据放入多个工作簿中,因为我会假设需要在同一工作簿中引用某些内容。 –

回答

0

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

+0

求解器实现了不能用公式完成的事情。例如“Cellx的价值是什么?*复杂的公式在这里* = y UDF在表中,但不被Solver使用 –

+0

只做一个模拟:将包含UDF的单元格转换为值然后运行解算器 – adarti

+0

然后在求解器完成后将它们全部重新打开..?不是所有的单元都具有相同的UDF –