Excel用MID提取for与at之间字符串结果含冗余内容如何解决
原公式问题分析
- 核心错误是对
MID函数的参数理解有误:MID的语法规则为MID(待处理文本, 提取起始位置, 提取的字符总长度),你原公式中第三个参数直接传入FIND("at",A2,2)的返回值——这个值是字符串中"at"的位置序号,不是需要提取的文本长度,因此会提取过多字符,把"at"及后续内容都带出来。 - 你原公式里的起始位置
FIND("for",A2,1)+4在当前示例中是准确的:定位到"for"加后续单个空格之后的第一个字符位置,刚好是目标文本的开头,但硬编码+4的写法不兼容"for"后有多个空格的场景。
修改方案
适配当前示例的最简公式
直接修正长度参数即可,公式如下:
=MID(A2,FIND("for",A2)+4,FIND("at",A2)-FIND("for",A2)-5)
参数说明:
- 起始位置保留你原来的写法,定位到"for "之后的目标文本开头
- 长度参数改为
FIND("at",A2)-FIND("for",A2)-5:用"at"的位置减去"for"的位置,再减去固定偏移量5("for "占4个字符、"at"前的单个空格占1个字符),刚好得到两个关键词中间目标文本的准确长度。
兼容空格异常的稳妥公式
如果遇到"for"或"at"前后空格数量不固定的场景,可以用TRIM函数去除多余空格,公式如下:
=TRIM(MID(A2,FIND("for",A2)+3,FIND("at",A2)-FIND("for",A2)-3))
这个写法先跳过"for"本身的3个字符,提取"for"到"at"之间的所有内容,再用TRIM自动清除前后多余的空格,容错性更高。
以上两个公式在你给出的示例中,都会正确返回XYZ123、SUJ132、UEJ958的预期结果。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

