CONCATENATE函数嵌套IF运行异常:仅合并前2项数据,求解决方案
公式问题排查及修复方案
错误原因
你使用的IF嵌套逻辑存在互斥断层:当前置IF的判断条件成立时,会直接返回对应拼接结果,不会执行后续嵌套的IF判断。比如当A3等于"Yes"时,公式直接返回A3对应的拼接内容,完全不会触发A4、A5、A6的判断,因此最多只能合并前2项数据。同时原公式还存在值部分缺少闭合引号、后续key编号重复的问题,会导致最终输出的JSON格式错误。
修复后可用公式
=CONCATENATE("{",CHAR(34),"0",CHAR(34),":",CHAR(34),B2,CHAR(34), IF(A3="Yes",CONCATENATE(",",CHAR(34),"1",CHAR(34),":",CHAR(34),B3,CHAR(34)),""), IF(A4="Yes",CONCATENATE(",",CHAR(34),"2",CHAR(34),":",CHAR(34),B4,CHAR(34)),""), IF(A5="Yes",CONCATENATE(",",CHAR(34),"3",CHAR(34),":",CHAR(34),B5,CHAR(34)),""), IF(A6="Yes",CONCATENATE(",",CHAR(34),"4",CHAR(34),":",CHAR(34),B6,CHAR(34)),""), "}")
调整说明
- 将原本互斥嵌套的IF改为独立判断,每个IF不满足条件时返回空字符串,不会阻断后续判断,所有A列标记为"Yes"的行都会被正常拼接
- 补全了值两侧的双引号,输出内容为标准JSON格式
- 修正了后续行的key编号重复问题,按行顺序从0到4对应B2到B6的内容
内容的提问来源于stack exchange,提问作者JOY
相关产品推荐
相关产品推荐

