sumproduct函数双条件的使用方法(你有踩过sumproduct函数的雷区吗)
很多人都会使用sumproduct函数。
在多行多列数据表格中,先将多列同一行的数据相乘,再把多行的相乘的结果相加求和。
比如下面的这个表:
如果使用SUMproduct函数,就是:
sumproduct(B2:B5,C2:C6),该函数得到的结果就是100
这个的应用案例很多,比如B列是数量,C列是单价,要求快速汇总出总金额。
这样的话,就用这个公式很快就能得出来了。
如果用传统的每一行先乘,再把多行的乘积相加,就比较繁琐了。
但是很多人对于sumproduct函数仅限于这种用法了。一不小心就会踩雷区了。
二、知乎的案例昨天在知乎上看到一个问题:
上面两个图片就是一个完整的提问。
这里面的提问者就踩了雷区了。
三、我的回答:看了他的描述,实际他的需求就是:
满足表B的某个条件下,对表A进行求和
表B就是数组:A7:C9,利用公式计算的话,就可以看到,它是一个数组:
数组B={1,1,1;2,2,2;3,3,3}这个数组有9个元素
表A就是数组:A2:C4,利用公式计算的话,就可以看到,它是一个数组:
数组A={1,2,3;4,5,6;7,8,9}这个数组有9个元素
现在就是从数组B中满足条件:等于2的情况下,对应数组A的同样的位置进行求和
下面是我做的一个SUMPRODUCT公式:
=SUMPRODUCT((区域1=满足条件1)*(区域2=满足条件2)*(…………)*(区域一)*(区域二)*(……))
条件1、条件2、条件3……可以是一个条件也可以是2个条件也可以是三个以上条件
区域一、区域二……可以是一个区域也可以是多个区域,一个区域就是直接求和,多个区域就是先对应的相乘,然后再求和。
根据我的公式,他这个题目就是用下面的公式:
=SUMPRODUCT((A7:C9=G13)*(A2:C4))
我在G13这个单元格,输入1或2或3,输入不同的数字,刚才的公式会有不同的结果:
下面放上结果:
上图,我把A7:C9以及A2:C4做了绝对引用。G13、G14、G15分别输入1、2、3,H13、H14、H15出现三个结果。
四、与提问者的进一步探讨“我原来的做法为什么错我还是有点疑问”对此我回复了提问者:
“你的公式是使用错误,不是你这种用法。
1.如果要使用条件,就得用乘法,乘法前后都是用括号作为一个整体。
2.如果你用逗号分隔为两个参数 那么逗号两边的数组必须是一样多,且必须为数值型的。你在这里加了条件后就是布尔运算了,变成非数值型了,所以另一个答主加了两个- 通过两个短横线把非数值型变成数值型。”
然后我再次把提问者的公式输入到WPS表格里,利用公式计算,跟踪了下过程,得到:
得到下面的步骤:
第一步得到:
第二步得到:
第三步得到:
第四步得到:
这里就是雷区了(存在非数值型的数据)
第五步得到:
关键点就是在第四步,这个时候做了布尔运算,结果不是数值,是真和假,真假是无法用于逗号分割的sumproduct函数的。因为要用两个参数的话,两个参数必须都是数组,且元素个数一样多,且都是数值型。
要想改变为数值型,就在前面加上--,或者加上1*
结果如下:
或者:
1*任何数(布尔型)还是等于任何数(变成了数值型)
--得正,因为做了加减乘除运算后,变为数值型了。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com