EXCEL中使用INDEX+SMALL+IF來進行一對多查詢的組合方法

EXCEL中使用INDEX+SMALL+IF來進行一對多查詢的組合方法

在EXCEL中處理數據查詢時,經常要使用VLOOKUP或LOOKUP函數。但有時符合條件的查詢結果有多條,這就需要用一對多查詢,這時再使用VLOOKUP或LOOKUP就不是太容易能實現了,這種情況可以使用INDEX + SMALL + IF組合函數來實現這個功能。

如下圖所示,要根據左邊表中的"手機"這個條件,查詢提取B列所有符合要求的數據。

EXCEL中使用INDEX+SMALL+IF來進行一對多查詢的組合方法

使用INDEX + SMALL + IF組合函數的常用公式是:

在F2單元格中輸入數組公式

=IFERROR(INDEX(B:B,SMALL(IF(A$1:A$8=F$1,ROW($1:$8)),ROW(A1))),""),按CTRL + SHIFT + ENTER完成輸入,再向下填充公式即可。

EXCEL中使用INDEX+SMALL+IF來進行一對多查詢的組合方法

公式中的IF(A$1:A$8=F$1,ROW($1:$8)),其機理是先判斷A$1:A$8的值是否和F1單元格的值相同,如果相等則返回A列所對應的行號,否則返回FALSE。整個IF函數返回的數組公式結果是:{FALSE;2;FALSE;4;5;FALSE;FALSE;8}。

函數SMALL(IF(A$1:A$8=F$1,ROW($1:$8)),ROW(A1))的作用是對IF的返回值進行取數,隨著公式的填充,依次提取第1、2、3、4……個最小值,由此得到符合要求的行號。

最後使用INDEX函數,以SMALL函數提取的行號作為索引值,在B列取出相應的數據。

隨著公式向下填充,後面的行號已經不再符合要求,SMALL函數最後所得的結果是錯誤值#NUM,為了避免公式顯示錯誤值,使用了IFERROR函數進行處理,使之返回一個空文本。


分享到:


相關文章: