EP12. “Substring 提取子字符串”
🔒 登录后可标记已读- Excel 没有一个叫 SUBSTRING 的函数
- 要提取字符串中间某一段内容,得靠 MID、LEFT、RIGHT 搭配 FIND、LEN 组合出来
- 这篇整理五种常见的提取场景
- 前置知识建议先看过 EP04 的 FIND 函数
- 学完能应付各种「从一串文字里挖出某一段」的需求
重点内容
函数速查
| 函数 | 语法 | 用途 | 例子 |
|---|---|---|---|
| MID | =MID(text,start_num,num_chars) | 从中间指定位置提取指定长度 | =MID("Excellent",7,6) 从第 7 位开始取 6 个字符 |
| LEFT | =LEFT(text,[num_chars]) | 从左边提取 | =LEFT(A1,5) |
| RIGHT | =RIGHT(text,[num_chars]) | 从右边提取 | =RIGHT(A1,4) |
提取场景怎么选
| 场景 | 方法 | 例子 |
|---|---|---|
| 已知起始位置和长度 | MID | =MID(A1,7,6) |
| 提取分隔符前的内容 | LEFT + FIND | =LEFT(A1,FIND("-",A1)-1) |
| 提取分隔符后的内容 | RIGHT + LEN + FIND | =RIGHT(A1,LEN(A1)-FIND("-",A1)) |
| 提取括号中间的内容 | MID + 两个 FIND | =MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1) |
| 不想写公式,规律好识别 | Flash Fill | Ctrl + E,但结果是死数据 |
| Excel 365,按分隔符前后提取 | TEXTBEFORE / TEXTAFTER | 比传统组合简单很多 |
方法一:MID 从中间提取
=MID(A1,7,6),从第 7 个字符("O")开始,往后取 6 个字符。
方法二:LEFT 从左边提取,搭配 FIND 定位分隔符
比如要提取破折号前的内容:
=LEFT(A1,FIND("-",A1)-1)
先用 FIND 找到破折号的位置,再用 LEFT 截取到破折号前一个字符——注意要减 1,否则会把破折号本身也截进去。
方法三:RIGHT 从右边提取,搭配 LEN 和 FIND
比如要提取破折号后的内容:
=RIGHT(A1,LEN(A1)-FIND("-",A1))
用整串长度减去破折号所在位置,得到破折号后面还剩几个字符,再用 RIGHT 截取。
方法四:提取括号中间的内容
先用 FIND 分别定位左括号 ( 和右括号 ) 的位置,再用 MID 截取两者之间的内容,起始位置要在左括号位置基础上加 1(跳过括号本身):
=MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1)
方法五:提取包含特定文本的子字符串(进阶)
用 SUBSTITUTE、REPT(重复字符)、MID、TRIM 组合,处理更复杂的"定位并提取某个关键词周围内容"的场景;如果计算出的位置可能是负数,用 MAX 函数确保结果至少是 1,避免公式报错。
其他做法
- Flash Fill:能自动识别提取规律,但生成的是死数据,不是公式(跟 EP01 的说明一样,源数据变了不会自动更新)
- Excel 365 的 TEXTBEFORE / TEXTAFTER 函数:直接按分隔符提取"之前"或"之后"的内容,比传统 FIND+LEFT/RIGHT 组合简单很多
学完你会
- ✅ 能用 MID/LEFT/RIGHT 搭配 FIND、LEN 从字符串中间提取指定内容
- ✅ 能提取括号、破折号等分隔符前后或中间的内容
- ✅ 知道 Excel 365 的 TEXTBEFORE/TEXTAFTER 能大幅简化传统组合公式
常见错误
- 用 FIND 定位分隔符后,忘记加 1 或减 1 调整位置,导致提取结果多了或少了分隔符本身
- 处理括号提取时,左右括号位置的加减顺序搞反,导致提取长度算成负数、公式报错
- 遇到旧版本 Excel(非 365)却想用 TEXTBEFORE/TEXTAFTER,函数不存在会直接报错
Sources
Blog / Website: