分享

Excel | 如何用公式实现根据多个条件(多关键字)排名次

 bitterfleabane 2020-06-11

一起来学office,提高办公技能

问题情境
多名考生的考试成绩如下表:
需要排出名次,具体要求:
首先考虑总分,如果总分一样,再考虑科目1,如果科目1分数一样,再考虑科目2,如果科目2分数一样,再考虑科目3。
就等同于按照总分为第一关键字、科目1为第二关键字、科目2为第三关键字、科目3为第四关键字降序排列,然后再统计名次,如下图:
只不过,这里要求用函数准确统计出每位考生的名次。
公式实现
如果仅考虑总分

如果仅按总分排名次,大家基本都能会,用RANK函数就可以了。如下图,在F2单元格输入公式“=RANK(B2,$B$2:$B$28)”,确定,公式向下填充即可。
这样得出的结果:总分一样,则名次一样。
比如总分同是220分,排名都是4,不能更细的区分出名次排位。
如果总分相同,再考虑科目1

如果总分相同,再按照科目1进一步计算排名,则需要换公式。
在F2单元格输入公式“=SUMPRODUCT(N($B$2:$B$28*100+$C$2:$C$28>B2*100+C2))+1”,确定,公式向下填充,如下图:
我们可以看到:总分相同,但科目1分数不同,则名次不同。
本公式解释
$B$2:$B$28*100+$C$2:$C$28:本部分含义是将总分依次乘以100,再加上科目1,返回值“总成绩*100+科目1”数组。
$B$2:$B$28*100+$C$2:$C$28>B2*100+C2)部分含义是将“成绩*100+科目1”数组,依次与公式所在行考生的“成绩*100+科目1”进行对比,如果大于则返回TRUE,否则返回FALSE。本部分返回TRUE与FALSE组成的逻辑值数组。
N($B$2:$B$28*100+$C$2:$C$28>B2*100+C2):用N函数将TRUE与FALSE组成的逻辑值数组中的TRUE转换成1,FALSE转换成0,本部分返回1与0组成的数组。
SUMPRODUCT(N($B$2:$B$28*100+$C$2:$C$28>B2*100+C2))+1:用数组求和函数对1与0组成的数组求和,并加1,得名次。
如果总分相同、科目1分数相同,再考虑科目2

如果总分相同、科目1分数相同,可以再考虑科目2进一步排名,在F2单元格输入公式“=SUMPRODUCT(N($B$2:$B$28*10000+$C$2:$C$28*100+$D$2:$D$28>B2*10000+C2*100+D2))+1”,确定,公式向下填充,如下图:
如果总分相同、科目1科目2分数相同,可以再考虑科目3进一步排名,公式怎么写?朋友们可以试着写出来,留言。
韩老师将数据分享,大家可以下载练习,练习时,可以修改相应的数据以检验自己公式对与否。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多