请各位高手看下这个excel文件:排序自动更新

2025-03-20 23:48:02
推荐回答(1个)
回答(1):

“=INDEX(原始成绩!E$1:E$2001,SMALL(IF(原始成绩!$I$2:$I$2001=$I3,ROW(原始成绩!$I$2:$I$2001),""),COUNTIF($I3:$I$53,$I3)))” 很简单的: 基础: 由于你的I列中,有一个公式,如果超过了要显示的人数(该人数在B1)就不再显示。 (1)我们先来看index 函数: INDEX(array,row_num,column_num). 如果数组只包含一行或一列,则相对应的参数 row_num 或 column_num 为可选参数。因为你的公式中,数组只有一列,所以没有column_num。 你的公式中,只是这样的形态: INDEX(array,row_num)意思是在array中查找第row_num行的数据. (2)我们再来看SMALL函数 SMALL(array,k) 你的公式中就是这个形态,其中: 1) K是COUNTIF($I3:$I$53,$I3): 只所以要用countif,是考虑到总分有可能相同,就按从大到小的顺序读取,这与你的I列有关. 2) array 是 IF(原始成绩!$I$2:$I$2001=$I3,ROW(原始成绩!$I$2:$I$2001),"") :结合I列公式,这里的意思是,只要I列所在行的单元格不为空,就返回原始成绩的I列,否则返回空. 明白了吧。 在large中,为什么是row($A1:$H1): 这仅仅是 表明要取第几个最大值,其实是LARGE的参数,只是取了所在单元的行号。 LARGE ( array , k ):在array 中取第 K 个最大的数. 其实这里你随便写,只要在第1名的位置上写上相应列的第一行,就行了,如row($B1),row($B1:$Z1)等等