一、sumproduct函数的功能。
从字面上来看,sumproduct由2个英文单词组成。sum是和,product是积,所以就是乘积之和的意思。
官方给的定义是:sumproduct函数是在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和。
二、sumproduct函数的语法。
sumproduct(array1, [array2], [array3], ...)。
其中,array1, [array2], [array3]为数组参数。
注意:
(1)数组参数必须具有相同的维数,否则,函数sumproduct将返回错误值#value!。
(2)函数sumproduct将非数值型的数组元素作为0处理。
(3)如果只有1个数组,就直接对这个数组里面的所有值相加,然后返回相加的结果。
三、单条件计数。
实例:统计下图中有多少个“面膜”产品。
具体操作步骤如下:
1、选中h4单元格 -- 在编辑栏中输入公式“=sumproduct(--($d$3:$d$11=g4))” -- 按回车键回车即可。
2、动图演示如下。
3、公式解析。
(1)$d$3:$d$11=g4:
d3:d11单元格区域是一个数组,判断数组中的每一项是否跟g4单元格的内容“面膜”相等,如果相等,返回true,否则,返回false。此时公式得到的是一组逻辑值数组{true;false;false;true;false;false;false;false;false}。
(2)--($d$3:$d$11=g4):
在sumproduct函数中,逻辑值true和false会直接被当做0来处理,所以在前面加上两个负号“--”将逻辑值true转成1,将逻辑值false转成0。此时公式得到的是一组1和0数组{1;0;0;1;0;0;0;0;0}。
(3)公式的计算过程如下图。
四、单条件求和。
实例:统计下图中“面膜”产品的销售额总和。
具体操作步骤如下:
1、选中h4单元格 -- 在编辑栏中输入公式“=sumproduct(--($d$3:$d$11=g4),e3:e11)” -- 按回车键回车即可。
2、动图演示如下。
3、公式解析。
(1)--($d$3:$d$11=g4):
d3:d11单元格区域是一个数组,判断数组中的每一项是否跟g4单元格的内容“面膜”相等,如果相等,返回true,否则,返回false。此时公式得到的是一组逻辑值数组{true;false;false;true;false;false;false;false;false}。在sumproduct函数中,逻辑值true和false会直接被当做0来处理,所以在前面加上两个负号“--”将逻辑值true转成1,将逻辑值false转成0。此时公式得到的是一组1和0数组{1;0;0;1;0;0;0;0;0}。
(2)公式的计算过程如下图。
五、多条件求和。
实例:统计下图中姓名为“李明芳”,产品为“面膜”的销售额。
具体操作步骤如下:
1、选中i4单元格 -- 在编辑栏中输入公式“=sumproduct(--($c$3:$c$11=g4),--($d$3:$d$11=h4),$e$3:$e$11)”-- 按回车键回车即可。
2、动图演示如下。
3、公式解析。
(1)--($c$3:$c$11=g4),--($d$3:$d$11=h4):
先判断c3:c11数组中的每一项是否跟g4单元格的内容“李明芳”相等,如果相等,返回true,否则,返回false。再判断d3:d11数组中的每一项是否跟h4单元格的内容“面膜”相等,如果相等,返回true,否则,返回false。在sumproduct函数中,逻辑值true和false会直接被当做0来处理,所以在前面加上两个负号“--”将逻辑值true转成1,将逻辑值false转成0。该公式返回的结果如下。
(2)公式的计算过程如下图。
上面的公式我们也可以写成“=sumproduct(($d$3:$d$11=h4)*($e$3:$e$11=i4)*$f$3:$f$11)”,得到的结果都是2655。
观察上面两条公式,不难发现,得到的结果是一样的,但是第一条公式数组之间是用逗号隔开,第二条公式数组之间是用星号隔开,关于逗号和星号,有什么区别呢?
公式一有3个参数,而公式二只有1个参数。(判断有几个参数要看是不是用逗号去分隔开)。第一个公式中,三个区域相乘这一步是由函数来完成的,函数做了两件事,先让三个区域的数据对应相乘,再把乘积相加。在第二个公式中,三个区域相乘是由数组计算来完成的,函数只做了一件事,就是把乘积值相加。
下图中的j4单元格公式为:=sumproduct(--($d$2:$d$11=h4),--($e$2:$e$11=i4),$f$2:$f$11),该公式参数之间使用逗号隔开,得到的结果是正确的“2655”。j5单元格公式为:=sumproduct(($d$2:$d$11=h4)*($e$2:$e$11=i4)*$f$2:$f$11),该公式参数直接使用星号隔开,得到的结果是错误值“#value!”。
第一个公式中用的是逗号(,),有3个独立的参数。sumproduct函数首先让3组数据对应相乘,相乘的时候会检查数据并把非数值型数据作为0处理,然后再把乘积相加。因此,d2“姓名”和e2“产品”会当成0来处理,公式可以得到正确结果。
第二个公式中使用星号(*),结果错误,为什么呢?因为计算的区域中d2“姓名”和e2“产品”是文本,文本是不能进行乘法运算的,sumproduct函数这时只负责把乘积相加。所以公式一开始就已经得到错误值“#value!”了。
关于逗号和星号的区别,大家看了本篇文章应该有了更深的理解,如果您还有不懂之处,可以在评论区留言或私信找小编哦~
想要本期教程的练习文件,私信发送“011”即可获取!
如果您觉得文章对您有帮助,可以给小编赞赏鼓励哦,您的赞赏、关注、转发、评论、点赞都是对小编的鼓励与支持,谢谢您!