我有一个使用几乎所有 UDF 的 Excel 模型。据说有 120 列和 400 多行。计算是垂直进行的,然后是水平进行的——也就是说,首先完成第1列的所有计算,然后第1列的最终输出是第2列的输入,依此类推。在每一列中,我调用大约六到七个UDF,其中调用其他 UDF。 UDF 通常输出一个数组。
每个 UDF 的输入是多个变量、一些范围变量、一些双精度数。范围变量在访问其内容之前会在内部转换为数组。
我的问题如下,我可以在没有 UDF 的情况下构建 Excel 模型,并且当我运行模拟时,我可以在 X 小时内完成所有计算。当我使用 UDF 时,模拟时间为 3 小时或更长。 (为了回答这个明显的问题,是的,我需要使用 UDF,因为如果我想对模型进行一些小的更改(例如添加另一种资产类型(它是一个财务模型)),则需要花费近一天的时间来重新制作模型如果没有 UDF 来适应新的法律/财务结构,则使用 UDF 需要大约 20 分钟来适应不同的财务结构。)
无论如何,我已经关闭了屏幕更新,函数中没有复制和粘贴,变体类型的使用很少,所有数据都包含在一张纸中,我在获取内容之前将所有范围类型变量转换为数组。
除了购买更快的计算机或同等设备以使 VBA 代码/Excel 文件运行得更快之外,我还能做什么?如果需要更多说明,请告诉我。
Thanks!
Excel 处理 UDF 的方式存在速度减慢的错误。每次计算 UDF 时,Excel 都会刷新 VBE 标题栏(您可以看到它闪烁)。对于大量 UDF,这非常慢。
在手动计算模式下,绕过非常简单:只需使用 Application.Calculate 之类的东西从 VBA 启动计算(您可以使用 OnKey 捕获 F9 等)。
see http://www.decisionmodels.com/calcsecretsj.htm http://www.decisionmodels.com/calcsecretsj.htm了解更多详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)