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的答案所示:
在单元格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"))))