为什么函数SUMIFS比迭代(for)

如果其他工作簿已closures,Excel SUMIFS函数将无法执行。 所以,我做了一个SUMIFS函数打开我的工作簿,迭代通过“for”循环,并validation值列是否需要添加在我的总variables。

我做了另一个函数,删除我的'for'循环,并使用“WorksheetFunction.SumIfs(…)”。 我的新function比旧的function跑得最快。

什么是Excel函数和VBA迭代背后的魔力?

来自: http : //msdn.microsoft.com/zh-cn/library/ff726673.aspx#xlUsingFuncts

(强调加)

用户定义的函数

用C或C ++编程并使用C API(XLL附加函数)的用户定义函数通常比使用VBA或自动化(XLA或自动化加载项)开发的用户定义函数执行得更快。 有关更多信息,请参阅开发Excel 2010 XLL。

XLM函数也可以很快,因为它们使用与C XLL插件函数相同的紧密耦合的API。 VBA用户定义函数的性能对编程和调用它们很敏感。

更快的VBA用户定义的function

使用Excel公式计算和工作表函数通常比使用VBA用户定义的函数要快。 这是因为每个用户定义的函数调用都有一个小的开销,并且将大量的信息从Excel传递到用户定义的函数。 但是精心devise和调用的用户定义的函数可能比复杂的数组公式快得多。

获得更多见解的一种方法是testing不同input大小的性能比率如何变化。 例如,如果input大小增加100倍时性能比保持不变,则可能是由于VBA抽象开销。