REPLACE 函数¶
1. 函数概述¶
REPLACE 是 Excel 文本处理函数之一,用于按位置替换文本字符串中的指定部分:从某个起始位置开始,删除指定数量的字符,并用新的文本替换它们。
它的核心特点是:
- 按字符位置替换:不关心要替换的内容是什么,只看“从第几位开始,替换多少位”。
- 适用于固定格式文本的批量处理:如编号、日期字符串、手机号脱敏、截取并改写固定段等。
注意:
REPLACE与SUBSTITUTE的区别在于:REPLACE按“位置和长度”替换,SUBSTITUTE按“匹配到的具体文本内容”替换。
2. 基础语法¶
3. 参数说明¶
| 参数名 | 是否必填 | 含义 | 说明 |
|---|---|---|---|
| old_text | 是 | 原始文本 | 可以是文本、单元格引用、或返回文本的公式结果 |
| start_num | 是 | 开始替换的位置 | 从 1 开始计数(第 1 个字符的位置为 1) |
| num_chars | 是 | 要替换的字符数 | 从 start_num 起算,删除/替换的字符数量 |
| new_text | 是 | 用于替换的新文本 | 会插入到替换位置,替代被移除的字符 |
补充要点:
start_num是 1-based(从 1 开始),不是从 0 开始。num_chars决定“删除多少个字符”,并由new_text替换。new_text可以是空字符串"",用于“删除指定位置的一段字符”。
4. 基础用法示范¶
下面示范均为常见业务场景,便于直接套用。为便于阅读,示例中用具体文本演示,实际使用时可用单元格引用替换。
4.1 替换固定位置的一段字符¶
需求:将文本 "ABCD-1234" 中的前 4 个字符替换成 "WXYZ"。
结果:
"WXYZ-1234"
解释:
- 从第 1 位开始,替换 4 个字符(即 ABCD),替换为 WXYZ。
4.2 替换中间某段¶
需求:将 "订单-202601-0008" 中的月份 "202601" 改为 "202512"(月份长度固定为 6)。
结果:
"订单-202512-0008"
解释:
"订单-"占 3 个字符,因此月份开始位置为第 4 位。- 替换 6 位,刚好覆盖
"202601"。
4.3 插入文本(num_chars = 0)¶
需求:在 "A1001" 的第 2 位后插入 "-",得到 "A-1001"。
结果:
"A-1001"
解释:
- 从第 2 位开始替换 0 个字符,等价于在第 2 位“插入”新文本。
4.4 删除指定位置的一段字符¶
需求:删除 "CN-2026-01" 中的 "-"(假设要删除第 3 位的字符)。
结果:
"CN2026-01"
解释:
- 从第 3 位开始删除 1 个字符,用空字符串替换,相当于删除。
4.5 脱敏:替换中间若干位为星号¶
需求:将手机号 "13812345678" 的中间 4 位替换成 "****",得到 "138****5678"。
结果:
"138****5678"
解释:
- 手机号第 4 位开始是中间段(固定 4 位),替换即可。
4.6 与其他函数组合¶
需求:将邮箱 "jerry@example.com" 的用户名部分替换成 "user",得到 "user@example.com"。
思路:用户名长度不固定,但 "@" 的位置可由 FIND 找到,然后替换从第 1 位到 @ 前的所有字符。
结果:
"user@example.com"
解释:
FIND("@", ...)返回@的位置。- 用
@位置减 1 得到用户名长度。 - 从第 1 位开始替换用户名长度字符为
"user"。
5. 总结¶
REPLACE 的本质是“按位置替换”,掌握它的关键是理解三个点:
- 从第几位开始:
start_num从 1 开始计数。 - 替换多少位:
num_chars决定删掉多少字符并被替换。 - 替换成什么:
new_text可以是新文本、空文本(删除),也可以通过公式动态生成。
实务中,REPLACE 最适合处理“格式稳定、位置固定或可定位”的文本,例如:
- 编号/订单号固定段替换
- 日期字符串固定位置改写
- 账号/手机号脱敏
- 结合
FIND/LEN/LEFT/MID实现动态替换与插入
只要你的场景满足“替换段能用位置和长度确定”,REPLACE 往往比按内容匹配更稳定、更高效。