跳转至

TRIM函数

一、函数概览

1. 函数简介表

函数 语法 功能 返回类型
TRIM() =TRIM(text) 删除文本首尾空格,多个空格变单个 文本
LEFT() =LEFT(text, [num_chars]) 提取文本左侧字符 文本
RIGHT() =RIGHT(text, [num_chars]) 提取文本右侧字符 文本
MID() =MID(text, start_num, num_chars) 提取文本中间字符 文本

2. 重要特性

  • 所有函数都返回文本类型
  • 对中英文、数字、符号都有效
  • 可以嵌套使用
  • 处理中文时,一个汉字算一个字符

二、详细示例数据表

表1:客户信息表(含空格问题)

客户ID 客户姓名 联系电话 地址信息 备注
C001 张 明 138 0013 8001 北京市 海淀区 中关村大街 VIP客户
C002 李 华 139-1234-5678 上海市 浦东新区陆家嘴 新客户
C003 王 芳 (010)87654321 广州市 天河区 体育西路 长期合作
C004 赵 强 13755556666 深圳市南山区科技园 紧急订单
C005 孙 丽 1367890 1234 成都市 锦江区 春熙路

表2:产品编码解析表

原始编码 产品名称 完整描述
IPHONE-15-PRO-MAX-256-BLACK iPhone 15 Pro Max Apple iPhone 15 Pro Max 256GB 黑色
HW-P60-PRO-512-GREEN 华为P60 Pro 华为P60 Pro 5G 手机 512GB 翡冷翠
MB-AIR-M2-2023-GOLD MacBook Air Apple MacBook Air M2 2023款 金色
MI-13-ULTRA-256-BLUE 小米13 Ultra 小米13 Ultra 徕卡影像 256GB 蓝色
SN-WH1000XM5-BLACK 索尼耳机 Sony WH-1000XM5 无线降噪耳机 黑色

表3:身份证信息表

姓名 身份证号 出生日期 性别 户籍地址
张三 110101199003075678 1990-03-07 北京市东城区
李四 310104199105128912 1991-05-12 上海市徐汇区
王五 440305199208153456 1992-08-15 广州市福田区
赵六 330106198512204321 1985-12-20 杭州市西湖区
孙七 420111199510087890 1995-10-08 武汉市江汉区

表4:员工工号解析表

工号 姓名 部门代码 入职年份 序列号
IT2023001 张明 IT 2023 001
SALES2022125 李华 SALES 2022 125
HR2021010 王芳 HR 2021 010
FIN2020056 赵强 FIN 2020 056
MKT2023111 孙丽 MKT 2023 111

三、TRIM() 函数详解

1. 基础用法

=TRIM("  Hello  World  ")      // 返回:"Hello World"
=TRIM(" Excel 2024 ")          // 返回:"Excel 2024"
=TRIM("A  B  C")               // 返回:"A B C"
=TRIM(CHAR(160))               // 删除不间断空格(ASCII 160)

2. 实际应用示例

示例1:清洗客户姓名空格

在表1的F列(清洗后姓名):
=TRIM(B2)

结果:
"  张 明  " → "张 明"  // 保留姓名中间必要空格
"李 华   " → "李 华"
"  王  芳  " → "王 芳"

示例2:标准化联系电话

在表1的G列(清洗后电话):
=TRIM(C2)

结果:
"138 0013 8001" → "138 0013 8001"  // 中间空格保留
"139-1234-5678" → "139-1234-5678"  // 无变化
"(010)87654321" → "(010)87654321"  // 无变化

示例3:处理备注信息

在表1的H列(清洗后备注):
=TRIM(E2)

结果:
"VIP客户" → "VIP客户"
"新客户" → "新客户"
"   长期合作   " → "长期合作"
""(空字符串) → ""(空字符串)

3. 特殊空格处理

常规空格(ASCII 32):TRIM可以清除
不间断空格(ASCII 160):TRIM可以清除
制表符等:TRIM无法清除,需用CLEAN或SUBSTITUTE

组合使用:
=TRIM(CLEAN(A2))  // 删除不可打印字符和空格
=TRIM(SUBSTITUTE(A2, CHAR(9), " "))  // 替换制表符为空格

