如果关闭其他工作簿,Excel SUMIFS 函数将无法执行。所以,我做了一个 SUMIFS 函数来打开我的工作簿,通过“for”循环进行迭代并验证是否需要将值列添加到我的总变量中。
我做了另一个删除我的“for”循环并使用“WorksheetFunction.SumIfs(...)”的函数。我的新功能比旧功能运行得更快。
excel函数和VBA迭代背后的魔力是什么?
如果关闭其他工作簿,Excel SUMIFS 函数将无法执行。所以,我做了一个 SUMIFS 函数来打开我的工作簿,通过“for”循环进行迭代并验证是否需要将值列添加到我的总变量中。
我做了另一个删除我的“for”循环并使用“WorksheetFunction.SumIfs(...)”的函数。我的新功能比旧功能运行得更快。
excel函数和VBA迭代背后的魔力是什么?
来自:http: //msdn.microsoft.com/en-us/library/ff726673.aspx#xlUsingFuncts
(重点补充)
用户定义的函数
使用 C 或 C++ 编程并使用 C API(XLL 插件函数)的用户定义函数通常比使用 VBA 或自动化(XLA 或自动化插件)开发的用户定义函数更快。有关详细信息,请参阅开发 Excel 2010 XLL。
XLM 函数也可以很快,因为它们使用与 C XLL 插件函数相同的紧密耦合 API。VBA 用户定义函数的性能对您如何编程和调用它们很敏感。
更快的 VBA 用户定义函数
使用 Excel 公式计算和工作表函数通常比使用 VBA 用户定义函数更快。这是因为每个用户定义函数调用的开销很小,而将信息从 Excel 传输到用户定义函数的开销很大。但精心设计和调用的用户定义函数可以比复杂的数组公式快得多。
获得更多洞察力的一种方法是测试性能比如何随着不同的输入大小而变化。例如,如果输入大小增加 100 倍时性能比保持大致相同,则可能是由于 VBA 抽象开销所致。