对于类似于期中、期末这样的重要考试,很多学校从一开始就会按照年级把各平行班的学生混合编排考场、座号并统计成绩。这就给我们带来了困难,比如考场号如何确定?座号如何确定?各学生的名次及在自己班内的名次如何排定?这些工作,通过多次排序和复制粘贴数据,肯定可以完成。但是,面对动辄上千的数据行,显然又太麻烦了。那么,在WPS2010的表格工具中,能不能用相对比较简单的办法来解决问题呢?答案显然是肯定的。
一、考场号的确定
原始的数据表如图1所示。
图1
根据表格现在的排序,每30名学生安排一个考场。考场号依次为“1”、“2”……。按照这些要求,我们只需要将鼠标定位于D2单元格,输入公式 “=ROUNDUP((ROW()-1)/30,0)”,回车后,再选中D2单元格,向下拖动其填充句柄至最后一行D1302单元格,就可以得到每位学生的考场号了。30人一个考场,不会错的。效果如图2所示(为了观察效果,隐藏了部分行)。
图2
ROUNDUP函数的作用是对数值向上取最接近的整数,由于第一个学生的数据位于工作表的第二行,所以,我们只需要将数据所在行数减1之后再除以30,把所得的结果用ROUNDUP函数向上取整数就可以了。
二、座号的确定
座号其实就是不断地重复从1到30的填充。但这个工作如果复制粘贴的话也挺麻烦。因此,我们还是用公式来完成。在E2单元格输入公式“=COUNTIF(D$2:D2,D2)”,向下拖动填充句柄到E1302单元格,就可以得到各考场的座号了。效果如图3所示。
图3
公式 “=COUNTIF(D$2:D2,D2)”的意思是统计在D$2:D2单元格区域等于D2单元格的单元格数量。在D3单元格,公式就会变成 “=COUNTIF(D$2:D3,D3)”,以下依此类推。由于D列的考场号每30个单元格号数相同,所以,在E列就会得到1至30的自然序列了。
三、混编名次的排定
成绩按考场号录入后,需要排定名次。比较简单的是混编名次,也就是忽略了班级的界限的排名次。使用RANK函数可以轻松解决问题。本例中,将鼠标定位于J2单元格,输入公式“=RANK(I2,$I$2:$I$1302)”,拖动其填充句柄向下复制至最后一行I1302,松开鼠标,所有学生的名次就可以得到了。
四、班内名次的排定
在不对工作表进行排序的情况下,想得到学生的班内名次,RANK函数就力不从心了。我们必须同时考虑到学生所在的班级以及其分数所处的位置,SUMPRODUCT函数此时正可以大显身手。
将鼠标定位于K2单元格,输入如下公式“=SUMPRODUCT(($B$2:$B$1302=B2)*($I$2:$I$1302>I2))+1”。完成后仍然拖动其填充句柄至K1302单元格,看看,是不是已经得到所有学生的班内成绩了?如图4所示。
图4
关于公式“=SUMPRODUCT(($B$2:$B$1302=B2)*($I$2:$I$1302>I2))”我们可以简单地理解为“计算在B2:B1302单元格区域等于B2的且在I2:I1302单元格区域大于I2的单元格数量”,很容易明白,I2如果是本班内的最高分的话,这个数量就为“0”,所以把它加1正可以作为在班内的名次。