SUMPRODUCT多条件求和
求和与条件求和
SUM和SUMIF :运行时间正比于其数据范围。所以如果数据区是排过序的,就可以适当地选择计算区域来减少计算时间。
SUMIF 和COUNTIF可以使用通配符?和*
DSUM:速度很快,但使用不大方便
l 多条件求和
数组公式的一个经常使用的地方就是用SUM数组进行多条件求和。但它通常很慢。
优化的办法是:
-用SUMPRODUCT代替。
它比SUM数组快约5%-10%,而且还能处理文本和空值。
{=SUM($D$2:$D$10301*$E$2:$E$10301)}
=SUMPRODUCT($D$2:$D$10301*$E$2:$E$10301)
=SUMPRODUCT($D$2:$D$10301,$E$2:$E$10301)
这三个公式结果相同,但第三个公式比前两个约快77%
用SUMPRODUCT条件求和,其形式如下:
SUMPRODUCT(--(条件1),--(条件2),(求和区域))
其中两个减号(--)的作用是把条件的逻辑值转变为数值以便计算,也可用+0和*1代替,但(--)比+0,*1都略快些。
但注意其中的各部分区域范围必须相同,且不能是同一列。
也可使用下式:
SUMPRODUCT((条件1)*(条件2)*(求和区域))
但这个公式略慢于用逗号分割的公式,而且其求和区域内不能有文本值。
-另一个办法是用DSUM代替SUM数组公式
如果多条件求和的数组公式不多,也可用DSUM来代替,它也比数组公式略快。但其缺点是必须有单独的区域来存放条件,所以使用不大方便。