當前位置:首頁 > 科技 > 正文

查找多個匹配值,這兩個方法簡單又好用

走過路過不要錯過

使用Vlookup函數、Index+Match函數進行查找時,隻能返回查找到的第一個匹配值。如何返回符合條件的多個匹配值呢?
本文介紹兩種方法。第一種方法使用Index+Aggregate函數;第二種方法使用Textjoin函數。Textjoin函數是Excel 2019和office 365新引入的函數。
本文将分别介紹在單個條件查找和多個條件查找情形下,這兩種方法的應用。

1

問題描述

如下圖所示,要求根據F2單元格的部門,查找姓名。



2

兩種查找方法

方法一:Index+Aggregate函數
在G2單元格輸入公式:
=IFERROR(INDEX($B$2:$B$11,AGGREGATE(15,6,
1/($A$2:$A$11=$F$2)*(ROW($A$2:$A$11)-1),ROW(A1))),"")
向下複制G2單元格的公式,一直到公式返回空值。


公式解析:
(1)Aggregate函數用于返回A2:A11中“研發部”所在的行号。Aggregate函數的第3個參數1/($A$2:$A$11=$F$2)*(ROW($A$2:$A$11)-1)返回的結果為{1;2;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;7;8;#DIV/0!;#DIV/0!},即A2:A11中“研發部”所在的行号分别為第1、2、7、8行。
Aggregate函數第1個參數“15”代表Small函數,第2個參數“6”表示忽略錯誤值。第4個參數“ROW(A1)”返回值“1”,表示Aggregate函數返回第1個最小值,即“1”。
關于Aggregate函數更多用法,閱讀文章:
AGGREGATE函數用法詳解—6個典型用法

(2)Index函數用于返回B2:B11中指定位置的值。在G2單元格的公式中Aggregate函數返回值“1”,Index函數則返回“皮卡球”。在G3單元格的公式中Aggregate函數返回值“2”,Index函數則返回“朱豬俠”。

方法二:Textjoin函數
在G2單元格輸入公式:
=TEXTJOIN(",",TRUE,IF($A$2:$A$11=$F$2,$B$2:$B$11,""))
按Ctrl+Shift+Enter完成公式輸入。
使用Textjoin函數返回的多個匹配值以指定的分隔符(本例為“,”)連接,并且返回的值在同一個單元格内。


公式解析:
Textjoin函數使用指定的分隔符連接字符串。Textjoin函數的第1個參數“,”表示返回的結果用“,”分隔;第2個參數“True”表示忽略空值。
第3個參數是If函數返回的數組。IF($A$2:$A$11=$F$2,$B$2:$B$11,""),當A2:A11中的部門為“研發部”時,返回對應的B2:B11中的值,否則返回空文本。IF函數返回的結果為{"皮卡球";"朱豬俠";"";"";"";"";"易水寒";"藍精靈";"";""}。
Texjoin函數将IF函數返回的數組以逗号作為分隔符連接,并且忽略IF函數返回的空值。

3

多條件查找

上述介紹的兩種方法是以單個條件查找為例進行說明。如果需要以多個條件查找,這兩種方法仍然适用,隻需要在公式中添加更多查找條件即可。
例如以F2單元格的部門、G2單元格的性别為條件,查找符合條件的姓名。
方法一:Index+Aggregate函數
在H2單元格輸入公式:
=IFERROR(INDEX($B$2:$B$11,AGGREGATE(15,6,
1/(($A$2:$A$11=$F$2)*($C$2:$C$11=$G$2))*(ROW($A$2:$A$11)-1),ROW(A1))),"")



方法二:Textjoin函數
在H2單元格輸入公式:
=TEXTJOIN(",",TRUE,IF(($A$2:$A$11=$F$2)*($C$2:$C$11=$G$2),$B$2:$B$11,""))
按Ctrl+Shift+Enter結束公式輸入。



點個在看你最好看


你可能想看:

有話要說...

取消
掃碼支持 支付碼