利用Excel数组公式统计各班优秀人数

期末考试期间,教导处的阿明忙得不亦乐乎,不时地发出感叹:“现在各班编在一起考试,统计优秀、及格、低分人数,真让人头疼”。
      我知道他在操什么心,却心不在焉地说:“countif函数你不是会用吗?”
      “会啊,但是,你看看,全年级各科成绩都在同一个工作表中,比如,统计二(1)班优秀人数,公式为‘=countif(D2:D69,">=96")’”……
      我扫了一眼,继续敷衍他:“是啊,没错。”
      “当然没错,只是‘D2:D69’这个参数中的两个行号(2和69),太烦人了,要逐个修改,你看看,每个年级十个班,每个班八九个学科,每科都要统计优秀、及格、低分人数,算算要改多少处!不管是直接修改还是用鼠标拖选,都是一个字:烦!”阿明一边说着,一边一遍又一遍地用鼠标框选着要填的统计表格……
      我笑了笑:“想不烦,倒也还有一招:请数组公式来帮忙!”
      阿明一听,顿时来了劲:“什么是数组公式?如何用?”
      我说:“别急,一步一步来,先做点准备工作:用left从考号中提出班级!”阿明很熟练地在N2单元格中输入“=LEFT(B2,3)”,然后,双击N2左下角的填充柄,班级代号瞬间便提到N列了(如图1)。
      “再在表格旁边添加一个班级代号,比如‘二(1)班’就用‘201’,‘二(2)班’就用‘202’……”不等我说完,阿明就已在表格左边插入了相应的代号(如图1)。

图1

利用Excel数组公式统计各班优秀人数

      “下一步怎么办?该数组公式出场了吧!”阿明迫不及待地起身让座。
      “好,我就来现身说法,统计一个数据吧:二(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

利用Excel数组公式统计各班优秀人数

 

利用Excel数组公式统计各班优秀人数

上一篇:96-不同的二叉搜索树


下一篇:算法复习大纲