gpt4 book ai didi

excel - VBA - 为什么 VBA UDF 与 native Excel 函数相比这么慢?

转载 作者:行者123 更新时间:2023-12-04 21:19:25 27 4
gpt4 key购买 nike

假设我编写了以下 VBA UDF:

Function TestFunction()
TestFunction = 0
End Function

然后我将它用于工作表中的前 100000 行。执行需要几分钟时间。

相反,如果我对相同数量的行使用 TODAY(),则执行只需 3-4 秒。

谁能告诉我为什么以及是否有加速 UDF 的方法?

谢谢!

最佳答案

几个原因。

VBA 函数需要在 UI/主线程之外按顺序运行,编译后的 p 代码需要由 VBA 运行时解释。

native 函数是 native 。它们(大概 - AFAIK 它们是用 C++ 编写的)已经编译为易于执行且不需要重新编译和/或解释的机器代码。一些 native 函数还可以利用多线程和“后台”计算。

至于加速您的 UDF,我们需要为此查看您的 UDF。一个除了分配文字返回值之外什么都不做的函数,没有太多优化空间吗?

UDF 很棒。但它们不是 Elixir 。如果我想将值 0 写入 A1:A1000000,我会执行 Sheet1.Range("A1:A1000000").Value = 0,那将是近乎即时的。

如果您要计算数十万个宏,请考虑研究宏而不是 UDF。

关于excel - VBA - 为什么 VBA UDF 与 native Excel 函数相比这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58291061/

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