Excel排名问题,可以试试Pandas或Power Query
- 2026-09-21 01:24:03
Excel排名问题,可以试试Pandas或Power Query这个看到论坛的一个小题,做的同学还是挺多的,我这里借一下题,分享一下自己的一些处理思路,如果函数不会写的话,我们可以试试其他的呀! 
用Excel,首先肯定还是先试试函数的解法的,我们来写一个,这个需求应该是一个美式排名,也就是说可以正常使用RANK排名,筛选小于等于3的组合即可! 01 | 函数解法 WPS和Excel365都可以使用,但是长了点,对新手并不友好,略有难度,不要急,我们简单解释一下,应该问题不大! 💡思路解析: 1、按科目遍历处理,使用RANK函数对每个科目的成绩进行排名,筛选小于等于3的,也就是本题的要求。 2、因为题目的结果是降序排序组合的,使用我们可以对筛选结果使用SORT函数进行排序,默认降序! 3、结果合并可以使用TEXTJOIN,这里是两列多行,行直接使用空白合并即可,不同行直接使用逗号隔开,也就是姓名和成绩使用空白合并,每个人的成绩使用顿号隔开! 
当然如果你觉得函数太难,看不懂,不妨试试Python中的pandas处理这种问题,也是非常方便的! 02 | Pandas解法 pandas小白,写的不够简洁,只能勉强实现一下,大家可以试试!也是一个利用排名筛选的思路,对筛选的结果转字典遍历合并,应该还有其他思路,留给评论区的大佬们了! 
如果你pandas也不太熟的话,我们可以使用PQ,毕竟PQ作为ETL工具,这个应该也可以实现 03 | Power Query解法 PQ解法,其实也差不多,毕竟也有排名函数-AddRankColumn,剩下就是筛选,合并列,再合并,基本和上面一样! 
太不早了,今天就这里吧,更多效率办公技能,欢迎关注小编! 

cxy12345 + https://club.excelhome.net/thread-1714688-1-1.html
=DROP(REDUCE("",B1:D1,LAMBDA(x,y,VSTACK(x,HSTACK(y&"前三名",LET(S,OFFSET(y,1,,10),V,FILTER(HSTACK(A2:A11,"("&S&")"),RANK(S,S)<=3),TEXTJOIN({"","、"},,SORT(V,2))))))),1)

(
xl("A1:D11",1)
.set_index('学生姓名')
.apply(
lambda x:",".join(f'{k}({v})' for k,v in
x[x.rank(method="min",ascending=False) <= 3]
.sort_values(ascending=False)
.to_dict()
.items()
)
,axis=0
)
)



本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。