LEFT、MID、FIND、TEXT、TEXTJOIN:拆分、清洗与格式化文本

适用场景

从“姓名+工号”里拆出姓名,从订单号里截取日期,把多个单元格拼成一句话,去掉导入数据里的多余空格,把数字格式化成固定长度的编号。文本函数本身简单,难的是分隔符位置不固定、数字和文本混在一起、以及不可见字符。

常用函数

函数 作用 示例
LEFT(text, n) 从左边取 n 个字符 =LEFT(A2,3)
RIGHT(text, n) 从右边取 n 个字符 =RIGHT(A2,4)
MID(text, start, n) 从第 start 个字符起取 n 个 =MID(A2,4,2)
LEN(text) 字符个数 =LEN(A2)
FIND(find, within, [start]) 区分大小写找位置 =FIND("-",A2)
SEARCH(find, within, [start]) 不区分大小写,支持通配符 =SEARCH("-",A2)
SUBSTITUTE(text, old, new, [n]) 替换指定文本 =SUBSTITUTE(A2," ","")
REPLACE(text, start, n, new) 按位置替换 =REPLACE(A2,1,3,"")
TRIM(text) 去掉首尾空格,压缩中间连续空格 =TRIM(A2)
CLEAN(text) 去掉不可打印字符 =CLEAN(A2)
TEXT(value, format) 按格式转成文本 =TEXT(A2,"yyyy-mm-dd")
TEXTJOIN(delim, ignore_empty, ...) 用分隔符拼接多个值 =TEXTJOIN(",",TRUE,B2:D2)
CONCAT(...) 拼接多个值/区域 =CONCAT(B2:D2)
VALUE(text) 文本转数字 =VALUE(A2)
UPPER/LOWER/PROPER 转大写/小写/首字母大写 =UPPER(A2)

TEXTJOIN 和 CONCAT 在 Excel 2019/365 中可用;Excel 2016 及更早版本用 & 或 CONCATENATE。

拆分文本

按固定分隔符拆分

假设 A2 是 张三-001:

取姓名
=LEFT(A2,FIND("-",A2)-1)

取工号
=MID(A2,FIND("-",A2)+1,99)

FIND 返回分隔符的位置,LEFT 取到分隔符前一个字符,MID 从分隔符后一个字符开始取。最后一段长度不确定时,MID 的第三个参数写一个足够大的数(如 99)即可。

取两个分隔符之间的内容

假设 A2 是 CN-2026-001,要取中间的 2026:

=MID(A2,FIND("-",A2)+1,FIND("-",A2,FIND("-",A2)+1)-FIND("-",A2)-1)

思路:第二个 FIND 从第一个分隔符后面开始找,得到第二个分隔符的位置;长度等于两个位置之差减 1。

按最后一个分隔符拆分

取最后一段
=TRIM(RIGHT(SUBSTITUTE(A2,"-",REPT(" ",99)),99))

取最后一段之前的内容
=LEFT(A2,FIND("☃",SUBSTITUTE(A2,"-","☃",LEN(A2)-LEN(SUBSTITUTE(A2,"-",""))))-1)

第二种写法用“把最后一个分隔符替换成唯一标记”的思路;标记字符要选数据里不会出现的字符。

清洗文本

去掉首尾空格
=TRIM(A2)

去掉所有空格
=SUBSTITUTE(A2," ","")

去掉不换行空格
=TRIM(SUBSTITUTE(A2,CHAR(160)," "))

去掉不可打印字符
=CLEAN(A2)

去掉空格和不可打印字符
=TRIM(CLEAN(SUBSTITUTE(A2,CHAR(160)," ")))

TRIM 只能处理普通空格(ASCII 32),从网页、PDF、系统导出复制来的文本经常带不换行空格 CHAR(160),必须先替换再 TRIM。

拼接与格式化

拼接姓名和部门
=B2&" - "&C2

用逗号拼接多个单元格,忽略空值
=TEXTJOIN(", ",TRUE,B2:D2)

把日期格式化成 2026-10-31
=TEXT(A2,"yyyy-mm-dd")

把数字格式化成六位编号
=TEXT(A2,"000000")

显示两位小数和千分位
=TEXT(A2,"#,##0.00")

显示百分比
=TEXT(A2*100,"0.0")&"%"

TEXT 的结果是文本,不能再直接参与数值计算;需要计算时保留原数值,只在展示列用 TEXT。

数字与文本转换

易错点

相关条目

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. FIND 和 SEARCH 有什么区别?
  2. 为什么 TRIM 去不掉从网页复制来的空格?
  3. TEXT(A2,"000000") 的结果还能直接参与求和吗?
答案
  1. FIND 区分大小写、不支持通配符;SEARCH 不区分大小写并支持 *、?。
  2. 网页里常是不换行空格 CHAR(160),TRIM 只处理普通空格;要先用 SUBSTITUTE 替换。
  3. 不能,TEXT 返回文本;需要计算时保留原数值,另设展示列。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令