excel:如果单元格包含多个条件,那么返回多个条件,依旧?

时间:2016-02-17 18:56:41

标签: excel search match criteria

我有4个标准列表,如下所示:

A         B
Name      Category
Name      Category
Name      Category

这样的MasterList:

A             B
stuffNAME     Category
NAMEstuff     Category
NAME          Category

我想知道是否有一个公式可以根据“NAME”的MasterlistA列搜索每个条件列表,并在MasterlistB中返回相应的“类别”。

举个例子: 我希望根据MasterlistA返回MasterlistB

标准清单:

A         B
NBC       NBCU
Disney    ABC

Masterlist:

A                  B   
NYC NBC 20998      NBCU
NJ2987 NBC         NBCU
Disney Florida99   ABC

我正在简化,但实际上标准列表也引用了不同的主列表列。试图先将匹配/搜索部分放下来。

4 个答案:

答案 0 :(得分:1)

您可以使用VLOOKUP执行此操作,与IFERROR语句嵌套

我假设每个表都在A1上开始,在Sheet1,Sheet2,Sheet3和Sheet4中。您可能需要调整引用以指向适当的表。

找到与您的名字相匹配的类别的基本公式,只是[假设您的搜索字词位于A1上的新表格中,让我们说Sheet5,其余的最终数据表格]:

=VLOOKUP(A1,'Sheet1'!A:B,2,0)

这只是取A1 [搜索词]中的值,尝试在表1的A列中找到它,如果找到它,则取第一个匹配的行,然后在[第2列]中返回值。 B列,带有类别。

如果失败了,你只需将它放在IFERROR中,它试图计算某些东西,如果它产生了错误,则返回其他内容,如下所示:

=IFERROR(VLOOKUP(A1,'Sheet1'!A:B,2,0),"NO MATCH FOUND")

现在使用IFERRORS首先尝试在Sheet1上找到匹配项,然后使用Sheet2等,请输入以下内容:

=IFERROR(VLOOKUP(A1,'Sheet1'!A:B,2,0),IFERROR(VLOOKUP(A1,'Sheet2'!A:B,2,0),IFERROR(VLOOKUP(A1,'Sheet3'!A:B,2,0),VLOOKUP(A1,'Sheet4'!A:B,2,0))))

要仅搜索部分匹配,您可以使用以下

=VLOOKUP("*"&A1&"*",'Sheet1'!A:B,2,0)

" *"就像通配符一样,如果它们包含在搜索词的前面和后面[在本例中为A1],那么包含搜索词的任何内容,无论其在单元格中的位置如何,都将被视为匹配。您可以使用此修订的通配符匹配替换上述所有公式中的A1,以检查任何工作表中的部分匹配。

搜索与搜索字词的 部分 完全匹配的项目列表

您可以使用数组公式执行此操作,但由于您有多个数据表,我认为最简单的解决方案是使用每个表旁边的帮助列,以创建实际与您的主数据库匹配的唯一ID名单。即:

在Sheet1 [和所有其他类别表]上,在A&之间插入一个新列。 B;此列将从A列追溯,以匹配Sheet5上主列表中的名称,如此[从B1&复制下来]:

=VLOOKUP("*"&A1&"*", 'Sheet5'!A:A, 1, 0)

您的主表中的修订公式现在看起来像这样:

=IFERROR(VLOOKUP(A1,'Sheet1'!B:C,2,0),IFERROR(VLOOKUP(A1,'Sheet2'!B:C,2,0),IFERROR(VLOOKUP(A1,'Sheet3'!B:C,2,0),VLOOKUP(A1,'Sheet4'!B:C,2,0))))

答案 1 :(得分:1)

根据@ScottCraner的回答显示设置:

Scott Craner data setup

在单元格E1中并向下复制:

=IFERROR(LOOKUP(1,1/COUNTIF(D1,"*"&$A$1:$A$2&"*"),$B$1:$B$2),"No Match")

这是常规公式,不需要输入数组。

答案 2 :(得分:0)

而不是将四个列表并排放置:

enter image description here

将它们叠加在一起,如:

enter image description here

简单如下:

=VLOOKUP("David",A1:B12,2)

答案 3 :(得分:0)

所以这是获得你想要的基本公式:

=INDEX($B$1:$B$2,AGGREGATE(15,6,ROW($1:$2)/(ISNUMBER(SEARCH("*" & $A$1:$A$2 & "*",D1))),1))

如果你有2010年或更晚。如果您有2007年及之前的版本,则需要使用以下数组公式:

=INDEX($B$1:$B$2,SMALL(IF(ISNUMBER(SEARCH("*" & $A$1:$A$2 & "*",D1)),ROW($1:$2)),1))

这是一个数组公式,必须使用Ctrl-Shift-Enter确认。

在图片中,第一个公式是F列,第二个是E列

enter image description here

您需要为各种工作表添加嵌套的IFERROR()函数。

=IFERROR(INDEX(Sheet1!$B$1:$B$2,AGGREGATE(15,6,ROW($1:$2)/(ISNUMBER(SEARCH("*" & Sheet1!$A$1:$A$2 & "*",A1))),1)),IFERROR(INDEX(Sheet2!$B$1:$B$2,AGGREGATE(15,6,ROW($1:$2)/(ISNUMBER(SEARCH("*" & Sheet2!$A$1:$A$2 & "*",A1))),1)),IFERROR(INDEX(Sheet3!$B$1:$B$2,AGGREGATE(15,6,ROW($1:$2)/(ISNUMBER(SEARCH("*" & Sheet3!$A$1:$A$2 & "*",A1))),1)),IFERROR(INDEX(Sheet4!$B$1:$B$2,AGGREGATE(15,6,ROW($1:$2)/(ISNUMBER(SEARCH("*" & Sheet4!$A$1:$A$2 & "*",A1))),1)),"NOT HERE"))))