=LEFT(A2,3) 返回 A2 中文本的前 3 个字符,=RIGHT(A2,1) 返回最后一个字符,=MID(A2,5,4) 从第 5 个字符开始返回 4 个字符。对于编码 NYC-2041-B,结果分别是 NYC、B 和 2041。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Code | City | Number | Size |
| 2 | NYC-2041-B | NYC | 2041 | B |
| 3 | LAX-1187-A | LAX | 1187 | A |
| 4 | SFO-3302-C | SFO | 3302 | C |
| 5 | BOS-0915-B | BOS | 0915 | B |
点击 C2,把 5 改成 4:结果就从横杠开始了。空格和标点也算字符,第一个字符的位置是 1。
语法
=LEFT(text, [num_chars])
=RIGHT(text, [num_chars])
=MID(text, start_num, num_chars)
- 在 LEFT 和 RIGHT 中,
num_chars可以省略,默认为 1。 - 如果要的字符数比实际的多,会得到整段文本,而不是错误。
=LEFT("Ann",10)的结果是Ann。 - 个数为负数时会得到 #VALUE!,例如对少于 3 个字符的文本使用
=LEFT(A2,LEN(A2)-3)。
长度不固定时:LEFT、RIGHT、MID 搭配 FIND
编码的长度很少完全一样。用 FIND 找到分隔符的位置,让公式自己算出个数:
| A | B | C | |
|---|---|---|---|
| 1 | Code | Before the dash | After the dash |
| 2 | NY-2041 | NY | 2041 |
| 3 | BOSTON-15 | BOSTON | 15 |
| 4 | LA-30087 | LA | 30087 |
FIND("-",A2)返回横杠的位置,在NY-2041中是 3。LEFT(A2,3-1)取它前面的 2 个字符。MID(A2,3+1,50)从横杠之后开始,最多取 50 个字符,比任何编码都长,所以能取到末尾。
在 Microsoft 365 和 Excel 2024 中,TEXTBEFORE(A2,"-") 和 TEXTAFTER(A2,"-") 用更短的公式得到相同的结果;见 拆分文本。
去掉开头或末尾的字符
要去掉一些字符,就保留其余部分。LEN 给出总长度,再减去想去掉的个数:
| A | B | C | |
|---|---|---|---|
| 1 | Text | Without first 3 | Without last 2 |
| 2 | ID-58210 | 58210 | ID-582 |
| 3 | ID-7734 | 7734 | ID-77 |
| 4 | ID-120 | 120 | ID-1 |
| A | B | |
|---|---|---|
| 1 | Card | Last four |
| 2 | 4111 2222 3333 9876 |
轮到你了: 在 B2 中返回 A2 中卡号的最后 4 个字符。
从编码中提取数字
LEFT、RIGHT 和 MID 总是返回文本,即使这些字符都是数字。文本形式的数字看起来像数字,但 SUM 会跳过它们,所以提取出来的数字求和结果可能是 0:
| A | B | C | |
|---|---|---|---|
| 1 | Order | MID (text) | VALUE(MID) |
| 2 | SO-0120-X | 0120 | 120 |
| 3 | SO-0345-Y | 0345 | 345 |
| 4 | SO-1000-Z | 1000 | 1000 |
| 5 | Total | 0 | 1465 |
B 列显示 0120,前导零还在,因为它仍然是文本,B5 的合计为 0。C 列用 VALUE 转换了每一段,合计就是正确的。=--MID(A2,4,4) 和 =MID(A2,4,4)*1 也能同样转换;更多内容见 文本转数字。
| A | B | |
|---|---|---|
| 1 | Item | Quantity |
| 2 | PK-045-BAG |
轮到你了: 数量位于两个横杠之间,并且总是 3 位数字。在 B2 中把它提取为可以求和的数字。
常见错误:对日期使用 LEFT
日期是以数字形式存储的,所以对日期 2026-03-15 使用 =LEFT(B2,4) 并不会返回 2026,而是返回 4609,也就是日期背后的序列号 46096 的前 4 位。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Event | Date | LEFT(date,4) | Year |
| 2 | Launch | 2026-03-15 | 4609 | 2026 |
| 3 | 2026 |
年份要作为数字,用 YEAR(B2);要作为文本,用 TEXT(B2,"yyyy")。其他部分可以用 MONTH、DAY,以及带 "mmm" 或 "dd" 的 TEXT 取得。
常见问题
怎样在 Excel 中提取前 N 个字符?
用 LEFT 并给出个数:=LEFT(A2,3) 返回前 3 个字符。不写第二个参数时,=LEFT(A2) 只返回第一个字符。
怎样在 Excel 中去掉开头或末尾的几个字符?
用 LEN 保留其余部分:=RIGHT(A2,LEN(A2)-3) 去掉前 3 个字符,=LEFT(A2,LEN(A2)-2) 去掉最后 2 个字符。
为什么 MID 返回的数字没法求和?
LEFT、RIGHT 和 MID 总是返回文本,而 SUM 会跳过文本。用 VALUE 或两个负号把结果变成数字:=VALUE(MID(A2,5,4)) 或 =--MID(A2,5,4)。
怎样在 Excel 中取某个字符之前的文本?
找到这个字符的位置,再减去 1:=LEFT(A2,FIND("-",A2)-1) 返回第一个横杠之前的全部内容。在 Microsoft 365 中,=TEXTBEFORE(A2,"-") 效果相同。