我有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
我正在简化,但实际上标准列表也引用了不同的主列表列。试图先将匹配/搜索部分放下来。
答案 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的回答显示设置:
在单元格E1中并向下复制:
=IFERROR(LOOKUP(1,1/COUNTIF(D1,"*"&$A$1:$A$2&"*"),$B$1:$B$2),"No Match")
这是常规公式,不需要输入数组。
答案 2 :(得分:0)
答案 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列
您需要为各种工作表添加嵌套的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"))))