今天给大家介绍一下Excel中的“万能公式”——sumproduct函数。为什么说万能呢?因为它可以做很多事情。废话不多说,我们开始吧
sumproduct 函数和参数
sumproduct 函数:返回相应数组或区域的乘积之和
第一个参数:Array1
第二个参数:array2
第三个参数:array3,
.......最多 255 个数组
数组:表示数组或单元格区域
需要注意的是,使用sumproduct函数时,参数中的元素个数必须相等,比如第一个区域选中了6个单元格,那么第二个区域也必须选中6个单元格,否则会返回错误值。
参数图如下
参数这么简单,具体怎么用呢?我来实际操作一下,如下图:
Sumproduct函数中的参数为单价列与销量列,我们可以看作是将对应元素相乘然后求和。
我们可以这样理解:先用苹果的价格乘以销售额,得到苹果的销售额,再用橙子的价格乘以销售额,得到橙子的销售额,以此类推。等到所有水果都有了总销售额后,再把它们加起来。这就是最基本的 sumproduct 函数。现在我来介绍一下 sumproduct 函数的一些高级用法。
1.单条件计数
公式:=SUMPRODUCT((B2:B25=$G$3)*1))
函数中,如果部门列等于“成型车间”,则表示将部门列中每个元素与成型车间判断一次,看结果是否等于成型车间。部门列的元素个数一共计算了几次,比如部门列有25个人,就判断25次,如果等于成型车间就返回TRUE,不等于就返回FALSE。TRUE可以看作等于1,FALSE可以看作等于0,最后乘以1,1*1=1,1*0=0。只有返回结果为TRUE才等于1,然后相加得出结果。下图为函数的运行方法。
2. 多条件计数
成型车间需达到2级的员工人数
公式:=SUMPRODUCT((B2:B25=$G$3)*1,(C2:C25=2)*1)
多项计数和单项条件求和很类似,只是多了一个条件。我们还是把计算结果列出来,方便大家理解。
首先检查部门列中是否有元素等于成型车间,然后检查等级列中是否有元素等于成型车间,然后将结果乘以1直到达到该值,最后将两个数组的结果相乘然后求和。
3. 排序
公式:=SUMPRODUCT(($B$2:$B$13>B2)*1)+1
这其实就是单条件计数,只不过最后结果加1
4.单条件求和
公式:=SUMPRODUCT((C3:C19=G4)*1,E3:E19)
先用条件判断成型车间人数,然后工资列,然后求和,其实无非就是单条件count然后join工资列
5. 多重条件和
公式:=SUMPRODUCT((B2:B25=$G$3)*1,(C2:C25=2)*1,D2:D25)
和多条件计数很类似,只不过把工资列加到了sum中。如果还不明白的话,下图从左到右计算关系,相信大家一看就明白了。
6. 隔行求和
如下图所示,我们要计算第一季度各个仓库的出库和入库数量之和,也可以使用sumproduct函数来解决这个问题。
出库仓公式:=SUMPRODUCT(($B$2:$G$2=$H$2)*(B3:G3))
库存公式:=SUMPRODUCT(($B$2:$G$2=$I$2)*(B3:G3))
我们只需要输入相应的公式就可以填下来了,这其实就是SUMPRODUCT函数在多条件查询中的应用。
7.统计非重复数据的数量
如下图所示,这里我们要统计 1 班的学生人数。对于这道题,其实我们只需要算出不重复姓名的人数,我们只需要把公式设为 =SUMPRODUCT(1/(COUNTIF(B2:B26,B2:B26))) 就可以得出不重复姓名的人数,也就是 1 班的学生人数。
这里的 COUNTIF(B2:B26,B2:B26) 是一个数组公式。比如我们假设鲁班出现了三次,那么这个公式就会得到三个 3。然后我们把这个结果除以 1,得到三分之一。最后 SUMPRODUCT 会把这三分之一加在一起得到 1。这样就能保证每个人的结果都是 1,达到不重复的效果。
8.一维表转为二维表
首先我们来了解一下什么是一维表,什么是二维表。简单来说,一维表我们只需要看一个维度就能明白数据代表什么意思,而二维表则需要看两个维度才能明白数据代表什么意思。它们各有各的优势,一维表比较适合函数计算,二维表则会减少数据占用的单元格数量。如下图所示,我们只需要输入公式,就能将一维表转化为二维表。
=SUMPRODUCT(($A$3:$A$22=$F3)*($B$3:$B$22=G$2)*($C$3:$C$22))
拖到右边填空,这个本质上就是多条件查询,原理我之前跟大家讲过了,就不多说了。