如何从单元格URL中提取指定文本?MID函数参数报错求助
问题分析与解决方案
报错原因
你遇到的Error: Function MID parameter 3 value is negative是因为MID函数的第三个参数(提取文本的长度)计算结果为负数。你的公式错误混用了单元格A2和B2的位置计算:
find(char(1),SUBSTITUTE(B2,"-",char(1),1))- find(char(1),SUBSTITUTE(A2,"-",CHAR(1),1))-1
用B2中第一个-的位置减去A2中第一个-的位置,很容易出现前者小于后者的情况,直接导致长度为负。
修正公式(假设需求:提取B2中第三个/之后到第一个-之前的文本)
根据你原公式的逻辑,正确的长度计算应该基于B2自身的位置,修正后的公式如下:
=MID(B2,FIND(CHAR(1),SUBSTITUTE(B2,"/",CHAR(1),3))+1,FIND("-",B2)-FIND(CHAR(1),SUBSTITUTE(B2,"/",CHAR(1),3))-1)
优化版(提升可读性,适用于Excel 365/2021及以上版本)
=LET( thirdSlashPos, FIND(CHAR(1), SUBSTITUTE(B2, "/", CHAR(1), 3)), firstDashPos, FIND("-", B2), MID(B2, thirdSlashPos + 1, firstDashPos - thirdSlashPos - 1) )
容错处理(避免无匹配时报错)
如果B2中可能不存在第三个/或第一个-,可以用IFERROR包裹公式:
=IFERROR(MID(B2,FIND(CHAR(1),SUBSTITUTE(B2,"/",CHAR(1),3))+1,FIND("-",B2)-FIND(CHAR(1),SUBSTITUTE(B2,"/",CHAR(1),3))-1),"无匹配内容")
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

