不管是LOOKUP系列函數(shù),還是INDEX+MATCH函數(shù)組合,一般的查詢只能得到一條記錄,但有時(shí)候我們需要查找出所有滿足條件記錄。我們用INDEX+SMALL+ROW函數(shù)組合就可以完美解決這樣的問題。
如下圖所示,我們需要查詢出所有的1班的學(xué)生,可以在F2單元格輸入如下公式:
=IFERROR(INDEX($B$1:$B$7,SMALL(IF($A$1:$A$7=$E$2,ROW($A$1:$A$7)),ROW(A1))),"")
這是一個(gè)數(shù)組公式,因此要用CTRL+SHIFT+ENTER三鍵確定輸入。然后向下拖動復(fù)制至最后一行。
這個(gè)公式相當(dāng)長了,可
能有朋友看到這兒就蒙了,這公式也太長了吧!其實(shí),只需一步步分析公式運(yùn)行的原理,它也沒有那么難。
首先,公式①:IF($A$1:$A$7=$E$2,ROW($A$1:$A$7))的意思是將A1:A7的信息逐個(gè)與E2單元格比較,如果相等則返回對應(yīng)行號。我們選中這部分公式按F9鍵顯示匹配結(jié)果為{FALSE;2;FALSE;4;FALSE;6;FALSE}。
然后,公式②:SMALL(IF(①,ROW(A1))使用SMALL函數(shù)返回第1最小值(ROW(A1)=1),公式下拉之后,回依次返回第2最小值、第3最小值......分別對應(yīng)2、4、6三個(gè)值。
然后,公式③:INDEX($B$1:$B$7,②)返回B1:B7范圍對應(yīng)第2、4、6行數(shù)據(jù)。
最后,用IFERROR函數(shù)屏蔽查詢中的錯(cuò)誤值IFEEOR(③,""),因?yàn)樵谙蛳峦蟿訌?fù)制的時(shí)候,查詢完所有記錄之后,下面就是錯(cuò)誤值了,影響顯示效果,因此用IFEEOR函數(shù)屏蔽錯(cuò)誤,將其變?yōu)榭瞻住?/p>
不知道按這樣說大家是否能夠理解?歡迎留言討論!