在学校里,期中期末考试结束后都要对各科成绩进行统计,以便量化考核教师。目前许多学校常使用电子表格工具Excel来完成统计。求总分、平均分、最高分、最低分一般直接使用Sum()、Average()、Max()、Min()等函数,但细心的人会发现,其实有时并不能直接使用这些函数来统计学生成绩,否则会带来非常严重的统计错误。因为一个学校里往往有一定数量的学生因为缺考或者没有交卷所以没有成绩,对这些学生成绩的处理通常是以零分计算。但在统计中我们是不将零分计入统计结果的,所以这时再直接使用Sum()、Average()、Max()、Min()等函数进行统计将会出现较大的偏差。用这样统计出的结果对老师进行量化显然是不公平的。要避开这些错误, Countif()函数就起到了关键的作用。这里我们通过假定C列是学生的某科成绩来举例说明。
1.求平均分值 对于平均分,因为零分不计入统计,所以直接使用Average()函数会带来误差。我们可以使用表达式Sum(C:C)/CountIf(C:C,”>0”)来求平均分,其中Sum(C:C)是获取该科全班总分,对于把零分也计入是不影响的,CountIf(C:C,”>0”)是求全班大于零分的人数。把得零分的人从总人数中排除,这样求得的平均分将更准确。
2.求最低分值 对于最低分,我们一般用Min()函数。因为C列中包含零分,所以返回值为零,可我们所需要的是除零分以外的最低分值。Excel提供了一个函数Small(),即使用Small(C:C,2),该表达式将返回在数据区域C:C中第二小的数值。在使用中细心的用户会发现,如果C列中只有一个零分是可行的,但如果C列有多个零分时,该表达式返回的值仍为零分,这是因为第二小的最小值仍然是零。所以这里的难点是如何才能知道非零分最小数值是排在第几,我们可用表达式CountIf(C:C,0)+1得到,其中CountIf(C:C,0)是统计C列有多少个零分,即获得除零外的最低分可用Small(C:C,CountIf(C:C,0)+1)表达式求得。
3.求第二高分值 求成绩最高分时可以直接使用Max()函数求得。但有时,我们想知道该学科第二高分数是多少。使用Excel提供的Large( )函数就可方便地得到结果,即Large(C:C,2)。这里也遇到同求非零最低分一样的情况,当同时有几个同学并列最高分时表达式Large(C:C,2)返回的仍然是最高分值,所以我们将表达式改进为Large(C:C,CountIf(C:C ,Max(C:C))+1)就可以了。同样其中表达式CountIf(C:C,Max(C:C))是求有几个相同的最高分。(责任编辑:孙明胜) |