Excel数据映射(类似于join或where子句)

Excel数据映射(类似于join或where子句),excel,function,data-binding,Excel,Function,Data Binding,我有一个excel工作簿,有两张工作表。 一张有580行,另一张有187行 我有一个名称列表,需要根据两张表中的一个公共列映射到相应的列 表1中的D列和表2中的B列都包含“程序名” 表2中的A列包含有关某些程序的文本,但并非所有程序都有文本 我需要获取“Sheet2”的程序文本!A2:A187进入“表1”C列 基本上,逻辑如下所示: 查找程序文本“Sheet2”!A2:A187 在哪里 “Sheet1”:D(当前行)=“Sheet2”!B2:b187 我只是不太确定如何在excel中完成它。我尝

我有一个excel工作簿,有两张工作表。 一张有580行,另一张有187行

我有一个名称列表,需要根据两张表中的一个公共列映射到相应的列

表1中的D列和表2中的B列都包含“程序名” 表2中的A列包含有关某些程序的文本,但并非所有程序都有文本

我需要获取“Sheet2”的程序文本!A2:A187进入“表1”C列

基本上,逻辑如下所示:

查找程序文本“Sheet2”!A2:A187

在哪里

“Sheet1”:D(当前行)=“Sheet2”!B2:b187


我只是不太确定如何在excel中完成它。我尝试了查找,但似乎并没有达到我想要的效果。

我假设每张工作表的第一行都有一个标题。
在Sheet1的C2单元格中输入此公式,并向下拖动单元格的右下角,以在C列的所有相关行中复制该公式

=IFNA(OFFSET(Sheet2!$A$1,MATCH(D2,Sheet2!B$2:B$187,0),0),"")
MATCH
函数在sheet2上查找所需范围内单元格D2的内容(您可以将其设置为命名范围)。第三个
MATCH
参数的0表示在该范围内找到的值必须与第一个参数相同(在本例中为D2的值)。
MATCH
返回匹配单元格从范围开始的相对位置,然后用作
Sheet2的行偏移量$$1(偏移函数第二个参数中的0表示A列没有变化)。美元符号(例如,
$A
$1
)表示绝对行或绝对列,因此当您复制公式时,它们不会在目标单元格中更改。如果查找未找到匹配项(
#N/a
),则使用
IFNA
将单元格值设置为空


如果您可以交换Sheet2中的a列和B列,使查找值位于第一列,则使用
VLOOKUP
解决问题可能更容易,但这会改变问题,而不是回答您的实际问题。

谢谢!它工作得很好,只是我不得不删除IFNA函数。我刚知道你的名字?在所有领域。不知道为什么,但一旦我删除,它的工作完美。非常感谢你,也非常感谢你解释得这么好!在Excel 2013中添加了IFNA()。如果您至少有Excel 2007,则可以在此处使用IFERROR()(对于任何错误,IFERROR是通用的,而IFNA是特定类型的错误)。否则,使用IF()和ISERROR()的组合。