excel中排名怎么弄

时间:2025-12-05 20:15:26 文档下载 投诉 投稿

搞排名,这事儿,在Excel里说简单也简单,说不简单吧,又能把人绕进去,绕得七荤八素。很多人以为,不就是敲个函数的事儿嘛?嘿,你要真这么想,那八成是要在老板或者老师面前出洋相了。

咱们先聊聊那个最广为人知,也最容易把你带沟里的家伙——RANK函数。

这玩意儿,是元老级的存在了。语法简单粗暴:=RANK(要排名的那个数, 整个排名的区域, 0或1)。后面那个0或1,你记住,绝大多数情况,咱们都是要降序排名,比如分数、业绩,都是越高越好,那就用0。升序,比如跑个步,用时越短越好,就用1

听着挺美,对吧?来,我给你泼盆冷水。RANK最大的坑,也是最致命的,就是处理并列排名的方式。你想想一个场景:期末考试,张三98分,李四也98分,王五97分。用RANK一排,张三是第二名,李四也是第二名。没毛病。可接下来呢?王五,那个97分的,RANK会告诉你,他是第四名!

第四名!

中间的第三名,就这么凭空消失了。这叫“跳跃式排名”。在某些体育比赛里,这么排没问题。但在咱们日常工作学习里,尤其是在国内,你敢把这样的排名表交上去?老板不K你才怪。“小王,第三名呢?被你吃了?” 这不就尴尬了吗?

所以,RANK这个函数,说句心里话,现在我基本已经把它打入冷宫了。它就像个过时的诺基亚,虽然还能用,但总觉得跟不上时代了。

微软后来也觉得不对劲,于是推出了两个升级版:RANK.EQRANK.AVG

RANK.EQ,你可以把它理解成RANK的“马甲”,功能一模一样,处理并列排名的方式也一模一样,都是跳跃式的。那为啥还要出这个?官方说法是为了兼容性、为了函数的规范化。在我看来,就是新瓶装旧酒,换汤不换药。所以,你用RANK.EQ,还是会掉进那个“第三名消失”的坑里。

RANK.AVG 就更有意思了。AVG,Average,平均值。它在处理并列排名时,会取一个平均名次。还拿刚才的例子,张三和李四并列第二,下一个名次是第四。RANK.AVG会把(2+3) / 2 = 2.5,算出来,给张三和李四一个“2.5名”的排名。我的天,谁家排名是2.5名啊?这玩意儿除了在某些特定的统计学分析里有点用,日常工作中几乎就是个摆设。我反正是没用过,也想象不出什么场景非用它不可。

好了,吐槽了半天,那到底该怎么办?我们想要的那种,张三李四并列第二,王五紧跟着就是第三名的效果,到底怎么实现?

别急,真正的“大杀器”要登场了。这种排名方式,我们行内人(嘿,装一下)管它叫“中国式排名”。它不是一个函数能搞定的,而是一个组合公式,一个堪称优雅的“咒语”。

记好了,这个公式是:

=SUMPRODUCT((A$2:A$10>A2)/COUNTIF(A$2:A$10,A$2:A$10))+1

是不是看着头大?别怕,我给你拆解。这个公式有点学院派,逼格高,但对新手不太友好。

所以我更推荐另一个,更接地气,更好理解的组合拳:RANK.EQ + COUNTIF

公式长这样:

=RANK.EQ(B2, $B$2:$B$10, 0) + COUNTIF($B$2:B2, B2) - 1

这个公式,才是解决我们所有烦恼的“最优解”!

来,深呼吸,我们把它嚼碎了看。

  • RANK.EQ(B2, $B$2:$B$10, 0):这部分你熟。就是我们前面说的那个跳跃式排名。它会给出一个基础名次。比如两个98分,它给出的都是2。

  • COUNTIF($B$2:B2, B2):这才是整个公式的灵魂!COUNTIF是干嘛的?数数儿的。它会统计在$B$2:B2这个区域里,有多少个和B2一样的值。注意看这个区域的写法!$B$2绝对引用,锁死了,B2相对引用,会随着你往下拖动公式而变化。

    • 当公式在第一行(B2单元格)时,区域是$B$2:B2,它就在自己这一个单元格里找,结果是1。
    • 当公式拖到第二行(B3单元格,假设也是98分),区域就变成了$B$2:B3,它会在这两行里找98,结果是2。
    • 看明白了吗?它实现了一个“动态累加计数”的效果!
  • - 1:最后这个减1,是为了修正。因为第一个并列的人,我们不希望他的名次增加,所以要减掉COUNTIF多算出来的那个1。

把它们串起来理解一下:

