對於類似於期中、期末這樣的重要考試,很多學校從一開始就會按照年級把各平行班的學生混合編排考場、座號並統計成績。這就給我們帶來了困難,比如考場號如何確定?座號如何確定?各學生的名次及在自己班內的名次如何排定?這些工作,通過多次排序和復制粘貼數據,肯定可以完成。但是,面對動辄上千的數據行,顯然又太麻煩了。那麼,在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正可以作為在班內的名次。