
通常情況下,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.html?jingyan.baidu.com[IF 函數]
https://jingyan.baidu.com/article/b2c186c8f7691fc46ef6ff20.html?jingyan.baidu.com
[素材來源]
