前三名排名
问题:根据成绩列出前三名成员。
函数公式解决:
=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。