修复Excel多破折号字符串下用FIND函数实现唯一编号的#VALUE报错问题
原公式报错原因
你之前的公式逻辑是用REPLACE删掉第一个破折号前的内容后直接对剩余整体做+1运算,当字符串存在多个破折号时,剩余内容包含非数字的破折号和其他字符,无法直接参与数值运算,因此返回#VALUE错误。
修复方案
方案1:适用于Excel 365 / 2021及以上版本(最简写法)
直接用TEXTBEFORE和TEXTAFTER精准提取内容,无需复杂嵌套:
=LET( 前缀, TEXTBEFORE(A11,"-",1), 首段数值, --TEXTAFTER(TEXTBEFORE(A11,"-",2),"-"), 后缀, TEXTAFTER(A11,"-",2,,,""), 前缀&"-"&(首段数值+1)&IF(后缀<>"","-"&后缀,"") )
这个写法会自动拆分出第一个破折号前的前缀、第一个和第二个破折号中间的目标数值、第二个破折号之后的所有内容,把数值加1后再拼接回去,自动适配有没有后续破折号的场景。
方案2:兼容所有Excel版本的通用写法
如果使用的是旧版本Excel,没有LET、TEXTBEFORE这类新函数,使用下面的数组公式即可:
=LEFT(A11,FIND("-",A11))& (--MID(A11,FIND("-",A11)+1,MATCH(FALSE,ISNUMBER(--MID(A11,FIND("-",A11)+ROW($1:$99),1)),0)-1))+1& MID(A11,FIND("-",A11)+MATCH(FALSE,ISNUMBER(--MID(A11,FIND("-",A11)+ROW($1:$99),1)),0),999)
注意:旧版本Excel输入这个公式后需要按Ctrl+Shift+Enter三键结束数组运算
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

