You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel公式求助:匹配指定范围值并返回对应列关联值

Excel多列匹配返回对应行值的公式修复

示例数据

ABCDE
101112A
291314B
381516C
471720D
561819E

需求:输入任意属于某行A-D列的值时,返回该行E列的对应值(比如输入14/13/9/2返回B,输入1/0/11/12返回A等)。

原公式问题

尝试的公式:

=IFERROR(INDEX($E$1:$E$5,MATCH(G1,IF(($B$1:$D$5=G1)+($A$1:$A$5=G1), $B$1:$D$5),0)),"Not Found")

输入12时返回“Not Found”,原因是公式逻辑错误:IF函数返回的是匹配到的单元格值(如12)和其他位置的FALSE,但MATCH在这个混合数组中查找时,无法正确定位到对应的行号——因为数组是多列结构,MATCH返回的是数组中的相对位置而非行号,导致匹配失败。

正确公式方案

方案1:INDEX+MATCH+MMULT(支持所有Excel版本)

=IFERROR(INDEX($E$1:$E$5,MATCH(TRUE,MMULT(--($A$1:$D$5=G1),ROW($1:$4)^0)>0,0)),"Not Found")
  • 原理:MMULT(--($A$1:$D$5=G1),ROW($1:$4)^0) 对每行的A-D列进行匹配判断,将每行的匹配结果求和(只要该行有一个值匹配,结果就大于0);
  • MATCH(TRUE, ...>0,0) 找到第一个匹配的行号;
  • INDEX 根据行号返回E列对应值;
  • 旧版Excel需按 Ctrl+Shift+Enter 作为数组公式执行,新版Excel自动识别。

方案2:XLOOKUP(Excel 365/2021及以上版本)

=XLOOKUP(TRUE,MMULT(--($A$1:$D$5=G1),{1;1;1;1})>0,$E$1:$E$5,"Not Found")
  • 逻辑和方案1一致,XLOOKUP 直接查找第一个满足条件的行并返回对应E列值,无需额外的INDEX+MATCH组合,更简洁。

方案3:INDEX+MATCH+COUNTIF

=IFERROR(INDEX($E$1:$E$5,MATCH(TRUE,COUNTIF(OFFSET($A$1:$D$1,ROW($A$1:$D$5)-MIN(ROW($A$1:$D$5)),0,1,4),G1)>0,0)),"Not Found")
  • 原理:OFFSET 逐行提取A-D列的单行区域,COUNTIF 判断该行是否包含目标值,MATCH 定位行号后返回对应E列值;
  • 旧版Excel需按 Ctrl+Shift+Enter 执行。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 10:32:52