分享

函数 | 绕不过去的SUMPRODUCT

 昆仑圃 2020-09-24
可以求和的函数很多,但是SUMPRODUCT是绕不过去的那个,它不仅可以条件计数还可以求和,且自带数组计算,不用三键,对新手非常友好,今天我们就来聊聊SUMPRODUCT这个函数!

我们还是通过一系列案例,在案例中讲解我们相关知识点!

案例1 | 根据数量和单价求金额


=SUMPRODUCT(E2:E14,F2:F14)


正常应该考虑添加一列计算出金额,然后再求和,SUMPRODUCT可以完成对应的单元格相乘最后相加,当然我们也可以写成一下的样式,可能更好的理解

=SUMPRODUCT(E2:E14*F2:F14)


结果虽然一样,但是下面的大家看上去更直观,SUMPRODUCT 正确的理解是 PRODUCT(乘)+SUM(求和),先乘后加,但是两种写法也是有区别的,这个差别也就是SUMPRODUCT其中一个特性,我们来看一下





如果我们价格中有部分价格还没确定,就好像考试成绩写着缺考一样,这个时候,我们使用乘法的格式是得不到想要的结果的,错误值




但是两个数组分开写是可以的,其中的价格 待确定这项会被忽略,
这个非常符合我们实际情况!

这种我们就来说一下SUMPRODUCT的特性:SUMPRODUCT 将非数值条目视为零,这种的非数值包括逻辑值(TRUE和FALSE),但是值得注意的是他无法忽略错误值,比如下面这样就会报错,想要得到正确的结果,我们需要其他函数辅助
比如IFERROR



遇到错误值正确的处理方式如下:

=SUMPRODUCT(IFERROR(E2:E14,),F2:F14)

IFERROR把错误值转换成了0,这样我们就可以得到正确的结果!

其实SUMPRODUCT还有一个特性,就是要求数组或者区域大小一致,这个好理解,就是尺寸一致,一一对应起来,不能单价3行,数量5行!

案例1,主要带大家认识一下SUMPRODUCT,了解一下数组逗号写好的可以忽略非数值的特性!


案例2 |  单条件求和-东北区域的金额合计


=SUMPRODUCT((B2:B14='东北区域')*E2:E14*F2:F14)


一样如果单价中有文本,需要写成如下公式:

=SUMPRODUCT((B2:B14='东北区域')*1,E2:E14*F2:F14)


肯定有人会问为什么乘以1,所以我们解释一下!由于SUMPRODUT忽略非数值,所以逻辑值也会被忽略,B2:B14='东北区域' 结果是一组逻辑是TRUE和FALSE,

想要计算就需要转成数字,逻辑值记过加减乘除四则运算就会变成数值,其中TRUE*1=1,FALSE*1=0,这样上面就好理解,不是东北区域的也就是都乘以了0,最后结果都是0,东北区域的就乘以1,最后相加OK!

案例3 | 条件计数 - 小易共销售几次


=SUMPRODUCT((C2:C14='小易')*1)


原理我们在案例2中说过,逻辑值乘以1,TRUE*1=1,FALSE*1=0,最后相加,也就是条件计数,当然你也可以使用COUTNIF(S)也是一样!
=COUNTIF(C2:C14,'小易')

案例4 | 多条件求和-华南区域李四的销售金额合计


=SUMPRODUCT((B2:B14='华南区域')*(C2:C14='李四')*E2:E14*F2:F14)


连乘即可,更多条件同理,就不再多啰嗦了!

案例4 | 或者关系-张三和李四的销售数量合计


=SUMPRODUCT((C2:C14='张三')+(C2:C14='李四'),F2:F14)


这里更多的是Excel逻辑值计算的问题,而不是SUMPRODUCT的知识点!
由于同一个单元格不可能既是张三又是李四,(C2:C14='张三')+(C2:C14='李四') 结果只会是1 或者0,可能出现2,这样最后和数量相乘即可

当然我们也可以使用常量数组简化写法!

=SUMPRODUCT((C2:C14={'张三','李四'})*F2:F14)

案例5 |  字段处理后求和-求7月销售数量合计


=SUMPRODUCT((MONTH(A2:A14)=7)*(F2:F14))


这个案例主要是说明,我们可以对某一列或者几列加工处理后作为SUMPRODCUT的条件,比如还可以字符截取,姓赵的销售数量合计等等都是可以的,这样可以让我们灵活!

这里顺便带一下SUMIFS的思路

=SUMIFS(F:F,A:A,'>=2019-7-1',A:A,'<='&EOMONTH(--'2019-7-1',0))

利用EOMONTH找到指定日期的当月最后一天的日期~!


OK,SUMPRODUCT今天我们就说这么多,你会用了吗 ?快去试试吧!

小结
1、忽略非数值,这点算是SUMPRODUCT的一个优点,使用其他函数可能还要使用容错处理

2、SUMPRODCUT虽然好用,但是相对于SUMIF函数而已是一个“慢”函数,当逻辑复杂和数据较多时卡的情况会非常明显,实战中一般会考虑SUMI(S)来替换,尤其复杂量大的情况下!

3、不要使用整列或者整行作为SUMPRODCUT的条件区域,否则一个公式会计算1048576次

4、SUMPRODCUT自带数组计算,案例中从来都没有出现过{}三键录入的情况,这点对于新手是非常的友好!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多