Excel中如何定位文本字符串内四位数字的位置?
查找文本中四位数字的起始位置
需求说明
你需要定位文本字符串中类似4111的四位数字的起始位置,以下是针对Excel新手的实用公式方案:
一、找第一个四位数字的起始位置
通用版公式(适配所有Excel版本)
=MATCH(TRUE,ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4)),0)
注意:旧版Excel需按 Ctrl+Shift+Enter 作为数组公式输入,新版Excel(365/2021+)直接回车即可。
公式拆解(新手易懂版):
LEN(A1)-3:计算文本总长度,减去3是因为要提取4位数字,起始位置不能超过总长度-3,避免提取到不完整的数字。MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4):从文本的第1位开始,依次提取连续4个字符,生成所有可能的4位字符片段。--:把提取的字符片段转换成数字,非纯数字片段会变成错误值。ISNUMBER(...):判断转换后的结果是否为数字,是则返回TRUE,否则返回FALSE。MATCH(TRUE,...):找到第一个TRUE对应的位置,就是第一个四位数字的起始位置。
动态数组版公式(Excel 365/2021+适用)
如果你的Excel支持动态数组,用这个更简单:
=XMATCH(TRUE,ISNUMBER(--MID(A1,SEQUENCE(LEN(A1)-3),4)),0)
或者直接提取所有符合条件的起始位置(如果有多个四位数字):
=FILTER(SEQUENCE(LEN(A1)-3),ISNUMBER(--MID(A1,SEQUENCE(LEN(A1)-3),4)))
二、找最后一个四位数字的起始位置
如果你需要定位最后一个四位数字的位置,可基于你之前用的LOOKUP逻辑调整:
=LOOKUP(1,0/ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4)),ROW(INDIRECT("1:"&LEN(A1)-3)))
逻辑说明:
0/ISNUMBER(...)会把TRUE转换成0,FALSE转换成错误值,LOOKUP(1,0/...)会找到最后一个0对应的行号,也就是最后一个四位数字的起始位置。
新手提示
- 把公式中的
A1替换成你实际存放目标文本的单元格。 - 测试时可以先在单元格中输入你提供的示例文本,再输入公式验证结果。
内容的提问来源于stack exchange,提问作者Sky
相关产品推荐
相关产品推荐

