在 Excel 中的工作表之间搜索某个值,如果发现返回另一列的值

在 Excel 中的工作表之间搜索某个值,如果发现返回另一列的值

我有一本包含两个工作表的工作簿。我需要一个函数,该函数将从 worksheet_1 中的 A 列中获取一个值,并将其与 worksheet_2 中的 D 列进行比较。如果在 worksheet_2 中的 D 列中找到该值,则显示 worksheet_2 中 A 列的内容。如果未找到,则显示“未找到”。

在 worksheet_1 中,我有以下数据集:

     A
1. ABC123
2. DEF234
3. GHI567
4. JKLM123
5. OPQ456
6. RSTU789

在 worksheet_2 中,我有以下数据集:

    A       D                             
1.  RED     ER4654F- RSTU789 - 54DF56GH
2.  BLUE    132DF- ABC123 - SDFG1665
3.  GREEN   456FD-OPQ456-D564G
4.  PURPLE  7987-DEF234-165416
5.  ORANGE  SDF86- JKLM123 -5DFG6H

我该如何构造函数才能正确查找 worksheet_1 中的值是否存在于 workseet_2 的 D 列中并显示 A 列中的值?

在此先感谢您的帮助!

答案1

您可以使用 MATCH 函数在 Sheet2 的 D 列中搜索 Sheet1 的 A 列中的项目。例如,在 Sheet1 的 B1 单元格中,您可以输入:

=MATCH("*"&$A1&"*",Sheet2!$D:$D,0)

这将返回 Sheet2 的 D 列中找到 A1 内容的行号,如果未找到匹配项,则返回 #N/A。搜索词前后的“*”是通配符。

您可以使用 INDEX 函数获取 Sheet2 列 A 的内容。将单元格 B1 更改为:

=INDEX(Sheet2!$A:$A,MATCH("*"&$A1&"*",Sheet2!$D:$D,0)) 

这将返回与 Sheet2 列 D 中找到的项目相对应的 Sheet2 列 A 的值,如果未找到匹配项,则返回 #N/A。

您可以使用 IFERROR 函数在没有匹配项时显示“未找到”。将单元格 B1 更改为

=IFERROR(INDEX(Sheet2!$A:$A,MATCH("*"&$A1&"*",Sheet2!$D:$D,0)),"Not Found")

剩下的唯一问题是,使用通配符意味着您可能只会在 D 列中找到部分术语(例如,在第 2 行会找到“BC12”)。如果这不是您想要的,我建议更改 D 列以删除空格,并在每项的开头和结尾添加“-”,这样第 1 行就变成:

'-ER4654F-RSTU789-54DF56GH-

(撇号告诉 Excel 不要将其视为计算)。现在,您可以在搜索词前后添加“-”,以确保仅匹配 D 列中“-”之间的内容。单元格 B1 中的最终公式为:

=IFERROR(INDEX(Sheet2!$A:$A,MATCH("*-"&$A1&"-*",Sheet2!$D:$D,0)),"Not Found")

将此公式复制到 Sheet1 B 列的其他单元格。

相关内容