Menu

Excel 去除空格:TRIM、CLEAN 和 SUBSTITUTE

=TRIM(A2) 删除 A2 文本前后的空格,并把单词之间连续的多个空格变成一个。SUBSTITUTE 可以删除所有空格,或删除 TRIM 处理不了的不间断空格。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=TRIM(A2) 删除 A2 文本前后的所有空格,并把单词之间每一串连续的空格缩减为一个空格。" Ana Silva " 会变成 Ana Silva。

删除多余的空格
B2
ABCD
1NameTRIMLength beforeLength after
2 Ana Silva Ana Silva149
3Ben Okafor Ben Okafor1310
4 Chen WuChen Wu107
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

A 列中的空格是看不见的,所以表格里放了两列长度:LEN 会把空格也算进去。多余的空格通常随导入或粘贴的数据一起进来,它们会让查找和比较出错,却没有任何可见的迹象。

为什么多余的空格会让公式出错

对 Excel 来说,结尾带空格的 Ana 和 Ana 是两段不同的文本。比较会返回 FALSE,COUNTIF 不会统计这个单元格,查找则返回 #N/A:

结尾的空格导致匹配失败
D3
ABCD
1NameScoreIs it Ana?Ana's score
2Ana 90FALSEnot found
3Ben85TRUE90
4Chen78
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

C2 是 FALSE,D2 什么也没找到(如果没有第四个参数,XLOOKUP 会显示 #N/A),因为 A2 中存的是带空格的 Ana 。D3 在公式中对整个查找列执行 TRIM,找到了 90。这种写法在 Microsoft 365 和 Excel 2021 中可用;在更早的版本中,请先清理这一列。空格是查找返回 #N/A 最常见的原因之一。

删除所有空格

TRIM 总会在单词之间保留一个空格。要删除所有空格,比如电话号码或产品代码中的空格,就把空格替换为空:

TRIM 与删除所有空格的对比
B2
ABC
1CodeTRIMNo spaces
2 AB 12 34 AB 12 34AB1234
3555 201 3344555 201 33445552013344
点击单元格查看它的公式。修改数字或公式,表格会重新计算。
清理客户姓名
B2
AB
1CustomerClean name
2 Eli Novak
3Fay Ruiz
4Gus 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) 拼出来的,这样你就能看到网页粘贴过来的那个字符:

修复不间断空格
D2
ABCDE
1Pasted textLengthCode of 4th characterFixedFixed length
2Ana Silva 10160Ana Silva9
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

C2 演示了如何识别一个奇怪的字符:CODE(MID(A2,4,1)) 返回第 4 个字符的代码,这里是 160。D2 有 9 个字符,也就是 A2 的 10 个字符减去结尾的空格。

CLEAN:删除换行符和其他隐藏字符

CLEAN 删除代码为 0 到 31 的非打印字符:换行符(10)、回车符(13)和制表符(9)。它不处理空格,所以常见的搭配是 =TRIM(CLEAN(A2)):

先 CLEAN,再 TRIM
B2
ABC
1ImportedCLEANTRIM(CLEAN)
2 Ana Silva AnaSilva AnaSilva
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

CLEAN 会直接删掉换行符,所以两个名字连在一起,变成 AnaSilva 。如果换行符是用来分隔单词的,就改为把它替换成空格:=TRIM(SUBSTITUTE(A2,CHAR(10)," "));单元格内换行一文讲了这种情况。

用去掉空格后的文本替换原来的列

TRIM 把结果写在另一个单元格中。要修正数据本身:

  1. 在数据旁边的空列中输入 =TRIM(A2) 并向下填充。
  2. 复制这一列(Ctrl+C,Mac 上按 Cmd+C)。
  3. 选中原来的列,选择 开始 > 粘贴 > 粘贴值,这样单元格中得到的是文本而不是公式。
  4. 删除辅助列。

“查找和替换”无需公式也能删除空格,但它分不清开头的空格和单词之间的空格:把空格替换为空,会把 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) 并向下填充,复制这一列,选中原来的列,选择 开始 > 粘贴 > 粘贴值。然后删除这个辅助列。

Coddy 编程语言插图

和 Coddy 一起学编程

开始