Excel需求:当C列数值在A列存在时,D列显示对应B列内容
Excel中根据C列匹配A列并返回对应B列值的解决方案
基础匹配(返回第一个匹配项)
VLOOKUP函数(兼容所有Excel版本)
在D2单元格输入以下公式,完成后下拉填充到整列:=VLOOKUP(C2, A:B, 2, FALSE)
参数说明:
C2:指定当前行要匹配的C列数值A:B:设置查找范围,A列为匹配键,B列为需要返回的数值列2:指定返回范围中的第2列(即B列)FALSE:启用精确匹配模式,避免模糊匹配导致的错误结果
XLOOKUP函数(Excel 365/2021及以上版本推荐)
在D2单元格输入以下公式,下拉填充:=XLOOKUP(C2, A:A, B:B, "无匹配")
参数说明:
C2:目标匹配值A:A:查找键所在的A列B:B:需要返回数值的B列"无匹配":可选自定义内容,当C列数值在A列不存在时显示,可替换为空或其他提示文本
处理A列存在重复值的场景
如果A列有重复数字,上述基础公式只会返回第一个匹配行的B列值。以下方案可返回所有匹配结果:
TEXTJOIN+IF组合(Excel 365/2021及以上版本)
在D2单元格输入以下公式,下拉填充:=TEXTJOIN(", ", TRUE, IF(A:A=C2, B:B, ""))
说明:
- 通过
IF(A:A=C2, B:B, "")筛选出所有A列等于C2的B列数值 TEXTJOIN将筛选出的数值用逗号加空格连接成字符串,TRUE参数会自动忽略空值
INDEX+SMALL数组公式(兼容旧版Excel)
在D2单元格输入以下公式后,按Ctrl+Shift+Enter完成数组输入,再下拉填充:=IFERROR(INDEX(B:B, SMALL(IF(A:A=C2, ROW(A:A)), ROW(A1))), "")
说明:
IF(A:A=C2, ROW(A:A))获取所有A列等于C2的行号SMALL(..., ROW(A1))依次提取第1、第2……个匹配行的行号INDEX(B:B, ...)根据行号返回对应B列数值IFERROR处理无匹配时的空值,下拉后会逐行显示所有匹配结果
内容的提问来源于stack exchange,提问作者ba joo
相关产品推荐
相关产品推荐

