我有多个id的项目,我怎么能使用VLOOKUP扫描下一列,如果它没有找到它在第一个



假设我的数据集在列中有多个id,用于同一项。我如何使用VLOOKUP按顺序扫描下一列,直到它在另一个数据集中找到相同的ID ?或者如果它不存在,只是停止搜索后6列?谢谢!

你可以用6个嵌套的IFERROR语句来做到这一点;它看起来像这样:(假设您的ID列是A->F,您的结果列是G,您的搜索词是J1):

=IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(VLOOKUP(J1,A:G,7,0),VLOOKUP(J1,B:G,6,0)),VLOOKUP(J1,C:G,5,0)),VLOOKUP(J1,D:G,4,0)),VLOOKUP(J1,E:G,3,0)),VLOOKUP(J1,F:G,2,0))

查看每一列(从F开始向外工作),如果找不到匹配项,就会创建一个错误,然后转到下一列。它读起来不太干净。使用相同方法的更好的方法可能是使用INDEX &MATCH,像这样:

=INDEX(G:G,IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(MATCH(J1,A:A,0),MATCH(J1,B:B,0)),MATCH(J1,C:C,0)),MATCH(J1,D:D,0)),MATCH(J1,E:E,0)),MATCH(J1,F:F,0))

虽然这有点短[因为我们不需要指定整个数据块,或者从哪一列提取,因为它总是从G列提取],但它仍然不是很可读。

让我们尝试使用数组公式,它在许多单元格上多次运行相同的函数,获取每个单元格的结果,并提供结果数组。然后,我们只需要将该数组折叠为单个值,如下所示:

=INDEX(G1:G14,MIN(IFERROR(IF(SEARCH(J1,A1:A14&B1:B14&C1:C14&D1:D14&E1:E14&F1:F14)>0,ROW(A1:A14),""),"")))

用CTRL + SHIFT + ENTER而不是ENTER来确认这个公式。这将所有搜索列的所有字符串加在一起,基本上形成一个值列。然后,它获取该列,并在每个单元格中搜索在J1中找到的单词。如果找到,它返回行号,否则返回"。然后,该函数使用MIN获取找到的最低行号(如果有重复的行,则与最早的行相连),然后将其与INDEX一起使用以返回g列中该行的值。

请注意,这里的逻辑与我上面给出的选项略有不同,因为它默认为匹配的最早行#,而不是最早列#。

相关内容

最新更新