原创作者: 卢子

今天,卢子来一场求和函数对比的文章,对于普通人看完你就明白哪个函数更适合你?




multiprocess 有返回值 sumproduct返回错误值_multiprocess 有返回值


用过数组公式的都知道,对于多条件求和或计数,我们一般都采用SUM函数的数组公式来计算。根据学部跟性别两个条件统计总成绩。


multiprocess 有返回值 sumproduct返回错误值_access sum函数出错_02


这时会采用SUM函数的数组公式进行解决。

=SUM(($E$2:$E$16=G2)*($C$2:$C$16=H2)*$D$2:$D$16)

确实这是解决问题的一种方法,但往往对于初用数组公式的朋友,常常会遗忘用Ctrl+Shift+Enter组合键来结束,而用Enter键直接结束,导致出错。

出于这个原因,能否用SUMPRODUCT函数来代替常用SUM函数的多条件求和公式呢?结果答案是肯定的。

把上面的公式稍做修改即可。

=SUMPRODUCT(($E$2:$E$16=G2)*($C$2:$C$16=H2)*$D$2:$D$16)

可以直接用Enter来结束,函数仍然可以正确计算结果。

原因在于:SUMPRODUCT函数本身就支持数组间运算(相同尺寸的数组相乘后再加总),因此我们不需要用数组公式组合键来结束。

对于多条件求和,最后一个*也可以用,代替。

=SUMPRODUCT(($E$2:$E$16=G2)*($C$2:$C$16=H2),$D$2:$D$16)

但是并不是所有情况下都可以用,代替*,如现在只是根据学部统计成绩。

=SUMPRODUCT(($E$2:$E$16=G2)*$D$2:$D$16)

用,代替*,会得到错误的结果。


multiprocess 有返回值 sumproduct返回错误值_数组_03


如果多个条件这样并列写入,系统默认是用相乘来运算,但是SUMPRODUCT函数不支持逻辑值数组常量间相乘,因此请一定要将逻辑值转换成数值才行。

将逻辑值转换成数值可以用--、*1、+0等等。

=SUMPRODUCT(--($E$2:$E$16=G2),$D$2:$D$16)

,代替*有两个好处:

①当数据源出现文本值的时候当做0处理,进行运算就不会出错,而用*就会出错。


multiprocess 有返回值 sumproduct返回错误值_数组_04


②运算速度更快。

也就是说,在大多数情况下用SUMPRODUCT函数可以取代SUM函数的数组公式,无需按三键结束这一点有极大的优势。

当然了,如果只是普通的条件求和,用SUMIFS函数是最理想的。

函数语法:

=SUMIFS(求和区域,条件区域1,条件1,求和区域2,条件2)

刚刚的多条件求和,根据学部和性别,获取总成绩。

=SUMIFS(D:D,E:E,G2,C:C,H2)


multiprocess 有返回值 sumproduct返回错误值_H2_05


成绩含有文本的情况下,SUMIFS函数也可以轻松解决。

=SUMIFS(D:D,E:E,G2)


multiprocess 有返回值 sumproduct返回错误值_multiprocess 有返回值_06


在处理常规的条件求和,SUMIFS函数无疑是最好的,公式简洁,运算效率最高,绝对的王者。