Excel常用78个函数-39,40 SUBSTITUTE,REPLACE函数
文本置换函数:SUBSTITUTE和REPLACE
前面我们聊了LEN、TRIM、FIND、SEARCH这几个函数,它们要么是测量工具,要么是雷达定位器。但在实际处理文本时,光是测量和定位往往不够——你还需要“动手改”。需要把旧的内容换成新的,或者把某个位置上的字符直接替换掉。这时候,SUBSTITUTE和REPLACE就登场了。这两个函数的名字翻译过来,一个是“替换”,另一个还是“替换”。但它们的“替换哲学”完全不同:SUBSTITUTE是按“内容”换,REPLACE是按“位置”换。理解了这个本质区别,你就知道什么时候用谁了。第一个 SUBSTITUTE函数:基于内容的精准替换
语法=SUBSTITUTE(文本, 旧文本, 新文本, [替换第几次出现的])。最后一个参数可选,如果不填,就把所有的旧文本都换成新文本。这个函数的工作逻辑很像你在Word里按Ctrl+H:告诉它“把所有的‘A’都改成‘B’”,它就会老老实实地在文本里扫描,见一个改一个。它不关心“A”在第几位,只关心“有没有‘A’”。举个例子,单元格A2里是“2024年销售额:100万,2025年目标:120万”。你想把“万”字全部替换为“万元”。可以用=SUBSTITUTE(A2,"万","万元") 就把所有的“万”替换成了"万元"。SUBSTITUTE有一个很重要的特性:区分大小写。它把“Excel”里的“E”和“e”看作不同的东西。这一点和FIND的个性一致。你可以把SUBSTITUTE想象成一个“文字清洁工”或者“地毯式换装师”——你给它一张字典:“遇到‘旧词’,全部换成‘新词’”,它就会不厌其烦地跑遍整篇文本,把所有符合条件的词都换掉。它最适合的场景是:你要替换的内容是“已知的、明确的文本片段”,而且你不在乎它在第几个位置。清理数据中的不规范分隔符,比如把中文逗号“,”统一换成英文逗号“,”。把手机号中间四位隐去:=SUBSTITUTE(A2, MID(A2,4,4), "****"),注意这其实结合了MID,但本质还是按内容换——只要那四位数字连续出现,就会被替换。不过如果手机号里其他地方也恰好出现了相同的四位数字,就会误伤,所以更严谨的做法是用REPLACE按位置换。第二个 REPLACE函数:基于位置的硬核替换
语法 =REPLACE(旧文本, 开始位置, 替换长度, 新文本)。它不关心你要替换的内容具体是什么,只关心“从第几个字符开始,连续多少个字符,统统换成新文本”。还是那个例子,手机号“13834567890”。你想把第4位到第7位(也就是“3456”)换成“****”,用SUBSTITUTE可能有风险(万一后面也有“3456”呢?),但用REPLACE就非常稳妥:=REPLACE(A2, 4, 4, "****")。结果就是“138****7890”。因为它直接按坐标动手:从第4个字开始,往后数4个字,不管它们是“3456”还是“abcd”,一律砍掉,换上“****”。REPLACE就像一把外科手术刀,你告诉医生:“从肋骨往下3厘米,切掉2厘米长的组织,然后缝上这块新皮。”它不看这块组织是什么性质,只管位置和长度。所以,当你明确知道要改动的“坐标区间”时,REPLACE是最直接、最不会误伤的工具。再比如,你有一批订单号,格式固定为“ORD-XXXX”,你想把前面的“ORD-”去掉,只保留后面的数字。可以用 =REPLACE(A2,1,4,""),意思是从第1个字符开始,删掉4个字符(O,R,D,-),什么都不加。或者更直观地用 =MID(A2,5,4),但REPLACE也能做同样的事。特别提醒:REPLACE的“替换长度”如果为0,就相当于在指定位置“插入”新文本,但Excel没有单独的INSERT函数,这个技巧有时候很好用。比如 =REPLACE(A2, 4, 0, "新增内容") 会在第4个字符前面插入新文本。