You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Excel中基于列值将单列数据合并/复制到另一工作表?

嘿,这个需求太常见了,我给你整理了几种实用的方法,从简单手动到能自动更新的最优方案都有,你可以根据自己的Excel版本和数据更新频率来选:

方法1:用VLOOKUP函数(适合手动维护范围)

这是最经典的匹配方法,适配Excel所有版本:

  1. 打开工作表A,在C1单元格输入AGE作为列标题。
  2. 在C2单元格输入公式:
    =VLOOKUP(A2,SheetB!$A:$B,2,FALSE)
    
    给你拆解下参数:
    • A2:要匹配的姓名(工作表A当前行的NAME值)
    • SheetB!$A:$B:工作表B的查找范围,$符号是为了固定列,下拉公式时不会偏移列范围
    • 2:要提取的是工作表B的第2列(也就是AGE列)
    • FALSE:要求精确匹配(题目说姓名完全匹配,这个必须选)
  3. 把C2的公式下拉到所有数据行,就能自动填充对应的AGE了。
    如果后续数据范围变化,只要重新下拉公式或者调整SheetB!$A:$B为具体的范围(比如SheetB!$A$2:$B$100)就行。
方法2:用XLOOKUP函数(更直观,支持动态范围)

如果你用的是Excel 365/2021及以上版本,XLOOKUP比VLOOKUP更灵活好用:

  1. 同样在工作表A的C1输入AGE,C2输入公式:
    =XLOOKUP(A2,SheetB!A:A,SheetB!B:B,"")
    
    参数解释:
    • A2:查找值(当前行的NAME)
    • SheetB!A:A:工作表B中用来匹配的列(NAME列)
    • SheetB!B:B:要提取的AGE列
    • "":如果没匹配到(题目里不会出现)就显示空值
  2. 下拉公式即可。要是你用的是Excel 365,还能直接用动态数组:在C2输入=XLOOKUP(A2:A5,SheetB!A:A,SheetB!B:B),按回车就会自动填充所有行,新增数据时公式会自动扩展(需要开启动态数组功能)。
方法3:用Power Query(自动更新,最优方案)

如果你的数据范围经常变化,不想每次手动调整公式,Power Query是最佳选择,它能一键刷新更新数据:

  1. 打开Excel,点击顶部的数据选项卡,选择获取数据> 自文件> 自工作簿,选中当前的工作簿。
  2. 在弹出的「导航器」窗口里,勾选工作表A工作表B,然后点击「转换数据」进入Power Query编辑器。
  3. 先处理工作表B:选中NAME列,点击顶部的删除重复项(虽然题目说姓名完全匹配,但做个保险),然后关闭这个查询(只保留数据)。
  4. 回到工作表A的查询界面,点击合并查询> 合并查询作为新查询
    • 上半部分选择「工作表A」,匹配列选NAME
    • 下半部分选择「工作表B」,匹配列选NAME
    • 联接类型选左外部(这样会保留工作表A的所有行,同时匹配对应的AGE);
  5. 点击确定后,新查询里会出现一个「SheetB」的列,点击列标题右侧的展开按钮,只勾选AGE列,点击确定。
  6. 点击顶部的关闭并上载,把合并后的结果放到新的工作表里。
    之后不管工作表A或B的数据怎么更新,只要右键结果表格,点击刷新,就能自动同步最新的合并数据了,完全不用手动调整!

用以上任何一种方法,都能得到你想要的合并结果:

NAME,SPORT,AGE
Jordan,Tennis,5
Jordan,Basketball,5
Jess,Tennis,6
Mike,Baseball,10

内容的提问来源于stack exchange,提问作者Rolando

火山引擎 最新活动