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

时间:2014-03-20 19:56:23

标签: excel function data-binding

我有一张excel工作簿,有2张。 一张纸有580行,另一张有187张。

我有一个名单列表,需要根据两个工作表中的公共列映射到相应的列。

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

我需要获取'Sheet2'的程序文本!A2:A187进入'Sheet1'C列。

基本上逻辑看起来像这样:

  

查找程序文本'Sheet2'!A2:A187

     

WHERE

     

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

我只是不确定如何在excel中执行此操作。我尝试了LOOKUP,但这似乎并没有完全符合我的要求。

1 个答案:

答案 0 :(得分:1)

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

=IFNA(OFFSET(Sheet2!$A$1,MATCH(D2,Sheet2!B$2:B$187,0),0),"")

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

使用VLOOKUP可能更容易解决问题,如果您可以在Sheet2中交换A列和B列,那么查找值就在第一列中,但这会改变问题而不是回答您的实际问题。 / p>