当前位置: 首页 > 图文教程 > 工具软件 > 办公软件 > Excel:重复名次也可以查姓名成绩

办公软件
让表头自动填写当前月份和日期
紧急自救 Excel 受损文件急救六招
教你让Excel中人名显示更美观的技巧
随时都要玩 让纸牌游戏进驻Excel里
教你让Office Excel中人名显示更美观的技巧
妙用Excel把有规律的文本数据分列
复制Excel自定义菜单栏 换台电脑照样用
事半功倍 批量删除Excel空行
Excel工作表的复制与移动技巧
Excel中巧用样式列表快速实现文本换行
Excel高效数据校验的两种方法
Google电子表格Spreadsheets全面试用
用Excel计算个人所得税的四套方案
让你从菜鸟成为玩转Excel的高手
录入数据时让Excel自动插入当前时间
Excel2007中插入页眉和页脚超简单
给Excel表格设置边框的三项常用操作
单元格显神威 Excel操作应用技巧四则
快速找到所需要的Excel函数的小技巧
Excel快速导入文本文件技巧

办公软件 中的 Excel:重复名次也可以查姓名成绩


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 119 ::
收藏到网摘: n/a

当老师的,对分析学生成绩大概有瘾。这不,本来我们已经把学生各学科的成绩、总分、名次都排出来了,并按照总分进行了升序排序,但现在又有任课老师过来要求希望能够把自己学科的前10名的学生姓名及成绩找出来。按理说,这个要求并不是很困难,但是麻烦就在于学生各科名次有可能相同,这样的话,前10名的学生其实不一定是10个人,有可能更多。每个学科都要这么做的话,工作量也不小,所以,还是得靠函数和公式来帮忙。

用Excel巧妙实现重复名次也可以查姓名成绩_软晨学习网转载 
图1 原始成绩表

  原始的成绩表如图1所示。姓名位于C2:C92单元格,语文成绩位于D2:D92单元格区域。我们就以查找语文学科的前10名成绩及学生姓名为例。为方便比较结果,图1中我们已经将数据按语文成绩降序进行了排序,实际操作中是不需要事先排序的。

  一、名次表的建立

  前面我们说过,我们不太容易确定排在前10名的学生共有多少,所以,我们需要使用公式将它们找出来。当然,最好顺便将名次表填写出来。完成结果如图2所示。

用Excel巧妙实现重复名次也可以查姓名成绩_软晨学习网转载 
图2 成绩排序

  将鼠标定位于X3单元格,然后在编辑栏输入公式“=TEXT(SUMPRODUCT(($D$2:$D$92>=LARGE($D$2:$D$92,ROW(1:1)))/COUNTIF($D$2:$D$92,$D$2:$D$92)),"第G/通用格式名")”,回车后就可以得到“第1名”的结果。选定X3单元格,向下拖动其填充句柄至出现“第11名”为止。

  这里用到了几个函数,感觉上比较复杂。其实思路是这样的:“ROW(1:1)”的结果是“1”,而“LARGE($D$2:$D$92,1)”的结果是在指定的单元格区域中最大的一个数;那么公式中“($D$2:$D$92>=LARGE($D$2:$D$92,ROW(1:1)))”可以理解为拿D2:D92单元格区域中的数据与该区域中最大值比较,大于或等于该值及小于该值的则会分别以“TRUE”、“FALSE”的结果保存在一个数组中。

  公式中“COUNTIF($D$2:$D$92,$D$2:$D$92))”部分则会统计D2:D92单元格区域中每一个数值出现的次数,也分别保存到一个数组中。所以,我们所用公式中“SUMPRODUCT(($D$2:$D$92>=LARGE($D$2:$D$92,ROW(1:1)))/COUNTIF($D$2:$D$92,$D$2:$D$92))”在执行时会得到一个类似于“SUMPRODUCT({TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;…}/{1;1;2;2;1;2;2;1;2;2;2;2;1;…})”的结果。两个数组中的对应的数据分别相除,再将所有的商相加,正是分数所对应的名次。这种方法即使名次是并列的,也不会影响显示效果。

  至于最外层的TEXT函数,则是将得到的结果转换为按指定数字格式表示的文本。也就是本来内层公式运算的结果是数字“1”,现在我们将它显示为“第1名”。

  二、分数的查找

  将鼠标定位于Y3单元格,在编辑栏中输入如下公式“=INDEX($D$2:$D$92,MATCH(LARGE($D$2:$D$92+1/ROW($D$2:$D$92),ROW(1:1)),$D$2:$D$92+1/ROW($D$2:$D$92),0))”,然后按下“Ctrl+Shift+Enter”快捷键,完成数组公式的输入。这一步很关键的,否则不会出现正确的结果。

  向下拖动Y3单元格的填充句柄向下至最后一个单元格完成公式的复制。

  我们还是简单解释一下公式的思路。

  由于D2:D92区域中有很多数据是重复的,这给我们造成了困难。所以,我们要想办法使每一数据都变成唯一。公式中“$D$2:$D$92+1/ROW($D$2:$D$92)”就是给D2:D92区域中每一个数据都加了该数据对应行数的倒数。由于每一数据对应的行数是不一样的,这样,就会使每一数据都变成了唯一的值,并保存到了一个数组中。

  公式中的“LARGE($D$2:$D$92+1/ROW($D$2:$D$92),ROW(1:1))”还是返回了上面所得数组中的最大值。本例中的结果是“{96.5}”。

  公式中“MATCH(LARGE($D$2:$D$92+1/ROW($D$2:$D$92),ROW(1:1)),$D$2:$D$92+1/ROW($D$2:$D$92),0)”返回的是刚刚得到的最大值在数组中的位置。本例中的结果是“{1}”。

  这样,其实Excel最后执行的查询就是“INDEX($D$2:$D$92,1)”了,自然可以返回在$D$2:$D$92区域中的第一个值了。

  三、姓名的查找

  将鼠标定位于Z3单元格,在编辑栏中输入公式“=INDEX($C$2:$C$92,MATCH(LARGE($D$2:$D$92+1/ROW($D$2:$D$92),ROW(1:1)),$D$2:$D$92+1/ROW($D$2:$D$92),0))”,同样按下“Ctrl+Shift+Enter”快捷键完成数组公式的输入。

  向下拖动Z3单元格的填充句柄向下至最后一个单元格完成公式的复制。最后的效果如图3所示。

用Excel巧妙实现重复名次也可以查姓名成绩_软晨学习网转载 
图3 完成公式的复制

  其实您肯定已经明白了,姓名的查找与前面分数的查找是一样的。公式本身也没有什么大的变化。所以,明白了前面的方法,要查找别的什么东西也就方便了。

  其它的学科可以照此办理。只要注意变换一下公式中的单元格区域就可以了,我这里就不罗嗦了。