设置
我有两张纸,其中一张包含文字数据,另一张包含查找数据。
问题
我需要确定一行是否包含匹配的countryname并从表2中提取其相应的id。这与VLOOKUP或Match函数相反,我在表2中寻找表1的数据。
除了循环第1页数据中每一行的整个第2页数据外,还有什么简单的方法吗?
答案 0 :(得分:2)
怎么样:
=LOOKUP(9.9E+300,SEARCH(Sheet2!$B$1:$B$2,A25),Sheet2!$A$1:$A$25)
将25美元更改为您的确切范围,或使用命名范围。如果找到则会返回ID,如果找不到,则返回#N / A,如果有多个匹配,则只能获得最后一个匹配。
编辑:如果你想要第一场比赛,你可以使用这个公式:
=INDEX(Sheet2!$A$1:$A$25,MATCH(1=1,INDEX(ISNUMBER(SEARCH(Sheet2!$B$1:$B$25,A1)),0,0),),1)
编辑II:这是如何工作的
两个示例中的SEARCH
函数说明找到单元格Sheet2!$B$1:$B$25
A1
中任何单词的起始位置
在第一个示例中,LOOKUP
将查找小于9.9E + 300的数字(行号)并返回结果向量中的行的值(这就是它返回最后匹配结果的原因) )。
在第二个示例中,MATCH(1=1,INDEX(ISNUMBER(SEARCH(Sheet2!$B$1:$B$25,A1)),0,0)
将通过查找INDEX
函数生成的数组中的第一个true(1 = 1)来确定行号。然后外部INDEX
函数返回相邻列(ID)。
答案 1 :(得分:0)
您可以使用工作表公式执行此操作。
我选择使用表和结构化引用,但您可以使用其他方法:
在sheet1上:
B2: =IFERROR(LOOKUP(2,1/ISNUMBER(SEARCH(Countries[CountryName],A2)),Countries[ID]),"")
或
B2: =IFERROR(LOOKUP(2,1/ISNUMBER(SEARCH(Sheet2!$B$2:$B$258,A2)),Sheet2!$A$2:$A$258),"")
将返回ID或空白。
通常输入此公式。 LOOKUP将忽略div / 0错误,匹配1 / True(= 1)并返回result_vector中相应位置的值