Excel通过万金油公式查找多个指定条件结果

【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取出结果并格式化,注意是三键组合生成数组。