如何在Excel中根据匹配ID从一个工作表提取值并展示到另一个工作表
Excel匹配填充实现方案
以下是不同Excel版本适用的公式写法,逻辑和你给出的SQL等值关联查询完全一致:
方案1:VLOOKUP(全版本通用经典写法)
适用于所有Excel版本,是这类匹配需求最常用的实现方式
假设前提
- 工作表A的ID列为A列、Name列为B列,表头占第1行,有效数据从第2行开始
- 工作表B的ID列为A列,待填充的空白列为B列,第一个需要填充的单元格为B2
公式(写在B2单元格)
=VLOOKUP(A2, SheetA!$A:$B, 2, FALSE)
参数说明
- A2:工作表B当前行需要匹配的ID值
- SheetA!$A:$B:工作表A的数据源范围,加
$做绝对引用,避免下拉填充时范围偏移 - 2:取数据源范围第2列(即Name列)的返回值
- FALSE:指定为精确匹配,完全对应SQL的等值关联逻辑
屏蔽错误优化
如果要让匹配不到的结果显示空白而非#N/A,可以套一层IFERROR:
=IFERROR(VLOOKUP(A2, SheetA!$A:$B, 2, FALSE), "")
方案2:XLOOKUP(365/2021及以上版本推荐)
逻辑更直观,稳定性更高,不会因为数据源插入列导致公式失效
公式
=XLOOKUP(A2, SheetA!$A:$A, SheetA!$B:$B, "")
参数说明
- 第1个参数:待匹配的工作表B当前行ID
- 第2个参数:工作表A的匹配列(ID列)
- 第3个参数:工作表A的返回列(Name列)
- 第4个参数:匹配不到时的返回值,这里设为空白
方案3:INDEX+MATCH组合(全版本通用灵活写法)
不受数据源列顺序影响,灵活度高于VLOOKUP
公式
=IFERROR(INDEX(SheetA!$B:$B, MATCH(A2, SheetA!$A:$A, 0)), "")
逻辑说明
- 先通过
MATCH函数精确找到当前ID在工作表A ID列的行号 - 再通过
INDEX函数根据行号取出对应Name列的取值 IFERROR用来处理匹配不到的异常场景
使用注意
公式写好后,选中单元格下拉填充即可批量完成所有行的匹配填充;如果ID是数字格式,需要提前统一两个表的ID存储格式(避免一边是文本型数字、一边是数值型导致匹配失败)。
内容的提问来源于stack exchange,提问作者yimingp
相关产品推荐
相关产品推荐

