通常情况下,Vlookup和lookup函数只能返回满足条件的第一个,剩余的都不会返回。
这也是其函数的一个弊端之一。
若是按照条件,返回所有满足条件的数据(1->N)的,可是适用组合函数。
Index返回位置,用If来判断所在位置,Small取数组中的最小值。
公式讲解:
IF(D$4:D$11=H$4,ROW(1:10),4^8)
1)先判断D4:D11这区域的值有没有等于H4,如果相等,则返回G列班级相对应的行号,否则返回4^8,也就是65536,一般情况下,工作表到这个位置就没有数据了。
结果得到一个内存数组:{1;65536;65536;65536;5;65536}
注意:Row(1:10) 无需锁定,或者直接用Row(A1)亦可以。
换言之,只要比后面的4^8数值要小即可。
2)然后再用SMALL函数对IF函数的结果进行取数,随着公式的向下填充,依次提取第1、2、3……n个最小值,由此依次得到符合班级条件的行号。
3)随后使用INDEX函数,以SMALL函数返回的行号作为索引值,在目标列中提取出对应的姓名作为返回结果。
4)公式往下拉后,难保证所有数据都是满足条件而筛选的。否则因为会出现#REF,所以用Iferror函数,如果出现错误值则用空值取缔。
————————————————————————————————————
单个函数的语法使用:
[Index 函数]
[Small 函数]
https://jingyan.baidu.com/article/3aed632e2a92db70108091ac.htmljingyan.baidu.com[IF 函数]
https://jingyan.baidu.com/article/b2c186c8f7691fc46ef6ff20.htmljingyan.baidu.com
[素材来源]