Excel函数sumproduct函数的含义及各种用法
今天跟大家一起来认识一个很好用的函数:sumproduct函数。
sumproduct函数,sumproduct是由两个英文单词组成,即sum和product。Sum代表求和,product代表乘积,组成的sumproduct就是乘积之和。
现在我们来详细说一下sumproduct函数的含义、语法,以及它的基础应用。
一、sumproduct函数介绍
1、sumproduct函数——含义
Sumproduct函数,在定的几组数组中,把数组间对应的元素相乘,最后返回乘积之和。
2、sumproduct函数——语法格式
=sumproduct(数组1,数组2,数组3, ……)
数组里面的相应元素进行相乘后,再将乘积求和。
比如:
=SUMPRODUCT({1;2;3;4;5},{1;2;3;4;5})=1*1+2*2+3*3+4*4+5*5=25
注意:数组参数必须具有相同的维数,否则返回错误。意思就是如果第一个数组有5个元素,那么其它数组也必须是5个元素。
当然,也可以这样:
=sumproduct(区域1,区域2,区域3, ……)
比如:=SUMPRODUCT(A1:A3,B1:B3,C1:C3)=A1*B1*C1+A2*B2*C2+A3*B3*C3
同理,要求各个区域的大小和形式是一致。比如区域1是A1:A3,单列3行,那么其它区域也必须是单列3行。
总结:Sumproduct是把每个区域或每个数组对应位置的值相乘,最后再将乘积求和。
二、sumproduct函数应用
现在我们要用示例具体来看下sumproduct函数的各种玩法。
以下面一张图为数据源:
现准备统计以下问题:
1、统计表中所有商品总的采购金额。
2、统计表中采购的水果总重量。
3、统计表中采购的水果总金额。
4、统计表中单价30元以下的水果的采购总金额。
这四个问题归纳一下,第一个问题为简单数组求和;第二、三个问题为单条件求和;第四个问题为多条件求和。
他们用sumproduct函数分别怎么统计?看下面:
1、简单数组求和
统计表中所有商品总的采购金额。
我们平时一般都是分两步,先将单价*重量算出来,然后再用sum函数将结果求和。
如果是用sumproduct函数,一步就直接搞定,
公式为:=SUMPRODUCT(C3:C11,D3:D11)
或者,你也可以把公式里的逗号(,)变乘号(*),即
=SUMPRODUCT(C3:C11*D3:D11)
两个公式结果是一样的。
但是用逗号和用乘号的区别在于:
公式用逗号时,在求和统计时,可以将非数值型的数组元素,当0处理;
公式用乘号时,数组元素就不能存在无法计算的内容,如文本。
2、单条件求和
统计表中采购的水果总重量。
用sumproduct函数表示,即:
公式一:
=SUMPRODUCT((B3:B11="水果")*D3:D11)
公式二:
=SUMPRODUCT(N(B3:B11="水果"),D3:D11)
公式三:
=SUMPRODUCT((B3:B11="水果")*1,D3:D11)
三个公式计算得到的结果都一样,只是写法不一样。
公式中的(B3:B11="水果"),是一个条件,判断区域B3:B11是否等于"水果",结果返回逻辑值true或是false。在这里,这一条件表达式最终运算的结果为:
{FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE}
技巧提示:你在编辑栏中,单独选中这一条件表达式,然后按F9键,就可以看到结果。
那么经过这一步运算后,
公式一得到的是:
=SUMPRODUCT({FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE}*D3:D11)
也就是两个数组相乘,此时逻辑值直接参与运算符进行数值计算时,TRUE会自动转化为1,FALSE转化为0,
=SUMPRODUCT({0;1;0;1;1;0;1;0;0}*D3:D11),
将单元格区域D3:D11的数据代入进去,就是:
=SUMPRODUCT({0;1;0;1;1;0;1;0;0}*{20;20;60;40;30;20;10;15;30}),
到这里就明白了,就是两个数组相乘了。
公式二在经过条件表达式那步运算后,得到的是:
=SUMPRODUCT(N{FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE},D3:D11)
那公式二为什么要在条件表达式外面加个N?
这里的N是一个函数,用来将不是数值形式的值转换为数值形式。
因为当sumproduct函数公式里面用的是逗号时,就表示逗号两边是作为独立的参数参与乘积,也就是条件表达式返回的逻辑值就作为独立参数存在了,没有直接参与任何运算符(比如:乘号*)的运算,它是通过sumproduct内部机制进行乘积。上面我们说过sumproduct函数会将非数值型的数组元素,当0处理。
所以条件表达式返回的逻辑值不管是TRUE还是FALSE都会全部被直接当作0对待。
因此,我们才要用N函数来将逻辑值转化为对应的数值1或0。
知道了公式一和公式二的意思后,公式三就不难理解了。
公式三在经过条件表达式那步运算后,得到的是:
=SUMPRODUCT(({FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE})*1,D3:D11)
在条件表达式后面加了*1,也是为了让逻辑值直接参与运算符的运算,将其结果转化为1或0的数组元素。
总结:
我们先把sumproduct函数逗号或乘号前后的数据用A、B来代替,表达为:
=SUMPRODUCT(A,B)和=SUMPRODUCT(A*B)。
当为逗号时,A、B必须同时都是数值或者数组,不能一个是数值,一个是数组;
当为乘号时,A、B可以同时都是数值或者数组,也可以一个是数值一个是数组。
那现在要统计采购的水果总金额,公式怎么写,懂了吧?
直接见下图:
3、多条件求和
统计表中单价30元以下的水果的采购总金额。
公式:
=SUMPRODUCT((B3:B11="水果")*(C3:C11<30)*C3:C11*D3:D11)
总结:
SUMPRODUCT多条件统计,不管条件有多少,我们只管在公式里,将条件用括号括起来,再用乘号(*)把各个条件连接起来就行了。