合并两张表并保留冗余数据
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
我试过 VLOOKUP
和 INDEX
,但我对如何做有点困惑。
我正在寻找一个公式,而不是 VBA。
复制第二个 sheet,在 folk_id
和 music_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 数据:
- 姓名栏:
=INDEX(Sheet1!B:B,MATCH(A2,Sheet1!A:A,0))
从单元格 B2
开始并自动向下填充。
- first_name 列
=INDEX(Sheet1!C:C,MATCH(A2,Sheet1!A:A,0))
从单元格 C2
开始并自动向下填充。
- town_name 列
=INDEX(Sheet1!D:D,MATCH(A2,Sheet1!A:A,0))
从单元格 D2
开始并自动向下填充。
正常引用的Sheet2数据:
- music_instrument 列:
=Sheet2!B2
从单元格 E2
开始并自动向下填充。
- 颜色列:
=Sheet2!C2
从单元格 F2
开始并自动向下填充。
我有两个 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
我试过 VLOOKUP
和 INDEX
,但我对如何做有点困惑。
我正在寻找一个公式,而不是 VBA。
复制第二个 sheet,在 folk_id
和 music_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 数据:
- 姓名栏:
=INDEX(Sheet1!B:B,MATCH(A2,Sheet1!A:A,0))
从单元格B2
开始并自动向下填充。 - first_name 列
=INDEX(Sheet1!C:C,MATCH(A2,Sheet1!A:A,0))
从单元格C2
开始并自动向下填充。 - town_name 列
=INDEX(Sheet1!D:D,MATCH(A2,Sheet1!A:A,0))
从单元格D2
开始并自动向下填充。
正常引用的Sheet2数据:
- music_instrument 列:
=Sheet2!B2
从单元格E2
开始并自动向下填充。 - 颜色列:
=Sheet2!C2
从单元格F2
开始并自动向下填充。