四、LEFT() 函数详解

1. 基础用法

=LEFT("Hello World", 5)        // 返回:"Hello"
=LEFT("Excel2024", 5)          // 返回:"Excel"
=LEFT("你好世界", 2)           // 返回:"你好"
=LEFT(A2, 3)                   // 返回A2前3个字符
=LEFT(A2)                      // 省略参数,默认返回第1个字符

2. 实际应用示例

示例1:提取产品品牌

在表2的D列(品牌):
=LEFT(A2, FIND("-", A2)-1)

结果:
"IPHONE-15-PRO-MAX-256-BLACK" → "IPHONE"
"HW-P60-PRO-512-GREEN" → "HW"
"MB-AIR-M2-2023-GOLD" → "MB"

示例2:提取员工部门

在表4的F列(提取部门):
=LEFT(A2, FIND("202", A2)-1)

结果:
"IT2023001" → "IT"
"SALES2022125" → "SALES"
"HR2021010" → "HR"

示例3:提取姓名姓氏

假设中文姓名2-3个字:

在表1的I列(姓氏):
=LEFT(TRIM(B2), 1)

结果:
"张 明" → "张"
"李 华" → "李"
"王 芳" → "王"

3. 动态长度提取

提取到第一个空格前:
=LEFT(A2, FIND(" ", A2 & " ")-1)

安全提取(避免错误):
=IFERROR(LEFT(A2, FIND("-", A2)-1), A2)

1. 基础用法

=RIGHT("Hello World", 5)       // 返回:"World"
=RIGHT("Excel2024", 4)         // 返回:"2024"
=RIGHT("你好世界", 2)          // 返回:"世界"
=RIGHT(A2, 3)                  // 返回A2后3个字符
=RIGHT(A2)                     // 省略参数,默认返回第1个字符

2. 实际应用示例

示例1:提取文件扩展名

假设A2="report_2024.xlsx"
=RIGHT(A2, LEN(A2) - FIND(".", A2))

结果:"report_2024.xlsx" → ".xlsx"

更精确:
=MID(A2, FIND(".", A2), 255)

示例2:提取手机尾号

在表1的J列(手机尾号):
=RIGHT(TRIM(C2), 4)

结果:
"138 0013 8001" → "8001"
"139-1234-5678" → "5678"
"13755556666" → "6666"

示例3:提取产品颜色

在表2的E列(颜色):
=TRIM(RIGHT(A2, LEN(A2) - FIND("-BLACK", A2) + 1))

但更好的方法(最后一个"-"后的内容):
=TRIM(RIGHT(SUBSTITUTE(A2, "-", REPT(" ", 100)), 100))

结果:
"IPHONE-15-PRO-MAX-256-BLACK" → "BLACK"
"HW-P60-PRO-512-GREEN" → "GREEN"

3. 结合LEN使用

提取最后N个字符(忽略某些字符):
=RIGHT(A2, LEN(A2) - 3)  // 去掉前3个字符
=RIGHT(A2, LEN(A2) - FIND(":", A2))  // 去掉冒号前的内容

六、MID() 函数详解

1. 基础用法

=MID("Hello World", 7, 5)      // 返回:"World"
=MID("Excel2024", 6, 4)        // 返回:"2024"
=MID("你好世界", 3, 2)         // 返回:"世界"
=MID(A2, 4, 3)                 // 从A2第4个字符开始取3个
=MID(A2, 2, 100)               // 取从第2个字符开始的所有字符

2. 实际应用示例

示例1:提取身份证出生日期

在表3的C列(提取出生日期):
=MID(B2, 7, 8)

结果:
"110101199003075678" → "19900307"

格式化为日期:
=DATE(--MID(B2, 7, 4), --MID(B2, 11, 2), --MID(B2, 13, 2))

示例2:提取产品容量

在表2的F列(容量):
=MID(A2, FIND("-256-", A2) + 1, 3)  // 找"-256-"模式

但更通用:
=MID(A2, 
     FIND("-", A2, FIND("-", A2, FIND("-", A2) + 1) + 1) + 1,
     FIND("-", A2, FIND("-", A2, FIND("-", A2, FIND("-", A2) + 1) + 1) + 1) -
     FIND("-", A2, FIND("-", A2, FIND("-", A2) + 1) + 1) - 1)

简化:假设容量在第4段
=TRIM(MID(SUBSTITUTE(A2, "-", REPT(" ", 100)), 400, 100))

示例3:提取员工入职年份

在表4的G列(入职年份):
=MID(A2, LEN(F2) + 1, 4)  // F2是部门代码

或者:
=MID(A2, FIND("202", A2), 4)

结果:
"IT2023001" → "2023"
"SALES2022125" → "2022"

3. 复杂提取技巧

提取两个分隔符之间的内容:
=MID(A2, 
     FIND("【", A2) + 1,
     FIND("】", A2) - FIND("【", A2) - 1)

七、函数组合应用

组合1:完整姓名拆分

数据:A2="张 明"
姓氏:=LEFT(A2, 1)                   // 张
名字:=TRIM(MID(A2, 2, 100))        // 明

数据:A2="欧阳 明日"
姓氏:=LEFT(A2, FIND(" ", A2)-1)    // 欧阳
名字:=TRIM(MID(A2, FIND(" ", A2)+1, 100))  // 明日

组合2:标准化产品编码

原始:A2="  iphone-15-pro-max  "
标准化:
=UPPER(TRIM(A2))                    // IPHONE-15-PRO-MAX

提取型号:
=MID(TRIM(A2), FIND("-", TRIM(A2))+1, 2)  // 15

组合3:智能提取地址

数据:A2="北京市海淀区中关村大街1号"
提取省市:
=LEFT(A2, FIND("市", A2))           // 北京市
提取区:
=MID(A2, FIND("市", A2)+1, FIND("区", A2)-FIND("市", A2))  // 海淀区

组合4:解析复杂字符串

数据:A2="订单号:ORD20240102001,金额:¥1,580.00"
提取订单号:
=MID(A2, FIND(":", A2)+1, FIND(",", A2)-FIND(":", A2)-1)  // ORD20240102001
提取金额:
=--TRIM(MID(A2, FIND("¥", A2)+1, 100))  // 1580

八、实际工作场景应用

场景1:数据清洗标准化流程

案例:清洗客户数据库

原始数据在A列(混乱的客户信息)

清洗步骤:
1. B列:去空格 =TRIM(A2)
2. C列:提取姓名 =TRIM(LEFT(B2, FIND(" ", B2 & " ")))
3. D列:提取电话 =TRIM(MID(B2, LEN(C2)+1, 11))
4. E列:标准化电话 =SUBSTITUTE(D2, " ", "")
5. F列:验证格式 =IF(LEN(E2)=11, "有效", "无效")

场景2:产品编码解析系统

案例:解析SKU编码

编码规则:品牌-型号-颜色-尺寸-批次

A2="NIKE-AJ1-RED-42-202312"
解析:
品牌:=LEFT(A2, FIND("-", A2)-1)               // NIKE
型号:=MID(A2, FIND("-", A2)+1, 
           FIND("-", A2, FIND("-", A2)+1)-FIND("-", A2)-1)  // AJ1
颜色:=MID(A2, 
           FIND("-", A2, FIND("-", A2, FIND("-", A2)+1)+1)+1,
           FIND("-", A2, FIND("-", A2, FIND("-", A2, FIND("-", A2)+1)+1)+1)-
           FIND("-", A2, FIND("-", A2, FIND("-", A2)+1)+1)-1)  // RED

场景3:身份证信息提取系统

案例:批量提取身份证信息

A列:身份证号
提取信息:
出生日期:=TEXT(DATE(--MID(A2,7,4),--MID(A2,11,2),--MID(A2,13,2)), "yyyy年mm月dd日")
性别:=IF(MOD(--MID(A2,17,1),2)=1, "男", "女")
年龄:=DATEDIF(DATE(--MID(A2,7,4),--MID(A2,11,2),--MID(A2,13,2)), TODAY(), "Y")
籍贯:=VLOOKUP(LEFT(A2,6), 行政区划表!A:B, 2, FALSE)

场景4:日志文件分析

案例:解析服务器日志

日志格式:[时间] IP 方法 路径 状态码

A2="[2024-01-02 14:30:45] 192.168.1.1 GET /api/data 200"
提取:
时间:=TRIM(MID(A2, 2, FIND("]", A2)-2))
IP:=TRIM(MID(A2, FIND("]", A2)+1, FIND(" ", A2, FIND("]", A2)+1)-FIND("]", A2)-1))
方法:=TRIM(MID(A2, FIND(" ", A2, FIND("]", A2)+1)+1, 
                FIND(" ", A2, FIND(" ", A2, FIND("]", A2)+1)+1)-
                FIND(" ", A2, FIND("]", A2)+1)-1))

九、常见问题与解决方案

问题1:FIND函数返回错误

现象:=LEFT(A2, FIND("-", A2)-1) 返回#VALUE!
原因:找不到"-"
解决:=IFERROR(LEFT(A2, FIND("-", A2)-1), A2)
或:=LEFT(A2, FIND("-", A2 & "-")-1)

问题2:中英文混合处理

LEN函数:中文和英文都算1个字符
LENB函数:中文算2个字符,英文算1个字符

提取前N个字符(按字节):
=LEFT(A2, LEN(A2)-INT((LENB(A2)-N)/2))

问题3:TRIM无法清除的空格

清除所有空白字符:
=TRIM(CLEAN(SUBSTITUTE(A2, CHAR(160), " ")))

问题4:提取动态长度内容

提取两个特定字符之间的内容:
=MID(A2, 
     FIND("【", A2) + 1,
     IFERROR(FIND("】", A2), LEN(A2)+1) - FIND("【", A2) - 1)

问题5:性能优化

大数据量时避免重复计算:
使用辅助列存储中间结果
避免在数组公式中频繁调用文本函数

十、高级技巧与应用

技巧1:使用REPT函数辅助提取

提取最后一个"-"后的内容:
=TRIM(RIGHT(SUBSTITUTE(A2, "-", REPT(" ", 100)), 100))

提取第N个"-"后的内容(如第3段):
=TRIM(MID(SUBSTITUTE(A2, "-", REPT(" ", 100)), 300, 100))

技巧2:使用LET函数简化复杂公式

=LET(
    text, TRIM(A2),
    dash1, FIND("-", text),
    dash2, FIND("-", text, dash1+1),
    dash3, FIND("-", text, dash2+1),
    品牌, LEFT(text, dash1-1),
    型号, MID(text, dash1+1, dash2-dash1-1),
    颜色, MID(text, dash3+1, 100),
    品牌 & "|" & 型号 & "|" & 颜色
)

技巧3:创建文本解析函数

解析URL:
=LET(
    url, A2,
    protocol, IFERROR(LEFT(url, FIND("://", url)-1), ""),
    domain, IFERROR(MID(url, FIND("://", url)+3, 
                       MIN(IFERROR(FIND("/", url, FIND("://", url)+3), LEN(url)+1),
                           IFERROR(FIND("?", url, FIND("://", url)+3), LEN(url)+1))-
                       (FIND("://", url)+3)), ""),
    protocol & " | " & domain
)

技巧4:正则表达式模拟

提取所有数字:
=TEXTJOIN("", TRUE,
    IFERROR(--MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))
数组公式,按Ctrl+Shift+Enter

技巧5:动态提取表头

从"姓名:张三,年龄:25,城市:北京"提取:
姓名:=TRIM(MID(SUBSTITUTE(SUBSTITUTE(A2, ",", ";"), ":", ":"), 
                FIND("姓名:", SUBSTITUTE(SUBSTITUTE(A2, ",", ";"), ":", ":"))+3,
                FIND(";年龄", SUBSTITUTE(SUBSTITUTE(A2, ",", ";"), ":", ":"))-
                FIND("姓名:", SUBSTITUTE(SUBSTITUTE(A2, ",", ";"), ":", ":"))-3))

十一、综合实战练习

练习1:客户信息完整清洗

原始数据:A2=" 张 明 ,138-0013-8001,北京市海淀区 ,VIP "

要求: 1. 拆分姓名、电话、地址、备注 2. 标准化格式 3. 验证数据有效性

解决方案

B2(清洗后):=TRIM(A2)
C2(姓名):=TRIM(LEFT(B2, FIND(",", B2)-1))
D2(电话):=SUBSTITUTE(TRIM(MID(B2, FIND(",", B2)+1, 
                                 FIND(",", B2, FIND(",", B2)+1)-FIND(",", B2)-1)), "-", "")
E2(地址):=TRIM(MID(B2, FIND(",", B2, FIND(",", B2)+1)+1,
                     FIND(",", B2, FIND(",", B2, FIND(",", B2)+1)+1)-
                     FIND(",", B2, FIND(",", B2)+1)-1))
F2(备注):=TRIM(RIGHT(B2, LEN(B2)-FIND(",", B2, FIND(",", B2, FIND(",", B2)+1)+1)))
G2(电话验证):=IF(AND(LEN(D2)=11, ISNUMBER(--D2)), "有效", "无效")

练习2:生成标准化SKU

要求:从产品描述生成标准SKU

输入:A2="Apple iPhone 15 Pro Max 256GB 黑色" 输出:B2="APPLE-IPHONE-15-PRO-MAX-256GB-BLACK"

公式

=UPPER(SUBSTITUTE(TRIM(A2), " ", "-"))

练习3:智能地址解析

输入:A2="广东省深圳市南山区科技园南区R2栋B座3楼301室" 输出: - 省份:广东省 - 城市:深圳市 - 区:南山区 - 详细地址:科技园南区R2栋B座3楼301室

公式

省份:=LEFT(A2, FIND("省", A2))  // 广东省
城市:=MID(A2, FIND("省", A2)+1, FIND("市", A2)-FIND("省", A2))  // 深圳市
区:=MID(A2, FIND("市", A2)+1, FIND("区", A2)-FIND("市", A2))  // 南山区
详细地址:=TRIM(MID(A2, FIND("区", A2)+1, 100))  // 科技园南区R2栋B座3楼301室


十二、性能优化建议

1. 减少函数嵌套

不好:=TRIM(LEFT(MID(A2, FIND("-", A2)+1, 100), FIND("-", MID(A2, FIND("-", A2)+1, 100))-1))
好:使用辅助列分步计算

2. 使用表格引用

转换区域为表格(Ctrl+T)
使用结构化引用:[@字段名]
便于维护和复制

3. 批量处理原则

使用填充柄复制公式
避免手动逐个输入
对于复杂清洗,考虑使用Power Query

4. 缓存中间结果

计算密集型操作,先存到辅助列
后续公式引用辅助列结果

十三、版本兼容性

函数 Excel 2003 Excel 2007 Excel 2010+ Excel 365
TRIM
LEFT
RIGHT
MID
TEXTJOIN 2019+
LET 365

最佳实践: - 四个基础函数全版本兼容 - 可安全使用 - 复杂需求考虑使用新函数提升效率


十四、总结与记忆技巧

函数对比总结

函数 作用 记忆口诀 适用场景
TRIM() 去空格 两边空格去掉,中间只留一个 数据清洗,用户输入
LEFT() 取左边 从头开始取,要几个给几个 提取代码、前缀、姓氏
RIGHT() 取右边 从尾往前取,倒着数几个 提取扩展名、尾号、后缀
MID() 取中间 指定位置取,灵活又自由 提取身份证日期、中间段

参数记忆

LEFT/RIGHT:先文本,后数量(数量可省)
MID:先文本,再位置,后数量
TRIM:只要文本,干净利落

使用原则

  1. 先清洗,后提取:先用TRIM清理数据
  2. 先验证,后处理:检查数据格式是否一致
  3. 先简单,后复杂:从简单提取开始,逐步增加复杂度
  4. 先手动,后自动:先用简单案例测试,再批量处理

常见错误避免

  1. 忘记处理可能不存在的情况(使用IFERROR)
  2. 忽略中英文差异(注意LEN和LENB)
  3. 硬编码提取位置(使用FIND动态定位)
  4. 忘记TRIM导致空格影响查找

一句话总结

TRIM()是清洁工,LEFT()和RIGHT()是左右护法,MID()是万能钥匙——它们一起组成了Excel文本处理的"神雕侠侣",能帮你解决90%的文本处理问题!