同名次的有多个姓名,你让我怎么排名?

-01-

具体应用

如下图所示,左表是数据源,记录的是某班级的考试成绩表。现在的要求是在右表中根据成绩的名次显示对应的姓名。如果同名次有多个人,则将这些人的姓名全部连接起来。比如“林波龙”和“黄洁”都是93分,他们并列第一名。

这个题该如何解呢?我的思路如下:先对所有人的成绩去重复,得到唯一的成绩列表;然后从唯一的成绩列表出提取第1个最大值,肯定就是第1名的成绩,用这个成绩和所有人的成绩比较,看看哪些人的成绩和这个成绩相等,这样就找到了对应的姓名。

在E3单元格输入下面的公式,按ctrl+shift+enter三键结束,下拉填充。

=IFERROR(TEXTJOIN("、",,IF(LARGE(IF(FREQUENCY(B$3:B$17,B$3:B$17),B$3:B$17),ROW(A1))=B$3:B$17,A$3:A$17,"")),"")

其中FREQUENCY(B$3:B$17,B$3:B$17)部分返回的结果如下图C列所示。利用frequency函数判断B3:B17中的每个成绩是否首次出现,如果是首次出现,则返回其出现个数;如果不是首次出现,则返回0。

比如,第一个88是首次出现,在其对应的位置返回其出现的个数2;第2个88不是首次出现,在其对应的位置返回0。
IF(FREQUENCY(B$3:B$17,B$3:B$17),B$3:B$17)部分返回的结果如下图所示。用if函数判断,如果上一步是非0的数字,就返回对应的成绩,如果上一步是0,就返回false。

上一步得到的成绩就是唯一的,然后用large函数从中提取第1个最大值,肯定就是第1名的成绩。再用第1名的成绩和B2:B17的成绩进行比较,如果相等,返回A2:A17对应的姓名,如果不相等,返回空。最后用textjoin将这些姓名连接起来。

这些我就不一步一步演示了,大家可以自己拆解公式。有小伙伴说不理解frequency的含义,我就主要说下这部分。

链接:

https://pan.baidu.com/s/19lPekkBr0ibGroX1PZw2Lw

提取码:t042
(0)

相关推荐