Excel实例:在间隔数据中排定名次
12-02
用Excel表格做了学生考试成绩汇总表,格式如图1所示。需要根据AA列中相应科目的成绩排出名次,并将结果放到AB列相应的单元格中。
图1
排定名次要使用RANK函数,其语法是“RANK(number,ref,order)”其中,参数“number”是需要找到排位的数字;而参数“ref”则是数字列表的引用;第三个参数如果省略则是按降序排列,这正是我们需要的。比如公式“=RANK(A3,A2:A6)”的意思就是要得到A3单元格数据在A2:A6单元格数据中的排名。
显然,在本例中要使用RANK函数,但有一个问题是必须要解决的。假设我们要针对语文学科的总分来排名次。学生们的语文总成绩分布在AA4、AA12、AA20……等单元格中,所处单元格区域并不连续,每8行有一个成绩。怎样才能将它们选中,并作为排名的区域呢?
这个问题也曾经困扰了我很长时间,最后发现利用求余数函数可以使问题得到顺利解决。不过,有些准备工作是要做的。
还是以语文成绩的排名为例。
先将AA列的数据复制到别的位置,等准备工作完成后再粘贴回来。
先选中AA4单元格,输入公式“=1/(MOD(ROW(),8)-4)”,回车后即可发现出现“#DIV/0!”的错误提示。拖动该单元格填充句柄向下至AA379,则会从AA4单元格开始,每8行出现相同的错误提示,其它各行均为数字。
点击功能区“开始”选项卡“编辑”功能组“查找和选择”按钮,在弹出的菜单中点击“定位条件”命令,打开“定位条件”对话框。选中“公式”单选项,并只保留选中随后出现的“错误”复选项,如图2所示。确定后就可以发现,凡是出现错误的提示的单元格就处于被选中状态了。
图2
现在点击功能区“公式”选项卡“定义的名称”功能组“定义名称”按钮,在打开的“新建名称”对话框的“名称”输入框中输入“ymzf”。确定关闭对话框。
以后只要我们在名称框中输入“ymzf”,回车,就可以再次选中AA列中全部语文学科对应的单元格了,如图3所示。
图3
按照上面的方法,只要能让错误提示分别出现在相应学科所在行,那么就可以利用定位条件来选中它们。因为语文学科所处的单元格所在行除以8的余数为4,所以我们采用公式“=1/(MOD(ROW(),8)-4)”制造了除数为0的错误提示。那么数学、英语等其它学科则可以分别根据其行数除以8的余数不同,重复上面的操作过程,只是将公式分母中“-4”分别变成“-5”、“-6”、“-7”、“-0”、“1”、“2”、“3”就可以了。将所到的各学科区域分别以“sxzf”、“yyzf”等名称命名。
但准备工作仅仅做这些还是不够的。因为我们排出的名次应该放在AB列而不是AA列。所以我们还要在再用上面的
方法在AB列中选中各学科对应的区域,并分别以“ymmc”、“sxmc”、“yymc”等名称命名,以便将来在这些区域中输入不同的公式。
至此,我们的准备工作才算是完成了。现在我们可以将临时放到别处的总分粘贴回AA列单元格中了,再剩下的事儿就是用RANK函数排名的问题了。咱还是先根据语文成绩排名吧。
先在名称栏输入“ywmc”,回车,将AB列语文学科所对应的单元格全部选中,此时AB372单元格会处于被激活状态。我们只要在编辑栏输入公式“=RANK(AA372,ywzf)”,并按下“Ctrl+Enter”就可以在全部选中的单元格中输入公式并得到名次结果了。最后的结果如图1所示。
其它学科的名次排定依此法办理。够简单吧?
至此,我们针对各学科的排名工作就算是大功告成了。