合并两张纸并保留冗余数据

我有两张Excel表格。 第一个是这样的:

folk_id name first_name town_name 001 blog joe alamo 002 folk james brisbane 003 paco yatan barcelona 

第二个是这样的:

 folk_id music_instrument color 001 banjo blue 001 guitar green 001 piano yellow 002 harmonica grey 003 harpsichord red 003 violin orange 003 bass fuschia 

结果会是这样的(无论是在同一张表或不同的表):

  folk_id name first_name town_name music_instrument color 001 blog joe alamo banjo blue 001 blog joe alamo guitar green 001 blog joe alamo piano yellow 002 folk james brisbane harmonica grey 003 paco yatan barcelona harpsichord red 003 paco yatan barcelona violin orange 003 paco yatan barcelona bass fuschia 

我已经尝试过使用VLOOKUPINDEX但是我对如何做到这一点感到困惑。

我正在寻找一个公式,而不是VBA。

复制第二张图,在folk_idmusic_instrument之间插入三列(假设源中有四列,实际上可能只有三列),然后使用查找函数来填充已添加的列。 假设folk_id在A1中,则在B1中:

 =VLOOKUP($A1,Sheet1!$A$1:$D$4,COLUMN(),0) 

复制,以适应。

这个答案涵盖了如何在第三张纸上做到这一点。 为了简单起见,我们可以调用每个工作表Sheet1,Sheet2,Sheet3

Sheet1和Sheet2包含您当前的数据。

第一步是在Sheet3中创build一个复制整个folk_id列的folk_id 。 因为看起来Sheet2包含了大量的folk_id而Sheet1包含了folk_id的唯一值, folk_id您需要复制Sheet2 。 只需要简单地在Sheet3的A2中调用=Sheet2!A2 ,然后自动填充。

现在对于Sheet1中数据所在的每一列,我们将执行索引和匹配。 而对于sheet2中的数据,只需要引用调用。

使用索引和匹配引用的Sheet1数据:

  1. 名称列: =INDEX(Sheet1!B:B,MATCH(A2,Sheet1!A:A,0))单元格B2开始的=INDEX(Sheet1!B:B,MATCH(A2,Sheet1!A:A,0))并自动填充。
  2. first_name column =INDEX(Sheet1!C:C,MATCH(A2,Sheet1!A:A,0))从单元格C2开始并自动填充。
  3. 从单元格D2开始的town_name column =INDEX(Sheet1!D:D,MATCH(A2,Sheet1!A:A,0))并自动填充。

Sheet2数据通常被引用:

  1. music_instrument列: =Sheet2!B2从单元格E2开始并自动填充。
  2. 颜色栏: =Sheet2!C2从单元格F2开始并自动填充。