自学相伴,共同进步,大家好,这里是 EXCEL 自习室。
工作中,我们经常需要从一堆数据里提取“前几名”——比如销售业绩Top 5、考试分数前10名、产品销量前三甲。大多数人的第一反应是用排序后手动复制,但数据一更新,又要重来一遍,费时费力。
今天教你两个动态提取前N名的公式,尤其是第二个,遇到并列排名也能完美处理,再也不用担心漏掉同分选手了。
公式一:TAKE + SORT(简单直观,但并列会“吃亏”)
=TAKE(SORT(C2:I21, 7, -1), 5)
拆解一下:
SORT(C2:I21, 7, -1):把整个数据区域按第7列(即I列)降序排列,数值大的排上面。TAKE(…, 5):从排序后的结果中取前5行。
优点:写法最简洁,一看就懂,适合没有并列或并列不影响结果的情况。缺点:如果第5名和第6名数值相同(并列),这个公式只会“粗暴”地取前5行,把并列第5名的其他行直接丢弃,导致提取的结果不完整。
举个例子:第5、6、7名都是95分,但你只取5行,就会漏掉另外两个95分的同事——这在考核评优时显然不公平。
公式二:SORT+FILTER + LARGE(并列也能全部包含)
=SORT(FILTER(C2:I21, I2:I21 >= LARGE(I2:I21, 5)), 7, -1)
拆解一下:
LARGE(I2:I21, 5):返回I列中第5大的数值(注意:如果有并列,第5大指的是排序后第5个位置上的那个数值,而不是排名次)。I2:I21 >= LARGE(…,5):筛选出所有大于或等于这个第5大数值的行。FILTER(C2:I21, …):把这些符合条件的行全部提取出来。SORT(…, 7, -1):最后再按I列降序排列,保证结果从高到低。
效果:假设第5、6、7名都是95分,那么LARGE返回95,筛选条件>=95会把所有95分及以上的行都包含进来,结果可能是7行,而不是固定的5行。这样并列第5的每一个人都不会被遗漏。
两个公式对比一览
对比项 | 公式一(TAKE+SORT) | 公式二(FILTER+LARGE) |
写法难度 | ⭐ 简单 | ⭐⭐ 稍复杂但好理解 |
是否包含并列 | ❌ 只取固定行数,漏掉并列 | ✅ 包含所有达到前N数值的行 |
结果行数 | 固定为N行 | 可能大于N行(有并列时) |
适用场景 | 没有并列,或只需固定名额 | 评优、竞赛、录取等需公平处理并列 |
总结
- 日常简单排序取前N,用
=TAKE(SORT(区域, 列号, -1), N)最省事。 - 一旦涉及评优、录取、竞赛等需要公平对待并列的情况,请务必使用
=SORT(FILTER(区域, 数值列 >= LARGE(数值列, N)), 列号, -1)。
学会这两个公式,你就能轻松应对各种“前N名”提取需求,数据刷新时结果自动更新,再也不用手动折腾了。