今天想第一次用gif发文,发现对gif有限制,不能超过300帧[捂脸],今天还用图片吧,不知道效果咋样,今天给大家分享一下分类排名的小技巧,比如某次金相比赛后想知道排名前5N的选手都有哪些,那么需要先对每个学校的选手进行校内排名,在剔除多余5名的选手,之前咱们计数用过countif函数。一、今天咱们先用多条件的countifs试一下,首先整理好数据源如下图:在D2单元格输入如下公式并回车:
=COUNTIFS($A$2:$A$100,A2,$C$2:$C$100,">"&C2)+1
公式意思:
我想选出王1成绩在学校A中的排名,那么我就要在所有学校A中的成绩进行排名,
指的是筛选学校A
指的是筛选比C2高的有几个
指的是如果有几个比我高,那我就排几个+1名,例如有3个成绩比我高的,那我就排第4名。公式下拉填充即可。
二、其他方法
其实用count函数也可以,就是需要嵌套函数:
在D2单元格输入:
=COUNT(FILTER($C$2:$C$100,($A$2:$A$100=A2)*($C$2:$C$100>C2)))+1
公式意思是先用filter筛选出本校大于我的成绩,再用count去计数,+1就不说了,和上面同理;
用SUMPRODUCT函数也可以
=SUMPRODUCT(($A$2:$A$100=A2)*($C$2:$C$100>C2))+1
用sum函数也行,我在D2输入了:
=SUM(($A$2:$A$100=A2)*($C$2:$C$100>C2))+1
我想了一会,感觉A2:A100=A2和C2:C100>C2应该是两个布尔值,得不到数字,但在wps中运行没报错,看来不同版本的excel还是有区别的,如果你运行报错的话可以将布尔值转换成数字例如:
=SUM(($A$2:$A$100=A2)*($C$2:$C$100>C2)*1)+1
=SUM(N(($A$2:$A$100=A2)*($C$2:$C$100>C2)))+1
=SUM(--($A$2:$A$100=A2)*($C$2:$C$100>C2))+1
这几种方式都可以。
填充好了后如图:

接下来我们只需对D列进行排序筛选即可,将排名5以后的都删除即可得到前5N的名单。
这里再说一下用VBA,最近我总用VBA,尤其是结合了AI,VBA实现一些复杂功能更加方便:
比如我在豆包进行提问:
我想用vba实现以下功能,我的表格中A列是学校名,B列是姓名,C列是成绩,我现在把每个学校的前五名提取到指定位置进行输出(例如E列输出学校,F列输出姓名,G列输出成绩),请帮我生成VBA代码。
豆包不到一分钟就生成了完整代码,经简单修改后完全可用,瞬间出结果如下图,所以大家也可以用AI帮助咱们进行办公。
好了本期分享就到这,请多多关注。