excel:如果单元格包含多个条件,则返回多个条件,依赖?

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

AB Name Category Name Category Name Category 

和这样一个MasterList:

 AB stuffNAME Category NAMEstuff Category NAME Category 

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

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

标准清单:

 AB NBC NBCU Disney ABC 

主列表:

 AB NYC NBC 20998 NBCU NJ2987 NBC NBCU Disney Florida99 ABC 

我正在简化,但实际上,标准列表也都指向不同的主列表列。 试着先find匹配/search部分。

给出一个设置,如@ScottCraner的答案所示:

Scott Craner数据设置

在单元格E1中复制下来:

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

这是一个常规公式,不需要数组input。

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

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

find与您姓名相匹配的类别的基本公式很简单[假设您的search字词位于A1上的新工作表上,比如说Sheet5,以及您的最终数据表的其余部分]:

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

这只需要在A1 [search项]中的值,尝试在表1的A列中find它,如果它find它,则取第一个匹配的行,并返回[列B中第二列的值,与类别]。

如果失败了,你只要把它放在IFERROR里面,它试图计算一些东西,如果它产生了一个错误,就返回其他东西,如下所示:

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

现在,使用IFERRORS首先尝试在Sheet1,Sheet2等上find一个匹配项,放置如下:

 =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)))) 

要search只有部分匹配,可以使用以下内容

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

“*”的行为就像通配符一样,如果它们包含在search词的前面和后面(在本例中为A1),则包含search词的任何内容(无论其在单元格中的位置)将被视为匹配。 你可以用上面的修改后的通配符匹配replace上面所有公式中的A1,以检查任何表单中的部分匹配。

search 与您的search字词 部分 完全匹配的项目列表

你可以用一个数组公式来实现,但是因为你有多个数据表,所以我认为最简单的解决方法是在每个表的旁边使用一个帮助列,以创build一个唯一的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)))) 

而不是像下面那样并排放置这四个列表:

在这里输入图像说明

将它们堆叠在一起,就像:

在这里输入图像说明

其简单如下:

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

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

 =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栏中的第二个公式

在这里输入图像说明

您将需要为各种工作表添加嵌套的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"))))