首页 / 公式 / Excel MID 函数
文本 Excel + Google Sheets

Excel MID 函数

MID 从一段文本的中间返回指定字符。产品流水号、证件中间几位、固定格式编号,都是同样三个参数:文本、起始位置、要取几个字符。第一个字符是第 1 位。

MID 函数语法与 3 个参数

=MID(text, start_num, num_chars)

MID 从文本中间返回一段字符。start_num 是要保留的第一个字符,从 1 起算。num_chars 是要取几个字符。MID("PRD-1023-A", 5, 4) 是 "1023"。

1 text
必填

来源文本,通常是单元格引用(A2)。直接写字符串也可以:MID("PRD-1023-A", 5, 4) 返回 1023。

2 start_num
必填

从第几个字符开始,1 起算。PRD-1023-A 的第 5 个字符是流水号的第一位数字。0 或负数会返回 #VALUE!。

3 num_chars
必填

要取几个字符。从第 5 位取 4 个,就是第 5 到第 8 个字符。

MID 示例:产品代码第 5 到第 8 个字符

这条 MID 示例从固定格式的产品代码里取出四位流水号。

产品代码起始位置字符数
PRD-1023-A54
SRV-8841-B54
ACC-0050-C54
=MID(A2, 5, 4)

PRD-1023-A 的结果是 1023。第 1 到第 3 个字符是类别,第 4 个是连字符,第 5 到第 8 个是流水号。MID("PRD-1023-A", 5, 4) 返回 "1023"。SRV-8841-B 是 8841。ACC-0050-C 是 0050,前导零会保留,因为 MID 返回的是文本。

Excel MID 函数最常踩的 4 个陷阱

1. 起始位置从 1 算,不是 0

第一个字符是第 1 位。MID(A2, 1, 3) 与 LEFT(A2, 3) 结果相同。MID(A2, 0, 4) 返回 #VALUE!,负的起始位置也一样。

2. 起始位置超过结尾会得到空白

MID("PRD", 9, 2) 返回空字符串,不是错误。文本里根本没有第 9 个字符。结果空白却觉得不该空白时,先用 LEN 看长度。

3. 字符数是负数会得到 #VALUE!

num_chars 必须大于等于 0。负数返回 #VALUE!。若要求的字符数超出剩余长度,MID 会返回剩下的部分:MID("PRD-1023-A", 8, 10) 是 "3-A"。

4. MID 算字符,MIDB 算字节

空格和连字符各占一个位置,后面的字符都会跟着往后移。MID 统计字符。MIDB 统计字节,是双字节版本。固定格式的代码用 MID。

Excel 与 Google Sheets

Microsoft Excel (365 / Desktop)

Excel 的 MID 有三个参数,桌面版和 Microsoft 365 都支持。MIDB 用来统计字节。跨工作表写法与其他函数相同:=MID(Sheet2!A2, 5, 4)。

Google Sheets

Google Sheets 的语法相同:MID(text, start_num, num_chars)。MID("PRD-1023-A", 5, 4) 同样是 1023。两边的起始位置都从 1 起算。

这一页对应的 MID 练习

MID 入门实战:从代码取出流水号

在下方锁定迷你表格里输入公式,取出每个产品代码的第 5 到第 8 个字符。

打开独立练习题页
题目说明
提示 0/4
官方解法 2
–
测试用例
1
2
3
重置
提交
fx
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
正在加载交互式电子表格...
正在准备单元格数据与公式求解引擎
○ 就绪 请在高亮的目标单元格输入公式,然后点「提交」。

MID 练习

用 MID 取出中间的流水号。公式要跟着 A2 变,不能把 1023 写死。

常见问题

Excel MID 函数怎么运作?

=MID(text, start_num, num_chars) 从 text 的 start_num 开始,返回 num_chars 个字符。位置从 1 起算。=MID("PRD-1023-A", 5, 4) 返回 "1023"。

MID 公式要写哪三个参数?

文本、起始位置、要取的字符数。=MID(A2, 5, 4) 取出 A2 的第 5 到第 8 个字符。

MID、LEFT、RIGHT 有什么区别?

LEFT 从开头取,RIGHT 从结尾取,MID 从中间任一位置取。LEFT(A2, 3) 的结果与 MID(A2, 1, 3) 相同。

为什么 MID 返回 #VALUE! 或空白?

起始位置小于 1,或字符数是负数,会返回 #VALUE!。起始位置超过最后一个字符,返回空字符串。若字符数超出剩余长度,MID 会返回剩下的字符,不会报错。