基于ID从另一MS Excel工作表匹配填充数据的技术问询
嘿,这里有几个简单靠谱的方法帮你完成这个ID匹配填充的需求,都是Excel里常用的工具,挑你顺手的来就行:
方法1:用VLOOKUP函数(经典入门款)
这是最常用的匹配函数,上手快,适合数据量不大的情况。
假设你的工作表1叫Sheet1,工作表2叫Sheet2:
- 在Sheet1的C2单元格(也就是data1列的第一个数据行)输入公式:
=VLOOKUP(B2, Sheet2!$A:$C, 2, FALSE)
解释一下参数:B2:Sheet1里要匹配的ID值Sheet2!$A:$C:Sheet2里的数据源区域(锁定列,下拉时不会跑偏)2:要返回Sheet2里第2列(也就是data1)的值FALSE:要求精确匹配,避免出现近似匹配的错误
- 按回车后,把公式下拉到所有行,就能得到所有ID对应的data1
- 同理,在Sheet1的D2单元格输入公式获取data2:
=VLOOKUP(B2, Sheet2!$A:$C, 3, FALSE)
把参数里的2改成3,就是返回Sheet2第3列的值啦
方法2:用INDEX+MATCH组合(更灵活的进阶款)
VLOOKUP有个小局限:如果数据源里的ID列不在最左边,就不好用。而INDEX+MATCH组合没有这个问题,适配性更强。
- 在Sheet1的C2单元格输入:
=INDEX(Sheet2!$B:$B, MATCH(B2, Sheet2!$A:$A, 0))
拆解一下:MATCH(B2, Sheet2!$A:$A, 0):先找到Sheet2里和B2匹配的ID所在的行号INDEX(Sheet2!$B:$B, 行号):根据这个行号,返回Sheet2里B列(data1)对应的值
- 下拉公式到所有行,得到data1
- 要获取data2的话,把公式里的
Sheet2!$B:$B改成Sheet2!$C:$C就行:=INDEX(Sheet2!$C:$C, MATCH(B2, Sheet2!$A:$A, 0))
方法3:Power Query(批量处理神器,不用写公式)
如果你的数据量很大,或者以后还要经常做类似的匹配,用Power Query更高效,还能一键刷新数据:
- 打开Excel,点击「数据」选项卡,分别把Sheet1和Sheet2的数据加载到Power Query:
- 选中Sheet1的数据区域 → 点击「数据」→「从表格/区域」(如果弹出对话框,勾选「我的表格有标题」)
- 同样操作把Sheet2的数据也加载进来
- 在Power Query编辑器里,找到Sheet1的查询,点击「合并查询」→「合并查询作为新查询」
- 在合并对话框里:
- 上方选择Sheet1的ID列,下方选择Sheet2的ID列
- 合并类型选「仅匹配」(只保留两边都有的ID)
- 点击确定
- 现在你会看到新的查询里多了一列「Sheet2」,点击这列右上角的展开按钮,勾选
data1和data2,取消勾选「使用原始列名作为前缀」,点击确定 - 最后点击「关闭并上载」,就能得到匹配好的完整表格啦!以后只要Sheet2的数据更新,右键表格→「刷新」就能自动同步。
内容的提问来源于stack exchange,提问作者Troy Valenta
相关产品推荐
相关产品推荐

