嵌套IF()与FIND()函数返回#VALUE!错误的问题求助
Excel公式错误修正:根据文本内容返回HF/H/F
问题根源
你使用的FIND()函数存在局限性:当目标文本在单元格中不存在时,FIND会直接返回#VALUE!错误,而非返回0或逻辑假,导致嵌套IF的后续判断无法执行,直接抛出错误。
修正方案
方案1:用IFERROR捕获FIND错误(兼容区分大小写场景)
通过IFERROR()将FIND找不到文本时的错误转为FALSE,确保逻辑判断正常进行:
=IF(AND(IFERROR(ISNUMBER(FIND("ish",[@[Products Purchased]])),FALSE),IFERROR(ISNUMBER(FIND("unt",[@[Products Purchased]])),FALSE)),"HF", IF(IFERROR(ISNUMBER(FIND("ish",[@[Products Purchased]])),FALSE),"F", IF(IFERROR(ISNUMBER(FIND("unt",[@[Products Purchased]])),FALSE),"H",NA())))
方案2:用COUNTIF简化(支持通配符,更简洁)
实际上IF函数可以配合支持通配符的COUNTIF()使用,无需依赖FIND,写法更直观:
=IF(AND(COUNTIF([@[Products Purchased]],"*ish*"),COUNTIF([@[Products Purchased]],"*unt*")),"HF", IF(COUNTIF([@[Products Purchased]],"*ish*"),"F", IF(COUNTIF([@[Products Purchased]],"*unt*"),"H",NA())))
*ish*表示单元格内容包含"ish"(*为通配符,匹配任意长度文本)- COUNTIF找不到匹配内容时返回0,在逻辑判断中会被识别为FALSE,不会触发错误
方案3:用ISNUMBER+SEARCH(不区分大小写场景)
如果不需要区分大小写,可使用SEARCH()(支持通配符,不区分大小写)配合ISNUMBER(),再用IFERROR处理错误:
=IF(AND(IFERROR(ISNUMBER(SEARCH("ish",[@[Products Purchased]])),FALSE),IFERROR(ISNUMBER(SEARCH("unt",[@[Products Purchased]])),FALSE)),"HF", IF(IFERROR(ISNUMBER(SEARCH("ish",[@[Products Purchased]])),FALSE),"F", IF(IFERROR(ISNUMBER(SEARCH("unt",[@[Products Purchased]])),FALSE),"H",NA())))
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

