如何将CONCAT公式改为INDIRECT以避免#REF!错误
用INDIRECT实现动态工作表的单元格合并(避免#REF!错误)
核心解决方案公式
方案1:兼容原CONCAT逻辑+防#REF!
=CONCAT( IFERROR(INDIRECT("'"&B2&"'!C2"),""), " - ", IFERROR(INDIRECT("'"&B2&"'!C3"),""), " - ", IFERROR(INDIRECT("'"&B2&"'!C4"),""), " - Admit: ", IFERROR(INDIRECT("'"&B2&"'!C5"),"") )
方案2:保留你已使用的ISBLANK判断逻辑
=CONCAT( IF(ISBLANK(INDIRECT("'"&B2&"'!C2")), "", INDIRECT("'"&B2&"'!C2")), " - ", IF(ISBLANK(INDIRECT("'"&B2&"'!C3")), "", INDIRECT("'"&B2&"'!C3")), " - ", IF(ISBLANK(INDIRECT("'"&B2&"'!C4")), "", INDIRECT("'"&B2&"'!C4")), " - Admit: ", IF(ISBLANK(INDIRECT("'"&B2&"'!C5")), "", INDIRECT("'"&B2&"'!C5")) )
关键说明
- 把原公式中硬编码的
'2101'!Cx替换为INDIRECT("'"&B2&"'!Cx"),实现动态引用B2单元格指定的工作表 - 用
IFERROR或IF(ISBLANK)包裹INDIRECT:IFERROR直接捕获#REF!(如工作表不存在、单元格无效),返回空字符串避免错误显示IF(ISBLANK)则针对单元格为空的情况返回空,和你之前单个单元格的处理逻辑一致
优化建议(避免多余分隔符)
如果要避免空单元格导致出现连续的" - ",可以改用TEXTJOIN函数,它会自动忽略空值:
=TEXTJOIN(" - ", TRUE, IFERROR(INDIRECT("'"&B2&"'!C2"),""), IFERROR(INDIRECT("'"&B2&"'!C3"),""), IFERROR(INDIRECT("'"&B2&"'!C4"),""), "Admit: "&IFERROR(INDIRECT("'"&B2&"'!C5"),"") )
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

