期末考试期间,教导处的阿明忙得不亦乐乎,不时地发出感叹:“现在各班编在一起考试,统计优秀、及格、低分人数,真让人头疼”。
我知道他在操什么心,却心不在焉地说:“countif函数你不是会用吗?”
“会啊,但是,你看看,全年级各科成绩都在同一个工作表中,比如,统计二(1)班优秀人数,公式为‘=countif(D2:D69,">=96")’”……
我扫了一眼,继续敷衍他:“是啊,没错。”
“当然没错,只是‘D2:D69’这个参数中的两个行号(2和69),太烦人了,要逐个修改,你看看,每个年级十个班,每个班八九个学科,每科都要统计优秀、及格、低分人数,算算要改多少处!不管是直接修改还是用鼠标拖选,都是一个字:烦!”阿明一边说着,一边一遍又一遍地用鼠标框选着要填的统计表格……
我笑了笑:“想不烦,倒也还有一招:请数组公式来帮忙!”
阿明一听,顿时来了劲:“什么是数组公式?如何用?”
我说:“别急,一步一步来,先做点准备工作:用left从考号中提出班级!”阿明很熟练地在N2单元格中输入“=LEFT(B2,3)”,然后,双击N2左下角的填充柄,班级代号瞬间便提到N列了(如图1)。
“再在表格旁边添加一个班级代号,比如‘二(1)班’就用‘201’,‘二(2)班’就用‘202’……”不等我说完,阿明就已在表格左边插入了相应的代号(如图1)。
图1
“下一步怎么办?该数组公式出场了吧!”阿明迫不及待地起身让座。
“好,我就来现身说法,统计一个数据吧:二(1)班语文优秀人数。”我边说边在E708单元格输入了一个这样的公式:=SUM(($D$2:$D$702>=96)*($N$2:$N$702=TEXT($B708,0)))。
看看阿明那一脸的迷惑,我不得不加以解释:
($D$2:$D$702>=96)——对每一行的语文成绩进行判断,返回结果为1或0(优秀为1否则为0);
($N$2:$N$702=TEXT($B708,0))——对N列对应行的班级代号进行判断,看是否是“201”(TEXT($B708,0)),同样得出1或0的结果;
($D$2:$D$702>=96)*($N$2:$N$702=TEXT($B708,0))——然后,两者相乘,即每一行如果语文成绩为优秀且班级代号为“201”,那么这一行的结果是=1;否则就是0(1×0或0×1或0×0)。最后sum就将这所有的0和1加起来。很显然,加上0等于没加,所以结果是几就表示有几个1相加,也就是二(1)班有几个优秀学生。
阿明似乎听懂了,抢着按了下回车键,可是E708单元格中并没了出现预期的数字,而是令人伤心的“#VALUE!”……
看着满脸狐疑的阿明,我说:“数组公式输入的最后一步,不是按Enter,而是按Ctrl+Shift+Enter。”说着,我双击E708单元格,进入编辑状态,然后同时按下Ctrl+Shift+Enter三个键,奇迹出现了,“#VALUE!”变成了22——二(1)班优秀人数(如图2)。跟先前阿明用“=COUNTIF(D2:D69,">=96")”统计的一模一样。
图2
阿明一激动,一连试了好几遍数组公式,感觉省事多了,不由得最后向我竖起大拇指:“还是信息技术老师厉害。” 我得意地说:“我厉害,那是因为我站在“巨人”的肩膀上,呵呵。这一招还是从CCE教育社区里学来的呢!”