=TRIM(A2) 删除 A2 文本前后的所有空格,并把单词之间每一串连续的空格缩减为一个空格。" Ana Silva " 会变成 Ana Silva。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Name | TRIM | Length before | Length after |
| 2 | Ana Silva | Ana Silva | 14 | 9 |
| 3 | Ben Okafor | Ben Okafor | 13 | 10 |
| 4 | Chen Wu | Chen Wu | 10 | 7 |
A 列中的空格是看不见的,所以表格里放了两列长度:LEN 会把空格也算进去。多余的空格通常随导入或粘贴的数据一起进来,它们会让查找和比较出错,却没有任何可见的迹象。
为什么多余的空格会让公式出错
对 Excel 来说,结尾带空格的 Ana 和 Ana 是两段不同的文本。比较会返回 FALSE,COUNTIF 不会统计这个单元格,查找则返回 #N/A:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Name | Score | Is it Ana? | Ana's score |
| 2 | Ana | 90 | FALSE | not found |
| 3 | Ben | 85 | TRUE | 90 |
| 4 | Chen | 78 |
C2 是 FALSE,D2 什么也没找到(如果没有第四个参数,XLOOKUP 会显示 #N/A),因为 A2 中存的是带空格的 Ana 。D3 在公式中对整个查找列执行 TRIM,找到了 90。这种写法在 Microsoft 365 和 Excel 2021 中可用;在更早的版本中,请先清理这一列。空格是查找返回 #N/A 最常见的原因之一。
删除所有空格
TRIM 总会在单词之间保留一个空格。要删除所有空格,比如电话号码或产品代码中的空格,就把空格替换为空:
| A | B | C | |
|---|---|---|---|
| 1 | Code | TRIM | No spaces |
| 2 | AB 12 34 | AB 12 34 | AB1234 |
| 3 | 555 201 3344 | 555 201 3344 | 5552013344 |
| A | B | |
|---|---|---|
| 1 | Customer | Clean name |
| 2 | Eli Novak | |
| 3 | Fay Ruiz | |
| 4 | Gus Lee |
轮到你了: A 列中的姓名有多余的空格。在 B2 中返回 A2 的姓名,要求前后没有空格,单词之间只有一个空格。公式会向下填充到 B4。
TRIM 不起作用:不间断空格
从网页或 PDF 复制的文本中,常常用的是不间断空格(字符 160),而不是普通空格(字符 32)。两者看起来一模一样,但 TRIM 只删除字符 32,所以在 Excel 中什么都没变:
A2: Ana Silva (a non-breaking space between the names and one at the end)
=LEN(A2) 10
=LEN(TRIM(A2)) 10, TRIM removed nothing
解决办法是先用 SUBSTITUTE 把每个字符 160 变成普通空格,剩下的交给 TRIM。下面 A2 中的文本是用 CHAR(160) 拼出来的,这样你就能看到网页粘贴过来的那个字符:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Pasted text | Length | Code of 4th character | Fixed | Fixed length |
| 2 | Ana Silva | 10 | 160 | Ana Silva | 9 |
C2 演示了如何识别一个奇怪的字符:CODE(MID(A2,4,1)) 返回第 4 个字符的代码,这里是 160。D2 有 9 个字符,也就是 A2 的 10 个字符减去结尾的空格。
CLEAN:删除换行符和其他隐藏字符
CLEAN 删除代码为 0 到 31 的非打印字符:换行符(10)、回车符(13)和制表符(9)。它不处理空格,所以常见的搭配是 =TRIM(CLEAN(A2)):
| A | B | C | |
|---|---|---|---|
| 1 | Imported | CLEAN | TRIM(CLEAN) |
| 2 | Ana Silva | AnaSilva | AnaSilva |
CLEAN 会直接删掉换行符,所以两个名字连在一起,变成 AnaSilva 。如果换行符是用来分隔单词的,就改为把它替换成空格:=TRIM(SUBSTITUTE(A2,CHAR(10)," "));单元格内换行一文讲了这种情况。
用去掉空格后的文本替换原来的列
TRIM 把结果写在另一个单元格中。要修正数据本身:
- 在数据旁边的空列中输入
=TRIM(A2)并向下填充。 - 复制这一列(Ctrl+C,Mac 上按 Cmd+C)。
- 选中原来的列,选择 开始 > 粘贴 > 粘贴值,这样单元格中得到的是文本而不是公式。
- 删除辅助列。
“查找和替换”无需公式也能删除空格,但它分不清开头的空格和单词之间的空格:把空格替换为空,会把 Ana Silva 连成 AnaSilva。把两个空格替换为一个,重复操作直到 Excel 找不到可替换的内容,这就是手动实现 TRIM 对单词间空格的处理规则。不过开头或结尾的单个空格仍会保留。
常见问题
Excel 中怎么去除空格?
=TRIM(A2) 删除开头和结尾的空格,并在单词之间只保留一个空格。要删除包括单词之间在内的所有空格,用 =SUBSTITUTE(A2," ","")。
为什么 TRIM 去不掉空格?
这些空格很可能是不间断空格(字符 160),从网页复制的文本里经常有。TRIM 只删除普通空格,即字符 32。先把它们转换掉:=TRIM(SUBSTITUTE(A2,CHAR(160)," "))。
TRIM 和 CLEAN 有什么区别?
TRIM 删除多余的空格。CLEAN 删除代码为 0 到 31 的非打印字符,例如换行符和制表符。=TRIM(CLEAN(A2)) 两样都处理。
怎么用去掉空格后的文本替换原来的列?
在一个空闲列中输入 =TRIM(A2) 并向下填充,复制这一列,选中原来的列,选择 开始 > 粘贴 > 粘贴值。然后删除这个辅助列。