Excel 文本函数怎么用:LEFT、MID、RIGHT、LEN、FIND
一列姓名要只取姓、一列邮箱要截掉域名、一列带括号的编码要抠出括号里的内容——这类「从文本里取一部分」的活,Excel 靠 LEFT、MID、RIGHT、LEN、FIND 这几个函数来做。本文把它们一个一个讲清,再演示怎么组合,最后告诉你为什么用超级表的拆分工具或一句话 AI 能省掉一大截嵌套公式。
LEFT / RIGHT / MID:从左、从右、从中间取字符
这三个函数是最基础的文本截取工具,逻辑一看就懂。
LEFT(文本, 字符数) — 从左边取 N 个字符。
例:A2 是 张三-销售部,只想要姓名两字:
=LEFT(A2, 2) → 张三
RIGHT(文本, 字符数) — 从右边取 N 个字符。
例:A2 是 合同编号_20240601,只想要末尾 8 位日期:
=RIGHT(A2, 8) → 20240601
MID(文本, 开始位置, 字符数) — 从第 N 个字符起取 M 个字符。
例:A2 是 GD-2024-0087,想取中间年份 4 位(第 4 位开始):
=MID(A2, 4, 4) → 2024
LEN / FIND:算长度、定位某字符的位置
只知道「从左/右取 N 个」还不够——很多时候你不知道 N 是几,要先用 LEN 或 FIND 算出来。
LEN(文本) — 返回文本的字符数(含空格)。
例:A2 是 上海鑫沃克斯,LEN 返回 6;A2 是 TableDI,LEN 返回 7。常见用途是配合 MID 动态算截取长度。
FIND(要找的字符, 文本, [起始位置]) — 返回某字符在文本中第一次出现的位置编号(从 1 开始数);找不到会报错 #VALUE!。
例:A2 是 user@tabledi.com.cn,想知道 @ 在第几位:
=FIND("@", A2) → 5(从左数第 5 个字符是 @)
组合用法:MID + FIND 动态截取
实际工作里,分隔符的位置往往是变的——有人姓名三个字,有人两个字;邮箱用户名长短不一。这时候要把 FIND 算出的位置传给 MID 或 LEFT,做「动态截取」。
例一:从邮箱里取 @ 前面的用户名
A2 是 zhangsan@tabledi.com.cn,想取 zhangsan:
=LEFT(A2, FIND("@", A2) - 1)
逻辑:FIND 找到 @ 的位置,减 1 就是 @ 前面的字符数,LEFT 按这个数截取。
例二:从「姓名-部门」格式取姓名
A2 是 李四-市场部,分隔符 - 前面是姓名:
=LEFT(A2, FIND("-", A2) - 1) → 李四
例三:取两个括号之间的内容
A2 是 产品编码(PD-0023),想取括号里的 PD-0023:
=MID(A2, FIND("(", A2) + 1, FIND(")", A2) - FIND("(", A2) - 1)
逻辑:左括号位置 +1 是内容起点;右括号位置 - 左括号位置 - 1 是内容长度。
这些组合公式的麻烦
看到上面那串 MID+FIND+FIND 你可能已经皱眉了。确实,用时间长了会碰到几个典型痛点:
- 嵌套越写越长,读不懂也改不了。三层以上的嵌套公式,一周后自己都认不出来。别人接手更是灾难。
- 分隔符位置一变全崩。数据里混进了全角括号或全角横线,FIND 找不到直接报
#VALUE!,整列变红。 - 中文字符数和字节数的混淆。LEN 在 Excel 里对中文按字符算,但 LENB 按字节算(中文算 2)。两个函数行为不同,混用容易算错长度。
- 规则一调就要改公式。产品编码改格式了,从括号改成斜线,之前写的所有公式要全部重写。
- 批量处理几千行时维护成本高。同一列里如果数据格式不统一,单一公式覆盖不了所有情况,得一行一行处理。
更省事:超级表拆分工具 / AI 一句话抽取
超级表(TableDI)是一款桌面高能表格助手,macOS / Windows 可用,离线、零登录、本地运行。它把「从文本里抽出某一段」做成了两种方式,都不需要你手写函数。
方式一:拆分工具(列拆分)
适合有明确分隔符的情况(按 -、@、括号、固定位置等拆分)。步骤:
- 在超级表里打开含文本的那一列,点顶部「拆分」按钮,进入列拆分工具。
- 选择分隔符类型(固定字符 / 固定位置 / 正则),预览右侧实时显示拆出来的结果。
- 确认预览无误,点「拆分」,每段内容自动填入对应列。整列一次处理,不用写任何公式。
方式二:AI 一句话抽取
适合规则不固定、或你不知道该用什么分隔符的情况。步骤:
- 选中文本列,进入「AI 处理」。
- 用一句话描述你想要什么,例如:「提取 @ 前面的用户名」、「取括号里的编码」、「把省市区分开」。
- AI 理解意图,自动处理整列并填入新列。格式变化也不会让结果崩掉,因为 AI 理解语义而非靠固定位置。
还可以用「合并列」把拆好的几段重新拼起来,或在配合批量替换功能把不需要的部分清理掉。整个过程在一个界面里完成,不需要在公式栏里堆嵌套。
函数公式 vs 超级表做法对照
| 场景 | Excel 文本函数 | 超级表 |
|---|---|---|
| 固定位置截取 | LEFT / MID / RIGHT + 数字参数 | 拆分工具选「固定位置」 |
| 按分隔符截取 | LEFT(A2, FIND("-",A2)-1) 等 | 拆分工具选分隔符,即时预览 |
| 规则不固定 / 自然语言描述 | 手写嵌套公式,容易出错 | AI 一句话抽取,理解语义 |
| 格式变化后维护 | 公式全部重写 | 重新描述意图即可 |
| 批量几千行 | 拖公式 + 检查报错 | 整列一次处理 |
| 中英文混合 | 需注意 LEN / LENB 差异 | AI 理解语义,不受计数规则影响 |
常见问题
LEN 计算中文,是算 1 个还是 2 个?
在 Excel 里,LEN 对每个字符(无论中文还是英文)都算 1。所以 LEN("超级表") 返回 3,LEN("TableDI") 也返回 7。如果你用的是 LENB,中文则按 2 字节计,英文按 1 字节计——两个函数的结果不同。绝大多数「截取文字」的场景用 LEN 即可,只有需要配合字节级操作时才用 LENB。
FIND 和 SEARCH 有什么区别?
两者都是「找某字符在文本中的位置」,主要差别在于大小写敏感性:FIND 区分大小写,FIND("a", "Apple") 找不到返回 #VALUE!;SEARCH 不区分大小写,SEARCH("a", "Apple") 返回 1。另外 SEARCH 支持通配符(* 和 ?),FIND 不支持。日常处理中文数据时两者差异不大;处理英文字段时要根据需要选。
分隔符的位置不固定,怎么动态截取?
用 FIND 先算出分隔符的位置,再把这个位置传给 LEFT / MID / RIGHT。例如取 @ 前面的内容:=LEFT(A2, FIND("@",A2)-1)。如果要取两个分隔符之间的内容,就需要两次 FIND 计算起点和长度,公式会变长。如果觉得嵌套太复杂,也可以用超级表的 拆分工具(选分隔符模式),或直接用 AI 一句话告诉它「取 @ 前的用户名」,不用拼公式。