为什么函数SUMIFS优于迭代(for)

时间:2012-07-16 14:36:06

标签: excel vba optimization

如果关闭其他工作簿,则无法执行Excel SUMIFS功能。所以,我做了一个SUMIFS函数打开我的工作簿,通过​​'for'循环进行迭代,并验证是否需要在我的总变量中添加value列。

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

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

2 个答案:

答案 0 :(得分:2)

来自:http://msdn.microsoft.com/en-us/library/ff726673.aspx#xlUsingFuncts

(强调补充)

  

用户定义的功能

     

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

     

XLM功能也可以很快,因为它们使用相同的功能   耦合API作为C XLL加载项功能。 VBA的表现   用户定义的函数对您编程和调用它们的方式很敏感。

     

更快的VBA用户定义函数

     

使用Excel公式计算通常会更快   工作表函数比使用VBA用户定义函数。这是   因为每个用户定义的函数调用都有一个小的开销   并且显着的开销将信息从Excel传输到   用户定义的函数。但设计良好,称为用户自定义   函数可以比复杂的数组公式快得多。

答案 1 :(得分:0)

获得更多洞察力的一种方法是测试性能比如何随不同的输入大小而变化。例如,如果输入大小增加100倍时性能比保持不变,那么可能是由于VBA抽象开销。