学生成绩统计分析中,我们经常要对各种数据段进行计数,如何按条件统计,方法最为快捷莫过于使用公式,主要有COUNT、COUNTIF、SUM、SUMIF等函数编写的公式,方法千差万别,效果各有千秋。在实际应用中,对于单个条件推荐使用COUNTIF函数;而需要计算符合两个及以上条件的数据个数,笔者更喜欢用SUMPRODUCT函数。Excel中的帮助文件对SUMPRODUCT函数的解释比较简短,只介绍了它乘积之和的作用,即在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和(本文对此不再详细阐述);而它在多条件计数方面却有独特的魅力,笔者将在下面详细讲解它在成绩统计中的作用与运用。
【需求分析】根据高三年级成绩统计(选取部分数据做范例),期望显示出如总分达线人数、小学科1B1C人数、总分达线同时满足1B1C人数(如图1)。
图1
注:高考小学科中,物理、化学、生物、政治、地理、生物分为:A+、A、B+、B、C、D六个等级,1B1C指学生所选两门高考小科目其中一门达到B及以上(包括A+、A、B+),另一门至少达到C及以上(包括A+、A、B+、B),1B1C往往是升学达线的最低要求,所以常作为必统计之数据。
问题1:求总分达线人数
【解决方法】此乃单个条件计数,常用COUNTIF函数(按条件计数函数),格式为:=COUNTIF(条件区域,条件)
例如:求总分达300分的人数,那么K7=COUNTIF(D2:D29,">=300")
【问题1拓展】如果此时需要求出各个班级总分达300分的人数(如图2),COUNTIF就无法做到两个不同数据区域不同条件的筛选了,那么该如何解决?
图2
【方法应用1】Excel 2007以上版本,可用COUNTIFS函数,格式为:=COUNTIFS(条件区1,条件1,条件区2,条件2....)
例如:求5班总分300以上的人数,则单元格K8=COUNTIFS(D2:D29,">=300",A2:A29,"5"),表示统计总分大于等于300分并且班级为5的个数。
【方法应用2】使用SUMPRODUCT函数(乘积之和函数),这里不用它的乘积之和功能,而是应用它的多条件计数功能,格式为:=SUMPRODUCT((条件区1=条件1)*(条件区2=条件2)*(...)),表示按多个条件计数,其中*表示多条件之间逻辑关系为“并且”,如果把*换成+,则表示多条件之间逻辑关系为“或者”。
例如:求5班总分300以上的人数,则单元格K8=SUMPRODUCT((D2:D29>=300)*(A2:A29=5))即可。
问题2:求1B1C人数
【思路分析】对于多条件,建议使用SUMPRODUCT函数,可不受版本限制。本案例中选科达1B1C,包括A+A+、A+A、A+B+、A+B、A+C、AA、AB+、AB、AC、B+B+、B+B、B+C、BC等众多组合,实际应用中逐个统计较为繁琐。我们可以首先统计选科F、H列中不为无、不为空、不为D总数减去CC组合的总数,剩下的即为达1B1C的人数结果了。
【方法应用】L7=SUMPRODUCT((F2:F29<>"无")*(H2:H29<>"无")*(F2:F29<>"")*(H2:H29<>"")*(F2:F29<>"D")*(H2:H29<>"D"))-SUMPRODUCT((F2:F29="C")*(H2:H29="C"))
其中SUMPRODUCT((F2:F29<>"无")*(H2:H29<>"无")*(F2:F29<>"")*(H2:H29<>"")*(F2:F29<>"D")*(H2:H29<>"D"))表示F、H区不为“无”并且不为空并且不为“D”等级的人数,SUMPRODUCT((F2:F29="C")*(H2:H29="C"))表示双C的人数。
问题3:求总分达到300分并且达到1B1C的人数
【思路分析】参照问题2的解决方法,再加上总分大于等于300的条件即可,逻辑关系为“并且”。
【方法应用】M7=SUMPRODUCT((F2:F29<>"无")*(H2:H29<>"无")*(F2:F29<>"")*(H2:H29<>"")*(F2:F29<>"D")*(H2:H29<>"D")*(D2:D29>=300))-(SUMPRODUCT((F2:F29="C")*(H2:H29="C")*(D2:D29>=300)))
在常用的成绩分析统计中,SUMPRODUCT函数基本都能满足计数的需求,其中1B1C算是里面最为复杂的一项了,函数运用的经验在于实践中不断比较和积累。此外,SUMIF函数也可以实现类似功能,不过这是个数组函数,需要输入公式后同时按Ctrl+Shift+回车三个键,较为繁琐,大家如果热爱各类函数探索,也可以多多尝试应用。
【几点说明】
1.数组参数必须具有相同的维数,否则,函数SUMPRODUCT将返回错误值#VALUE!。
2.在SUMPRODUCT中,Excel 2003及以下版本不支持整列(行)引用,必须指明范围,不可在SUMPRODUCT函数使用A:A、B:B,Excel 2007及以上版本可以整列(列)引用,但并不建议如此使用,因为公式计算速度慢。SUMPRODUCT函数将非数值型的数组元素作为0处理。
3.SUMPRODUCT函数不能像SUMIF、COUNTIF等函数一样使用“*”和“?”等通配符,要实现此功能,可以用变通的方法,如使用LEFT、RIGHT、ISNUMBER(FIND())或ISNUMBER(SEARCH())等函数来实现通配符的功能。