gpt4 book ai didi

excel - Excel 中的用户定义函数和速度问题

转载 作者:行者123 更新时间:2023-12-02 07:11:32 26 4
gpt4 key购买 nike

我有一个使用几乎所有 UDF 的 Excel 模型。据说有 120 列和 400 多行。计算是垂直进行的,然后是水平进行的 --- 即首先完成第 1 列的所有计算,然后第 1 列的最终输出是第 2 列的输入,依此类推。在每一列中,我调用大约六到七个 UDF,其中调用其他 UDF。 UDF 通常输出一个数组。

每个 UDF 的输入都是许多变量、一些范围变量、一些 double 。范围变量在访问其内容之前会在内部转换为数组。

我的问题如下,我可以在没有 UDF 的情况下构建 Excel 模型,并且当我运行模拟时,我可以在 X 小时内完成所有计算。当我使用 UDF 时,模拟时间为 3 小时或更长。 (为了回答这个显而易见的问题,是的,我需要使用 UDF,因为如果我想对模型进行一些小的更改(例如添加另一种 Assets 类型(它是一个财务模型)),则需要花费近一天的时间来重新制作模型没有 UDF 来适应新的法律/财务结构,使用 UDF 需要大约 20 分钟才能适应不同的财务结构。)

无论如何,我已经关闭了屏幕更新,函数中没有复制和粘贴,Variant类型的使用很少,所有数据都包含在一张纸中,我之前将所有范围类型变量转换为数组获取内容。

除了购买更快的计算机或同等设备以使 VBA 代码/Excel 文件运行得更快之外,我还能做什么?如果需要更多说明,请告诉我。

谢谢!

最佳答案

Excel 处理 UDF 的方式存在速度减慢的错误。每次计算 UDF 时,Excel 都会刷新 VBE 标题栏(您可以看到它闪烁)。对于大量 UDF,这非常慢。在手动计算模式下绕过非常简单:只需使用 Application.Calculate 之类的东西从 VBA 启动计算(您可以使用 OnKey 捕获 F9 等)。

参见http://www.decisionmodels.com/calcsecretsj.htm了解更多详细信息。

关于excel - Excel 中的用户定义函数和速度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com