在INDEX-MATCH-MATCH中嵌入INDIRECT函数报错,请求协助解决
解决INDIRECT结合MATCH的Excel公式引用错误问题
错误原因分析
你的公式失败有两个核心问题:
- 第二个
INDIRECT函数错误添加了多余参数0,导致生成的引用字符串格式无效(错误提示里的''10/09'!$C$3:$W$3'是参数位置混乱引发的双单引号问题) - INDEX函数末尾多了一个多余的
,0,违反函数语法规范
修正后的公式
=IFERROR(INDEX(INDIRECT("'"&TEXT(F$2,"DD/MM")&"'!$C:$Y"), MATCH($B4, INDIRECT("'"&TEXT(F$2,"DD/MM")&"'!$B:$B"), 0), MATCH(F$3, INDIRECT("'"&TEXT(F$2,"DD/MM")&"'!$C$3:$W$3"), 0)), 0)
关键修正点
- 移除INDIRECT的多余参数:INDIRECT仅接受引用文本和可选的引用格式参数,原公式中
INDIRECT(..., 0)的0是错误的,它属于MATCH函数的匹配类型参数,应该放在MATCH的第三个位置,而非INDIRECT里。 - 删除INDEX末尾的无效
,0:INDEX的语法为INDEX(引用区域, 行号, [列号]),第三个参数是可选列号,无需额外添加,0。 - 优化引用字符串拼接:用
"'"替代CHAR(39),可读性更强,同样能为含特殊字符(斜杠)的工作表名生成合法的单引号包裹格式。
公式逻辑说明
公式会根据F$2的日期生成对应工作表名称,依次完成:
- 在目标工作表的
$B:$B列匹配$B4的值,获取行号 - 在目标工作表的
$C$3:$W$3区域匹配F$3的值,获取列号 - 通过INDEX提取目标单元格的值,若匹配失败则返回
0
内容的提问来源于stack exchange,提问作者Justin Cohen
相关产品推荐
相关产品推荐

