最近在用Excel處理學(xué)生成績(jī)時(shí)遇到了一個(gè)問題:在給成績(jī)排序時(shí),如何使所有相同的成績(jī)其名次也相同,同時(shí)使后續(xù)名次空缺。例如:如果有3個(gè)學(xué)生成績(jī)都是90分,其名次都應(yīng)是“1”,則下一成績(jī)?yōu)?9分,其名次應(yīng)為“4”,而“2”和“3”應(yīng)該空缺。 大家都知道,Excel的填充序列功能可以實(shí)現(xiàn)名次連續(xù)填充,但上述問題使用填充序列方法就無法解決了。 分析過程 如果按照上述要求排名,那么每一個(gè)名次都是根據(jù)前面的名次得出的,所以應(yīng)該先給出第一個(gè)名次,即“1”(這一點(diǎn)與拖動(dòng)填充柄填充序列相同)。然后判斷:如果第二個(gè)成績(jī)與第一個(gè)相同,則其名次也為“1”,否則應(yīng)為上一名次值加1即“2”。依此類推,就可以使相同的成績(jī)其名次也相同(使用“If()”函數(shù)實(shí)現(xiàn))。但是這樣排出的名次是連續(xù)的,并沒有使應(yīng)該空缺的名次空缺。也就是說,100個(gè)學(xué)生成績(jī)排序之后,最后一名可能是第50名而不是第100名,還是不能滿足要求。 繼續(xù)觀察發(fā)現(xiàn),在所操作的數(shù)據(jù)清單中,所有不重復(fù)的名次都等于該行行號(hào)減1,如果是在數(shù)據(jù)庫(kù)中,就相當(dāng)于該記錄的記錄號(hào)。既然Excel中的數(shù)據(jù)清單類似于數(shù)據(jù)庫(kù)的數(shù)據(jù)清單,Excel中也應(yīng)該有類似數(shù)據(jù)庫(kù)中返回記錄號(hào)的函數(shù)。于是在函數(shù)庫(kù)中仔細(xì)查找,終于發(fā)現(xiàn)了函數(shù)“Row ()”。該函數(shù)的功能是返回某一引用的行號(hào),只需在“If()”函數(shù)中嵌套調(diào)用“Row()”函數(shù),使“If()”的返回值之一為“Row()-1”即可。 實(shí)際操作 首先在G2單元格中輸入第一個(gè)學(xué)生的名次“1”,然后單擊選中G3單元格,輸入公式“=If(F3=F2,G2,Row(G3)-1)”,這個(gè)公式的意義是:如果F3和F2兩個(gè)單元格的值相等,G3的值就與G2的值相等,否則G3的值就等于G3的行號(hào)減1。回車后,G3單元格中就出現(xiàn)了正確的名次,下面的事情就簡(jiǎn)單了:拖動(dòng)G3右下角的填充柄一直到最后一個(gè)名次處,大功告成!現(xiàn)在來看看,是不是按照原先的要求排好了名次? 這里有一點(diǎn)需要指出的是:因?yàn)椴僮鞯臄?shù)據(jù)清單正好處于工作表的最左上角,即數(shù)據(jù)清單的標(biāo)題行位于第一行,所以公式中“Row()”函數(shù)要減去1,如果標(biāo)題行不是在第一行,就不能減1了??梢院?jiǎn)單地總結(jié)為:標(biāo)題行行號(hào)為幾,就讓“Row()”函數(shù)減去幾。 其實(shí)實(shí)現(xiàn)上述功能還有其他方法,不必嵌套函數(shù),一個(gè)函數(shù)調(diào)用就解決問題了,而且也不用輸入初始值“1”。這次要用到的函數(shù)是“Rank()”。方法很簡(jiǎn)單:在G2單元格中輸入公式“=Rank(F2,F$2:F$101)”(假定共有100個(gè)成績(jī))。這個(gè)公式的功能是:返回F2單元格中的值在從F2到 F101所有單元格數(shù)據(jù)即所有成績(jī)中的排位。需要注意的是,一定不要忘了那兩個(gè)美元號(hào)“$”,否則就得不出正確結(jié)果了,接下來的操作同前一方法。 |
聯(lián)系客服