前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >学好RANKX,从搞懂排名原理开始

学好RANKX,从搞懂排名原理开始

作者头像
大海Power
发布2022-11-07 19:52:27
发布2022-11-07 19:52:27
61500
代码可运行
举报
运行总次数:0
代码可运行

有一次考试,我考了51分,在班里排第6名。当时,班里有7个人,大家的成绩是这样的(配套数据见文末):

虽然成绩不太理想,但是,我还是知道这个名次是怎么排出来的。

首先,老师把所有同学的成绩放到一起,并从高到底排列:

然后,大家的排名自然就一目了然了。简单的排名函数RANK.EQ就是这么设计的:

代码语言:javascript
代码运行次数:0
运行
复制
RANK.EQ ( 值, 列, 排序 )

其中,“值”就是数据列里要求排名的某个值(比如我的成绩51),“列”就是排名的列(比如这里的成绩列),排序即为排名的方式(升序还是降序)。

比如在成绩表里,做各位同学在班里的排名:

但是,这个设计有个很大的缺陷:

1、第1个参数“值”必须在排名的列里,比如我的成绩51在本班的成绩里;而51这个数,不在隔壁班的成绩单里,那就没办法参与隔壁班的成绩排名了;

2、第2个参数“列”意味着只能简单引用数据列,而你无法通过任何方式来修改这个列(比如进行一定程度的计算,或通过上下文来调整等等)

所以说,RANK.EQ这个函数虽然看起来比较简单直接,但是,功能有很大的限制,也不通用!

比如说,我们如果把咱们班同学的成绩拿到隔壁班去比一下,看都能排到第几名:

结果,只有静静的144分,因为刚好在隔壁班的成绩列里也有,所以得到了排名结果,其他人的成绩得到的排名结果都是空值。

那么,强大的排名函数RANKX,是怎么设计的呢?我们先来看一下它的参数:

代码语言:javascript
代码运行次数:0
运行
复制
RANKX ( 表, 公式 , 值 , 排序, 相等时处理方式 )

首先,这时一个“X”类函数,即会有迭代计算。而这,也正是RANKX函数的强大之处!

你可以按需要构造任何样子的“表”,然后通过第2个参数“公式”进行迭代计算出一列数,然后将第3个参数公式确定的“值”放到第2个参数得到的一列数里进行比对排名,而且约定,如果第3个参数用来确定值的公式跟第2个一样(多数情况下内部/本班排名),那么可以省略。

继续用前面的成绩数据,比如说,要求我在本班里的排名,用RANKX函数如下:

而这个公式求排名的过程如下图所示:

Step-01 构造表:全部姓名—— ALL(‘本班’[姓名]);

Step-02 对全部姓名进行迭代计算:取小值(对于每个人来说取大还是小都一样)并加CALCULATE函数——实现行上下文转换为筛选上下文,从而计算得到全部姓名所对应的成绩。

Step-03 看一下我们要用来计算排名的值是多少:比如这里只看我个人的成绩(51)——而这个计算的方法与参数2的一致,所以可以省略。

Step-04 拿第3歩确定的个人成绩(比如我的51分),放到第2步迭代计算得到的列里看看排在第几位。

接下来,我们再用把成绩拿到隔壁班去对比排名的例子进一步解析。

比如说,我的成绩不好,不好意思拿出去跟别人比,但是,咱们班的静静、阿美,很厉害啊!如果他们的成绩放到隔壁班去,是不是也很厉害,能排到第几名?

这个时候,公式该怎么写?又是怎么计算呢?比如,阿美135分,排第几名?

参考上面的过程,排名的过程是这样的:

更加具体一点儿,我们看阿美的135分,显然是在隔壁班第2名(144分)和第3名(124分)之间,所以,阿美应该能“挤进”第3名!

“挤进”——有点儿插队的意思。嗯,排名函数RANKX就是这样设计的,当某个参与排名的数据,不在排名参照的这一列数据里面时,就采用“插队”的形式,看能插入到哪个位置,从而得到排名结果!

这就是RANKX排名函数的核心原理——通过按需要构造表,按需计算得到排名参照的数据列,然后再按需要计算用于排名的值,最终确定在数据列里能排到哪个位置!

而“按需要”,就意味着:你可以——为所欲为!对此,我后面将进一步分享更多排名相关的例子,供大家学习巩固。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档