巧用Excel进行成绩排名,解决分数相同的名次

来源:百度文库 编辑:神马文学网 时间:2024/04/20 17:00:46
最近在用Excel处理学生成绩时遇到了一个问题:在给成绩排序时,如何使所有相同的成绩其名次也相同,同时使后续名次空缺。例如:如果有3个学生成绩都是90分,其名次都应是“1”,则下一成绩为89分,其名次应为“4”,而“2”和“3”应该空缺。
大家都知道,Excel的填充序列功能可以实现名次连续填充,但上述问题使用填充序列方法就无法解决了。
分析过程
如果按照上述要求排名,那么每一个名次都是根据前面的名次得出的,所以应该先给出第一个名次,即“1”(这一点与拖动填充柄填充序列相同)。然后判断:如果第二个成绩与第一个相同,则其名次也为“1”,否则应为上一名次值加1即“2”。依此类推,就可以使相同的成绩其名次也相同(使用“If()”函数实现)。但是这样排出的名次是连续的,并没有使应该空缺的名次空缺。也就是说,100个学生成绩排序之后,最后一名可能是第50名而不是第100名,还是不能满足要求。
继续观察发现,在所操作的数据清单中,所有不重复的名次都等于该行行号减1,如果是在数据库中,就相当于该记录的记录号。既然Excel中的数据清单类似于数据库的数据清单,Excel中也应该有类似数据库中返回记录号的函数。于是在函数库中仔细查找,终于发现了函数“Row ()”。该函数的功能是返回某一引用的行号,只需在“If()”函数中嵌套调用“Row()”函数,使“If()”的返回值之一为“Row()-1”即可。
实际操作
首先在G2单元格中输入第一个学生的名次“1”,然后单击选中G3单元格,输入公式“=If(F3=F2,G2,Row(G3)-1)”,这个公式的意义是:如果F3和F2两个单元格的值相等,G3的值就与G2的值相等,否则G3的值就等于G3的行号减1。回车后,G3单元格中就出现了正确的名次,下面的事情就简单了:拖动G3右下角的填充柄一直到最后一个名次处,大功告成!现在来看看,是不是按照原先的要求排好了名次?
这里有一点需要指出的是:因为操作的数据清单正好处于工作表的最左上角,即数据清单的标题行位于第一行,所以公式中“Row()”函数要减去1,如果标题行不是在第一行,就不能减1了。可以简单地总结为:标题行行号为几,就让“Row()”函数减去几。
其实实现上述功能还有其他方法,不必嵌套函数,一个函数调用就解决问题了,而且也不用输入初始值“1”。这次要用到的函数是“Rank()”。方法很简单:在G2单元格中输入公式“=Rank(F2,F$2:F$101)”(假定共有100个成绩)。这个公式的功能是:返回F2单元格中的值在从F2到 F101所有单元格数据即所有成绩中的排位。需要注意的是,一定不要忘了那两个美元号“$”,否则就得不出正确结果了,接下来的操作同前一方法。