前三名排名

问题:根据成绩列出前三名成员。

函数公式解决:

=INDEX(SORTBY($F$1:$L$1,$F2:$L2,-1),COLUMN(A1))

SortBy函数的基础用法,任性一下下,不解释:P 

问题升级:前三名指不包含重复项的前三,如科目3,不重复的成绩有100、90和50,只要成绩在50及以上都算“前三”。

函数公式解决:

=INDEX(SORTBY($F$1:$M$1,$F2:$M2,-1),IF(COLUMN(A1)<=SUM(COUNTIF($F2:$L2,LARGE(UNIQUE($F2:$L2,1),{1,2,3}))),COLUMN(A1),8))&""

先用Unique提取出成绩的不重复项,再用Large函数分别提取出前三,此处Large第二个参数如果直接用3会产生错误值(如科目8)。

CountIf用于统计所有成绩中存在前三名成绩的数量,三者相加即实际成绩前三的个数。

用 Column函数与上述结果比对,如果小于等于前三的个数,返回对应的列数,否则返回8。

SortBy部分公式结构不变,但为防止Index第二参数为8时返回错误值,将排序区域扩展到F:M。

最后用&""消除有可能出现的无意义的0。

posted @ 2023-07-17 18:25  熬肥妖  阅读(64)  评论(0编辑  收藏  举报