=SUBSTITUTE(A2,"-","") 删除 A2 文本中的所有短横线:SUBSTITUTE 找到旧文本,用新文本替换它,这里的新文本是空文本。=SUBSTITUTE(A2,"-",".") 则会把每个短横线换成一个点。
| A | B | C | |
|---|---|---|---|
| 1 | Phone | Digits only | With dots |
| 2 | 555-201-3344 | 5552013344 | 555.201.3344 |
| 3 | 555-870-1122 | 5558701122 | 555.870.1122 |
| 4 | 555-433-9001 | 5554339001 | 555.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 个字符。
| A | B | |
|---|---|---|
| 1 | Text | Result |
| 2 | Report 2025 final | Report 2026 final |
| 3 | Report 2025 final | Report 2026 final |
| 4 | ID-0042 | SKU-0042 |
| 5 | 5551234 | 555-1234 |
- B2 和 B3 的结果相同,但 B3 能成功只是因为年份正好从第 8 个字符开始。文本一变,SUBSTITUTE 仍然能找到它,REPLACE 就不行了。
- B4 把前 2 个字符换成
SKU,不管它们是什么。 - B5 的长度为 0:什么都不删除,所以 REPLACE 在第三个字符之后插入了短横线。这是在指定位置插入字符的标准做法。
知道文本时用 SUBSTITUTE,知道位置时用 REPLACE。按位置编辑时,可以用 FIND 提供位置:=REPLACE(A2,FIND(" ",A2),1,"_") 替换第一个空格。
只替换第二次(第 n 次)出现的内容
SUBSTITUTE 的第四个参数指定要替换第几次出现的内容。省略它时,所有出现的内容都会被替换:
| A | B | |
|---|---|---|
| 1 | Path | Result |
| 2 | 2026-03-15-final | 2026/03/15/final |
| 3 | 2026-03/15-final | |
| 4 | 2026-03-15 final |
B2 替换了每一个短横线。B3 用了 2,只替换第二个,得到 2026-03/15-final;B4 把第三个换成空格。实例编号大于匹配次数时,什么都不会改变。
| A | B | |
|---|---|---|
| 1 | Plan | New name |
| 2 | Basic monthly |
轮到你了: 在 B2 中用公式把 A2 套餐名称中的 Basic 替换为 Standard。
删除多个不同的字符
SUBSTITUTE 每次调用只处理一个 old_text。要处理多个,就嵌套调用:每一层都作用于内层的结果。
| A | B | |
|---|---|---|
| 1 | Phone | Digits |
| 2 | (555) 201-3344 | 5552013344 |
| 3 | (555) 870-1122 | 5558701122 |
从内向外读:先删除 (,再删除 ),然后删除 -,最后删除空格。在 Microsoft 365 中,=REGEXREPLACE(A2,"[^0-9]","") 一次调用就能删除所有非数字字符。专门处理多余的空格时,TRIM 是更好的工具,因为它会在单词之间保留一个空格。
统计字符或单词出现的次数
用空文本作为 SUBSTITUTE 的新文本会删除所有出现的内容,所以减少的长度就是删除的字符数。再除以单词的长度,就能统计单词的次数:
| A | B | C | |
|---|---|---|---|
| 1 | Text | Commas | "red" appears |
| 2 | red, green, red, blue | 3 | 2 |
| 3 | Red, red, red | 2 | 2 |
C3 返回 2,而不是 3:SUBSTITUTE 区分大小写,所以 Red 没有被删除。要不区分大小写地统计,使用 SUBSTITUTE(LOWER(A3),"red","")。
| A | B | |
|---|---|---|
| 1 | Tags | Count |
| 2 | excel,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),它默认不区分大小写。