tft每日頭條

 > 生活

 > 匹配算法詳細講解

匹配算法詳細講解

生活 更新时间:2024-12-24 21:11:12

使用Vlookup函數、Index Match函數進行查找時,隻能返回查找到的第一個匹配值。如何返回符合條件的多個匹配值呢?

本文介紹兩種方法。第一種方法使用Index Aggregate函數;第二種方法使用Textjoin函數。Textjoin函數是Excel 2019和office 365新引入的函數。

本文将分别介紹在單個條件查找和多個條件查找情形下,這兩種方法的應用。

1

問題描述

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

匹配算法詳細講解(查找多個匹配值)1

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單元格的公式,一直到公式返回空值。

匹配算法詳細講解(查找多個匹配值)2

公式解析:

(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函數返回的多個匹配值以指定的分隔符(本例為“,”)連接,并且返回的值在同一個單元格内。

匹配算法詳細講解(查找多個匹配值)3

公式解析:

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))),"")

匹配算法詳細講解(查找多個匹配值)4

方法二:Textjoin函數

在H2單元格輸入公式:

=TEXTJOIN(",",TRUE,IF(($A$2:$A$11=$F$2)*($C$2:$C$11=$G$2),$B$2:$B$11,""))

按Ctrl Shift Enter結束公式輸入。

匹配算法詳細講解(查找多個匹配值)5

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved