从“姓名+工号”里拆出姓名,从订单号里截取日期,把多个单元格拼成一句话,去掉导入数据里的多余空格,把数字格式化成固定长度的编号。文本函数本身简单,难的是分隔符位置不固定、数字和文本混在一起、以及不可见字符。
| 函数 | 作用 | 示例 |
|---|---|---|
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。
=VALUE(A2)、=A2*1、=--A2;=TEXT(A2,"0") 或 =A2&"";SUBSTITUTE 去掉 ,、¥、空格,再 VALUE;NUMBERVALUE。FIND 找不到会返回 #VALUE!:分隔符可能不存在,外面套 IFERROR,或先用 ISNUMBER(FIND(...)) 判断。FIND 和 SEARCH 大小写不同:FIND("a","A") 返回错误,SEARCH("a","A") 返回 1;按需求选择。MID(A2,1,3) 取前三个字符,不是从 0 开始。TRIM 去不掉不换行空格:用 SUBSTITUTE(A2,CHAR(160)," ") 再 TRIM。SUBSTITUTE 区分大小写:SUBSTITUTE("Apple","a","") 不会替换大写的 A。TEXT 格式代码受区域设置影响:yyyy-mm-dd 在中文版通常可用,但跨语言环境可能不同;报表里尽量统一格式。TEXTJOIN 版本限制:Excel 2016 没有这个函数,共享文件时改用 & 或辅助列。合上页面,先回答,再展开对照。
FIND 和 SEARCH 有什么区别?TRIM 去不掉从网页复制来的空格?TEXT(A2,"000000") 的结果还能直接参与求和吗?FIND 区分大小写、不支持通配符;SEARCH 不区分大小写并支持 *、?。CHAR(160),TRIM 只处理普通空格;要先用 SUBSTITUTE 替换。TEXT 返回文本;需要计算时保留原数值,另设展示列。
小程序版
微信扫码,随时查命令