在excel中搜索部分匹配项

时间:2018-10-23 22:26:29

标签: excel excel-formula

Tab-A包含两列。第1列是网站域,第2列填充了一个公式,该公式应该输出在Tab-B中找到的电子邮件:

backpacks.com         / FORMULA TO FIND EMAIL FROM TAB-B 
buy.bags.io           / FORMULA TO FIND EMAIL FROM TAB-B
shop.plasticbags.net  / FORMULA TO FIND EMAIL FROM TAB-B
bags.org              / FORMULA TO FIND EMAIL FROM TAB-B

Tab-B包含两列。第1列是电子邮件,第2列是电子邮件域:

admin@backpacks.com     / backpacks.com 
hi@bags.io              / bags.io
hello@plasticbags.net   / plasticbags.net
support@bags.org        / bags.org   

对于选项卡A中的每个域,我想搜索选项卡B中的电子邮件域,以查看是否存在部分匹配项。例如,“ bags.io”是“ buy.bags.io”的部分匹配。我从电子邮件地址中提取了电子邮件域,以简化匹配搜索,但是如果您知道怎么做,也可以在整个电子邮件地址中搜索部分匹配项。

如果有匹配项,我想输出与之相关的电子邮件。如果没有匹配项,我想放一个空白单元格。

我一直在尝试使用Vlookup和其他工具来解决这个问题,但是我还是无法理解。我该怎么做?

3 个答案:

答案 0 :(得分:4)

使用:

=IFERROR(INDEX(D:D,AGGREGATE(15,7,ROW($E$1:$E$4)/(ISNUMBER(SEARCH($E$1:$E$4,A1))),1)),"")

用域对第一列进行迭代,并将部分匹配行返回给INDEX,该索引将返回电子邮件。

enter image description here

答案 1 :(得分:1)

如果可以使用VLOOKUP,则可以使用:

VLOOKUP("*"& lookup value  &"*" , table array , column number, FALSE)

其中"*"是通配符。

"*"& lookup value:然后它会在您的查询值之前接受其他单词。

"*"& lookup value:然后它会在您的查询值之后接受其他单词。

"*"& lookup value &"*":在查询值的两侧接受单词。

祝您查找愉快:)!

答案 2 :(得分:1)

好吧...我的回答比斯科特复杂得多。为了后代,就在这里!

  1. 在Tab-A列B中,我创建了一个帮助者列,用于计算域中.的数量
  2. 在Tab-A列C&D&E中,我创建了一个公式以返回域的每个“大块”。
  3. 在Tab-A列F中,我创建了一个公式,该公式基于两次搜索返回电子邮件:组合C&D列,如果没有返回值,则组合D&E列。

这是在搜索域块的多个组合,而不是从电子邮件地址中搜索部分匹配项。

B1 =LEN(A1)-LEN(SUBSTITUTE(A1,".",""))
C1 =IF(A1=0,"",TRIM(LEFT(RIGHT(SUBSTITUTE("."&A1,".",REPT(" ",99)),(B1+1)*99),99)))
D1 =IF(A1=0,"",TRIM(LEFT(RIGHT(SUBSTITUTE("."&A1,".",REPT(" ",99)),(B1)*99),99)))
E1 =IF(A1=0,"",TRIM(LEFT(RIGHT(SUBSTITUTE("."&A1,".",REPT(" ",99)),(B1-1)*99),99)))
F1 =INDEX('Tab-B'!A1:A4,IFNA(MATCH("*"&C1&"."&D1&"*",'Tab-B'!B1:B4,0)<>"",MATCH("*"&D1&"."&E1&"*",'Tab-B'!B1:B4,0)))

让我说,斯科特的解决方案更优雅! enter image description here