如何基于表格条件返回数值的排名位次?
按性别分组计算总分位次的Excel公式优化
你当前的公式已经完成了同性别数据的筛选和总分降序排序,只需添加一步找到当前行总分在排序后列表中的位置,就能得到位次。以下是两种常用方案:
方案1:连续位次(同分按出现顺序排不同名次)
此方案会给相同分数的行分配连续位次(例如两个100分分别为第1、第2名):
=LET( data,$B$3:$D$10, gender_col,2, total_col,3, current_total,$D3, current_gender,$C3, filtered,FILTER(CHOOSECOLS(data,total_col),CHOOSECOLS(data,gender_col)=current_gender), sorted,SORT(filtered,1,-1), --XMATCH(current_total,sorted,0) )
方案2:同分同位次(跳过重复名次)
如果需要相同分数的行拥有相同位次(例如两个100分都是第1名,下一个98分是第3名),可简化为RANK.EQ版本:
=LET( data,$B$3:$D$10, gender_col,2, total_col,3, current_total,$D3, current_gender,$C3, filtered,FILTER(CHOOSECOLS(data,total_col),CHOOSECOLS(data,gender_col)=current_gender), RANK.EQ(current_total,filtered,0) )
公式说明
current_total和current_gender:明确引用当前行的总分与性别,避免下拉填充时出现引用错误filtered:直接筛选当前性别对应的所有总分,比筛选整行更高效- 方案1中
XMATCH:在降序排序后的总分列表里定位当前总分的位置,--将匹配结果转为数值型位次 - 方案2中
RANK.EQ:直接计算当前总分在同性别总分中的降序排名,自动处理同分场景
使用时,将公式放在「位次」列的首个单元格(如E3),下拉填充即可自动计算所有行的位次。
内容的提问来源于stack exchange,提问作者Harlan
相关产品推荐
相关产品推荐

