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

Merge two sheets and keep the redundant data

我有两个 Excel sheet。第一个是这样的:

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

结果将是这样的(在相同的 sheet 或不同的 sheet 中):

  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。

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

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

上下复制以适应。

此答案涵盖了如何在第三个 sheet 上执行此操作。为简单起见,我们调用每个 sheet Sheet1、Sheet2、Sheet3

工作表 1 和工作表 2 包含您当前的数据。

第一步是在 Sheet3 中创建引用,复制 folk_id 的整个列。因为似乎 Sheet2 包含较大数量的 folk_id 而 Sheet1 包含 folk_id 的唯一值,所以您需要复制 Sheet2。要做到这一点,只需从 Sheet3 的 A2 开始调用 =Sheet2!A2,然后自动向下填充。

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

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

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

正常引用的Sheet2数据:

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