如何在Excel中基于列值将单列数据合并/复制到另一工作表?
嘿,这个需求太常见了,我给你整理了几种实用的方法,从简单手动到能自动更新的最优方案都有,你可以根据自己的Excel版本和数据更新频率来选:
方法1:用VLOOKUP函数(适合手动维护范围)
这是最经典的匹配方法,适配Excel所有版本:
- 打开工作表A,在C1单元格输入
AGE作为列标题。 - 在C2单元格输入公式:
给你拆解下参数:=VLOOKUP(A2,SheetB!$A:$B,2,FALSE)A2:要匹配的姓名(工作表A当前行的NAME值)SheetB!$A:$B:工作表B的查找范围,$符号是为了固定列,下拉公式时不会偏移列范围2:要提取的是工作表B的第2列(也就是AGE列)FALSE:要求精确匹配(题目说姓名完全匹配,这个必须选)
- 把C2的公式下拉到所有数据行,就能自动填充对应的AGE了。
如果后续数据范围变化,只要重新下拉公式或者调整SheetB!$A:$B为具体的范围(比如SheetB!$A$2:$B$100)就行。
方法2:用XLOOKUP函数(更直观,支持动态范围)
如果你用的是Excel 365/2021及以上版本,XLOOKUP比VLOOKUP更灵活好用:
- 同样在工作表A的C1输入
AGE,C2输入公式:
参数解释:=XLOOKUP(A2,SheetB!A:A,SheetB!B:B,"")A2:查找值(当前行的NAME)SheetB!A:A:工作表B中用来匹配的列(NAME列)SheetB!B:B:要提取的AGE列"":如果没匹配到(题目里不会出现)就显示空值
- 下拉公式即可。要是你用的是Excel 365,还能直接用动态数组:在C2输入
=XLOOKUP(A2:A5,SheetB!A:A,SheetB!B:B),按回车就会自动填充所有行,新增数据时公式会自动扩展(需要开启动态数组功能)。
方法3:用Power Query(自动更新,最优方案)
如果你的数据范围经常变化,不想每次手动调整公式,Power Query是最佳选择,它能一键刷新更新数据:
- 打开Excel,点击顶部的数据选项卡,选择
获取数据>自文件>自工作簿,选中当前的工作簿。 - 在弹出的「导航器」窗口里,勾选工作表A和工作表B,然后点击「转换数据」进入Power Query编辑器。
- 先处理工作表B:选中NAME列,点击顶部的
删除重复项(虽然题目说姓名完全匹配,但做个保险),然后关闭这个查询(只保留数据)。 - 回到工作表A的查询界面,点击
合并查询>合并查询作为新查询:- 上半部分选择「工作表A」,匹配列选NAME;
- 下半部分选择「工作表B」,匹配列选NAME;
- 联接类型选左外部(这样会保留工作表A的所有行,同时匹配对应的AGE);
- 点击确定后,新查询里会出现一个「SheetB」的列,点击列标题右侧的展开按钮,只勾选AGE列,点击确定。
- 点击顶部的
关闭并上载,把合并后的结果放到新的工作表里。
之后不管工作表A或B的数据怎么更新,只要右键结果表格,点击刷新,就能自动同步最新的合并数据了,完全不用手动调整!
用以上任何一种方法,都能得到你想要的合并结果:
NAME,SPORT,AGE Jordan,Tennis,5 Jordan,Basketball,5 Jess,Tennis,6 Mike,Baseball,10
内容的提问来源于stack exchange,提问作者Rolando