假设B2和B3都是98分,B4是97分。

  • 对于B2(第一个98分):RANK.EQ结果是2,COUNTIF结果是1。公式变成 2 + 1 - 1 = 2。他的名次就是第2名
  • 对于B3(第二个98分):RANK.EQ结果还是2,但COUNTIF的范围变成了$B$2:B3,结果是2。公式变成 2 + 2 - 1 = 3。他的名次就是第3名
  • 对于B4(97分):RANK.EQ结果是4,COUNTIF结果是1。公式变成 4 + 1 - 1 = 4。他的名次就是第4名

等会儿,好像不对?怎么变成2、3、4了?说好的并列第二呢?

别慌,是我故意说错,让你加深印象的。上面的公式是“并列后依次排名”。如果我们想要的效果是“并列同名,后续跳跃”,但又是我们中国人理解的那种跳跃(两个并列第二,下一个是第四),那就要请出真正的“中国式排名”公式了。

就是这个:

=RANK.EQ(B2, $B$2:$B$10, 0)

没错,就这么简单。但是,如果你想要的是两个并列第二,下一个是第三名,这种紧凑的排名,那刚才那个RANK.EQ + COUNTIF的组合拳,才是你想要的。只是我刚才举例时,把需求搞混了。抱歉抱歉,思路太跳跃了。

我们重新梳理一下需求和方法:

  1. 跳跃排名(1, 2, 2, 4):这是国际标准。用 RANKRANK.EQ 就行了。最简单,但也最不符合国内习惯。

  2. 连续排名(1, 2, 2, 3):这个需求其实也挺常见的,就是并列的人名次一样,但后面的人名次不受影响,紧跟着排。实现这个,需要换个思路。用COUNTIF家族。

    =COUNTIF($B$2:$B$10,">"&B2)+1

    这个公式的意思是:数一数在整个列表里,有多少个数字比我(B2)大,然后加1。这不就是我的名次吗?逻辑清晰,而且完美解决了并列问题。两个98分的,比他们大的数都是一样的,所以名次也一样。那个97分的,比他大的数就多了两个98,所以他的名次也自然顺延。这个公式,我个人非常喜欢,简洁有力!

讲到这,你是不是觉得一个小小的排名,水居然这么深?

还没完。

如果你要搞个多条件排名呢?比如,先按业绩排名,业绩相同的,再按入职年限排,年限越久越靠前。

这时候,单个函数就彻底歇菜了。你需要“辅助列”大法,或者更高级的数组公式。

辅助列最简单粗暴:你在旁边新建一列,把两个条件“组合”成一个新数值。比如业绩在B列,工龄在C列。你可以在D列写公式:

=B2 + C2/10000

把工龄除以一个足够大的数,变成一个很小的小数,加到业绩上。这样,业绩的主导地位不变,工龄就成了那个打破僵局的“微调项”。然后你再对D列进行排名,不就搞定了?简单、有效,就是得多占一列,看着不那么“高大上”。

想装高手?那就用 SUMPRODUCT 或者 COUNTIFS 组合。比如用 COUNTIFS

=COUNTIFS($B$2:$B$10,">"&B2) + COUNTIFS($B$2:$B$10,B2, $C$2:$C$10,">"&C2) + 1

这个公式看起来吓人,但逻辑很清晰: * 第一部分:算算有多少人业绩比我高。 * 第二部分:算算在跟我业绩相同的人里,有多少人司龄比我高。 * 把这两部分人数加起来,再加1,就是我的最终排名。

这个公式,不需要辅助列,一个单元格搞定,绝对能让旁边的小白对你刮目相看。

你看,从一个简单的RANK,到解决并列问题的COUNTIF,再到多条件的复杂组合。Excel里的排名,根本就不是敲一个函数那么简单。它更像是一种逻辑思维的训练,考验你如何把一个模糊的需求,拆解成机器能听懂的语言。

这里面的门道,深着呢。每次你觉得学会了,总会有新的需求冒出来,逼着你再去探索新的组合,新的“咒语”。这,也许就是玩Excel的乐趣所在吧。

【excel中排名怎么弄】相关文章:

excel怎么移动一整列12-05

excel怎么插入一行12-05

手机怎么做表格excel12-05

excel表格怎么让字体竖着12-05

excel表格怎么按名字排序12-05

excel对角线怎么打字12-05

excel中排名怎么弄12-05

excel怎么搜索关键字12-05

excel怎么复制整个工作表12-05

excel怎么删除选中区域12-05

excel矩阵图怎么做12-05

excel表格打印线怎么设置12-05

标题:excel绝对值怎么打12-05