Excel如何匹配多個條件的資料(Excel表格如何匹配相同資料)

使用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”。

(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結束公式輸入。