Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 为什么SUMIFS函数优于iterate(for)_Excel_Vba_Optimization - Fatal编程技术网

Excel 为什么SUMIFS函数优于iterate(for)

Excel 为什么SUMIFS函数优于iterate(for),excel,vba,optimization,Excel,Vba,Optimization,如果关闭其他工作簿,则无法执行Excel SUMIFS函数。所以,我做了一个SUMIFS函数,它打开我的工作簿,通过“for”循环进行迭代,并验证是否需要将value列添加到我的total变量中 我做了另一个函数,它删除了我的“for”循环,并使用了“WorksheetFunction.SumIfs(…)”。我的新函数比旧函数运行得快 excel函数和VBA迭代背后的魔力是什么?来自: (增加重点) 用户定义函数 用户定义的函数,用C或C++编程,并使用 C API(XLL插件函数)通常比 使用

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

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

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

来自:

(增加重点)

用户定义函数

<>用户定义的函数,用C或C++编程,并使用 C API(XLL插件函数)通常比 使用VBA或Automation(XLA)开发的用户定义函数 或自动加载项)。有关详细信息,请参见开发Excel 2010年XLLs

XLM函数也可以很快,因为它们使用相同的函数 耦合API作为C XLL外接程序函数。VBA的性能 用户定义的函数对编程和调用它们的方式很敏感

更快的VBA用户定义函数

使用Excel公式计算和 工作表函数,而不是使用VBA用户定义函数。这是 因为每个用户定义的函数调用都有很小的开销 将信息从Excel传输到 用户定义的函数。但设计良好,称为用户定义函数 函数可以比复杂的数组公式快得多


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