【INDEX+SMALL+IF+ROW】组合函数:
①难度:★★★☆☆
②作用:实现查找时返回多个符合条件的结果。
③结果放在行的写法:
INDEX(结果列,SMALL(IF(条件,ROW(条件列),4^8),COLUMN(A1)))&""
④结果放在列的写法:
INDEX(结果列,SMALL(IF(条件,ROW(条件列),4^8),ROW(A1)))&""
⑤结束键:数组公式须同时按CTRL+SHIFT+ENTER三键结束。
教程:链接地址。
实际应用:
目的是从所有学校中,取出目标学校数据并按排名由小到大的前1%的学生各项数据。
=INDEX(A:A,SMALL(IF((LEFT($A:$A,4)="实验一中")*($H:$H>0)*($F:$F<=INT(SUMPRODUCT((LEFT($A:$A,4)="实验一中")*($H:$H>0))*1%)),ROW($A:$A)-2,4^8),ROW(A1)))&""
解释:
1、下面这个用于从所有学校中计算出目标学校的非空($H:$H>0)总人数的前1%,并取整数。
INT(SUMPRODUCT((LEFT($A:$A,4)="实验一中")*($H:$H>0))*1%)
2、下面是用于各种条件的判断
IF((LEFT($A:$A,4)="实验一中")*($H:$H>0)*($F:$F<=INT(SUMPRODUCT((LEFT($A:$A,4)="实验一中")*($H:$H>0))*1%)),ROW($A:$A)-2,4^8)
3、加上SMALL是将其由小到大排序
4、最后用INDEX取出结果并格式化,注意是三键组合生成数组。