Menu

Excel SUBSTITUTE 和 REPLACE 函数:替换文本

=SUBSTITUTE(A2,"-","") 删除 A2 中的所有短横线:SUBSTITUTE 按内容匹配来替换文本。REPLACE 按位置替换:=REPLACE(A2,1,3,"XYZ") 覆盖前 3 个字符。

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

=SUBSTITUTE(A2,"-","") 删除 A2 文本中的所有短横线:SUBSTITUTE 找到旧文本,用新文本替换它,这里的新文本是空文本。=SUBSTITUTE(A2,"-",".") 则会把每个短横线换成一个点。

删除电话号码中的短横线
B2
ABC
1PhoneDigits onlyWith dots
2555-201-33445552013344555.201.3344
3555-870-11225558701122555.870.1122
4555-433-90015554339001555.433.9001
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

即使只剩下数字,结果也是文本。需要数字时,在前面加上 --,写成 =--SUBSTITUTE(A2,"-","")。

SUBSTITUTE 和 REPLACE 的区别

=SUBSTITUTE(text, old_text, new_text, [instance_num])
=REPLACE(old_text, start_num, num_chars, new_text)

SUBSTITUTE 查找的是内容:它不关心 old_text 在什么位置。REPLACE 什么都不查找:它数字符,从 start_num 开始覆盖 num_chars 个字符。

按内容匹配还是按位置
B2
AB
1TextResult
2Report 2025 finalReport 2026 final
3Report 2025 finalReport 2026 final
4ID-0042SKU-0042
55551234555-1234
点击单元格查看它的公式。修改数字或公式,表格会重新计算。
  • B2 和 B3 的结果相同,但 B3 能成功只是因为年份正好从第 8 个字符开始。文本一变,SUBSTITUTE 仍然能找到它,REPLACE 就不行了。
  • B4 把前 2 个字符换成 SKU,不管它们是什么。
  • B5 的长度为 0:什么都不删除,所以 REPLACE 在第三个字符之后插入了短横线。这是在指定位置插入字符的标准做法。

知道文本时用 SUBSTITUTE,知道位置时用 REPLACE。按位置编辑时,可以用 FIND 提供位置:=REPLACE(A2,FIND(" ",A2),1,"_") 替换第一个空格。

只替换第二次(第 n 次)出现的内容

SUBSTITUTE 的第四个参数指定要替换第几次出现的内容。省略它时,所有出现的内容都会被替换:

实例编号
B3
AB
1PathResult
22026-03-15-final2026/03/15/final
32026-03/15-final
42026-03-15 final
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

B2 替换了每一个短横线。B3 用了 2,只替换第二个,得到 2026-03/15-final;B4 把第三个换成空格。实例编号大于匹配次数时,什么都不会改变。

重命名产品线
B2
AB
1PlanNew name
2Basic monthly
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 B2 中用公式把 A2 套餐名称中的 Basic 替换为 Standard。

删除多个不同的字符

SUBSTITUTE 每次调用只处理一个 old_text。要处理多个,就嵌套调用:每一层都作用于内层的结果。

清理电话号码
B2
AB
1PhoneDigits
2(555) 201-33445552013344
3(555) 870-11225558701122
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

从内向外读:先删除 (,再删除 ),然后删除 -,最后删除空格。在 Microsoft 365 中,=REGEXREPLACE(A2,"[^0-9]","") 一次调用就能删除所有非数字字符。专门处理多余的空格时,TRIM 是更好的工具,因为它会在单词之间保留一个空格。

统计字符或单词出现的次数

用空文本作为 SUBSTITUTE 的新文本会删除所有出现的内容,所以减少的长度就是删除的字符数。再除以单词的长度,就能统计单词的次数:

有几个逗号,“red”出现了几次
B2
ABC
1TextCommas"red" appears
2red, green, red, blue32
3Red, red, red22
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

C3 返回 2,而不是 3:SUBSTITUTE 区分大小写,所以 Red 没有被删除。要不区分大小写地统计,使用 SUBSTITUTE(LOWER(A3),"red","")。

统计标签个数
B2
AB
1TagsCount
2excel,text,formulas,tips
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: A2 中的标签用逗号分隔。在 B2 中统计一共有多少个标签(比逗号的个数多一个)。

常见错误:用 SUBSTITUTE 修改数字

SUBSTITUTE 处理的是数字的文本形式,结果也是文本。对 1050 使用 =SUBSTITUTE(A2,"0","") 会得到文本 15,而 $1,050.00 这样的格式会被忽略,因为 SUBSTITUTE 读取的是存储的值 1050。要修改数字,请用算术运算。要不用公式一次性修改许多单元格中的文本,可以用“开始 > 查找和选择 > 替换”(Ctrl+H;Mac 上按 Control+H),它有“区分大小写”选项,并且会就地替换。

常见问题

Excel 中 SUBSTITUTE 和 REPLACE 有什么区别?

SUBSTITUTE 按内容查找文本:=SUBSTITUTE(A2,"old","new") 会替换每一个 old。REPLACE 按位置工作:=REPLACE(A2,5,3,"new") 从第 5 个字符开始覆盖 3 个字符,不管它们是什么。

Excel 中怎样删除单元格中的某个字符?

把它替换成空文本:=SUBSTITUTE(A2,"-","") 删除所有短横线。要删除多个字符,就嵌套调用:=SUBSTITUTE(SUBSTITUTE(A2,"(",""),")","")。

怎样统计一个字符在单元格中出现了几次?

比较删除它前后的长度:=LEN(A2)-LEN(SUBSTITUTE(A2,",","")) 统计 A2 中的逗号个数。统计一个单词时,再除以它的长度:=(LEN(A2)-LEN(SUBSTITUTE(A2,"red","")))/3。

SUBSTITUTE 区分大小写吗?

区分。=SUBSTITUTE("Red red","red","blue") 得到 Red blue。要忽略大小写,就先把文本转成小写:=SUBSTITUTE(LOWER(A2),"red","blue"),或者使用“查找和替换”(Ctrl+H),它默认不区分大小写。

Coddy 编程语言插图

和 Coddy 一起学编程

开始