统计利器SUMPRODUCT函数—复杂条件计数与求和
的有关信息介绍如下:Excel中的SUMPRODUCT函数功能十分强大,被誉为万能统计器,凡涉及按条件计数、求和的统计工作都可以交给他去完成,条件再复杂也难不倒他。现在我们就来结识一下这位“大能勇士”吧!他很愿意和您交朋友!
这里有一张人事信息表:
需要根据人事信息表生成一张学历统计报表(人事部门经常做类似的工作)。
下面我们就以此为例来学习一下SUMPRODUCT函数的使用方法。
先来个最简单的——单条件计数:
=SUMPRODUCT((人事信息!G$2:G$21=A4)*1)
功能:得到人事信息表的G2:G21中与A4单元格内容匹配的数量。
公式编辑好下拉到B9单元格。
公式里为什么要乘1呢——*1?我们来分析一下函数执行过程就明白了:人事信息表从G2到G21共计20个单元格依次与本表A4单元格比较判断是否相等,从而得到20个逻辑值(true or false),最后对20个逻辑值求和,可是逻辑值不能进行求和运算,*1 的作用就是将逻辑值转换为数值:true-->1,false-->0。
性别的统计需要两个条件——多条件计数——“与”关系的表达
=SUMPRODUCT((人事信息!$G$2:$G$21=$A4)*(人事信息!$B$2:$B$21=C$3))
第一个条件: (人事信息!$G$2:$G$21=$A4) 判断学历
第二个条件: (人事信息!$B$2:$B$21=C$3) 判断性别
功能:人事信息表的G2:G21与A4单元格内容匹配,同时,人事信息表的B2:B21与C3单元格内容也匹配,得到两个条件同时满足的人数(交集)。
公式编辑好下拉到C9单元格在向右拉到D9单元格。
公式里单元格行标、列标前面为什么要加$呢?为什么有的加有的不加呢?这跟公式下拉或右拉复制有关系,加$是为了把行或列固定住,在拉动的时候不发生变化。
比如 $A4 :下拉一个单元格变成 $A5,再下拉一个单元格变成 $A6,依此类推,但向右拉的时候保持A列不变。
C$3: 下拉的时候保持行号(3)不变,向右拉一个单元格会变成D$3。
记住这个口诀就没问题了:
下拉时需要固定行的在行号前加$,右拉时需要固定列的在列号前加$。
年龄结构的统计——多条件计数
E4单元格输入公式:
=SUMPRODUCT((人事信息!$G$2:$G$21=$A4)*(人事信息!$E$2:$E$21<25))
F4单元格输入公式:
=SUMPRODUCT((人事信息!$G$2:$G$21=$A4)*(人事信息!$E$2:$E$21>=25)*(人事信息!$E$2:$E$21<45))
G4单元格输入公式:
=SUMPRODUCT((人事信息!$G$2:$G$21=$A4)*(人事信息!$E$2:$E$21>=45))
选中E4、F4、G4三个单元格统一下拉。
公式的含义就不多解释了,有了前面的认识很容易理解。
计算平均工资——条件求和
H4单元格输入公式下拉:
=SUMPRODUCT((人事信息!$G$2:$G$21=$A4)*(人事信息!$H$2:$H$21))/SUMPRODUCT((人事信息!G$2:G$21=A4)*1)
公式里有两个SUMPRODUCT(),第一个求工资和,第二个统计人数,用工资和除以人数得到平均工资。
我们重点看一下第一个SUMPRODUCT():
=SUMPRODUCT((人事信息!$G$2:$G$21=$A4)*(人事信息!$H$2:$H$21))
条件: (人事信息!$G$2:$G$21=$A4) 判断学历(条件可以增加)
求和区域:(人事信息!$H$2:$H$21) 满足条件的单元格求和
依据人事信息表制作的学历统计报表做好了。
“或”关系的表达:
前面示例中出现的多条件都是“与”的关系,有时候也会用到“或”的关系,比如要统计博士和硕士学历的员工月工资总额,就要用到“或”的关系:
=SUMPRODUCT(((人事信息!G2:G21=A4)+(人事信息!G2:G21=A5))*(人事信息!H2:H21))
第一个条件: (人事信息!G2:G21=A4) 判断学历为博士
第一个条件:(人事信息!G2:G21=A5) 判断学历为硕士
功能:满足每个条件的记录并在一起视为最终满足条件的记录(并集),将其工资求和。
“与”、“或”复合运用:
曾经协助公安部门调查案件,要求查一下我们公司有没有符合这样条件的人:姓李或姓林、女、40到50岁、湖北或湖南人、大专或中专学历。
先用接近公式表达方式的语言描述一下:
=SUMPRODUCT(((姓李)+(姓林))*(女)*(40以上)*(50以下)*((湖北人)+(湖南人)))
为了公式易读,我们直接在人事信息表中设置公式:
=SUMPRODUCT(((LEFT(A2:A21,1)="李")+(LEFT(A2:A21,1)="林"))*(B2:B21="女")*(E2:E21>=40)*(E2:E21<=50)*((C2:C21="湖北")+(C2:C21="湖南")))
注意事项:
公式中所引用的单元格区域大小必须一致,不支持整列引用(例如A:A)。