为什么Excel数组公式变慢?

时间:2016-05-10 20:50:04

标签: arrays excel

我在网上很多地方都读过,使用数组公式的一个缺点就是它们很慢(并且使用中间辅助列可以加快速度)。

给出的一般解释是他们正在做很多工作。它们是,但帮助公式肯定也必须再现相同数量的工作分布在不同的细胞。

我想更详细地了解一下:

  1. 为什么数组公式很慢?
  2. 可能不是这样的情况?

1 个答案:

答案 0 :(得分:1)

我们有一个具体的例子:

enter image description here

公式:

D2:E11中的

=IF($A2=D$1,$B2)
<{1}}和D12中的

E12
<{1}}和=SUM(D2:D11) 中的

D13

作为使用[Ctrl] + [Shift] + [Enter]

确认的数组公式 <{1}}和E13中的

{=SUM(IF($A$2:$A$11=D$1,$B$2:$B$11))}

那么,如果D14中的某些内容发生了变化,会发生什么?

在辅助列中,只有那些公式需要重新计算,这些公式指的是实际已更改的单元格。当然,必须重新计算E14=SUMIF($A$2:$A$11,D$1,$B$2:$B$11) 中的总和。但这正是Excel开发的原因所在。所以该程序可能已经过优化,可以完成这个非常高效的工作。

必须完全重新计算数组公式,而不考虑实际更改的单元格。在A2:B11中每次更改后,这是10 D12个函数和E12。而且没有任何优化。数组上下文仅导致IF函数(默认情况下需要一个条件和一个value_if_the_criteria_is_true)对条件数组中的每个条件执行多次,并提供结果数组,然后由SUM求和

A2:B11也必须完全重新计算。但是这将通过预编译函数IF来完成,该函数已经过优化。该函数不是简单地调用SUM函数10次,就像数组公式那样。

因此,如果涉及到性能,那么带有辅助列的解决方案将是最好的,然后是SUMIF,并且数组公式肯定是性能最低的解决方案。

但是,如果有很多数据单元影响公式或者工作表中有很多数组公式,那么性能差异当然是显而易见的。因此,如果需要使用数组公式,那么那些不应该将整列或行作为数组,并且不应该在表中放置数千个数组公式。