如何用公式实现根据多个条件(多关键字)排名次
如何用公式实现根据多个条件(多关键字)排名次
问题:多名考生的考试成绩如下表
需要排出名次,具体要求:首先考虑总分,如果总分一样,再考虑科目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进一步排名,公式怎么写?朋友们可以试着写出来,留言。