分数分班排列

发布时间 2023-06-17 18:17:13作者: 熬肥妖

问题:一列姓名一列分数,按班级分成六列,成绩升序排列。

函数公式解决:

{=INDEX(E:E,MOD(SMALL(IF(ISNUMBER(MATCH($E$2:$E$31,$A:$A,)),$F$2:$F$31*100+ROW($2:$31),9999),ROW(A1)),100))&""}

公式先用Match判断E列的每个值在A列是否存在,如存在返回数值,否则返回错误值

再用Isnumber判断其是否为数值,是为TRUE,否为FALSE

以此作为IF函数的第一参数,结果为TRUE的返回分数*100+行数,否则返回一个较大的数,此处用9999

用SMALL函数对以上结果进行从小到大的排列

用MOD函数去掉分数部分,剩余行号部分

用INDEX引用E列对应的行号获得结果