Excel 365 新函数 TEXTBEFORE / TEXTAFTER 完全指南 — 文本提取利器
Excel 365 新函数 TEXTBEFORE / TEXTAFTER 完全指南 — 文本提取利器
提取文本中某个字符前后的内容,以前靠 LEFT/RIGHT/MID/FIND 绕来绕去,现在一行搞定。
一、这两个函数是什么
TEXTBEFORE — 返回文本中指定分隔符之前的内容 TEXTAFTER — 返回文本中指定分隔符之后的内容
=TEXTBEFORE(文本,分隔符,[第几个],[是否区分大小写],[是否找不到时返回原文],[匹配模式])=TEXTAFTER(文本,分隔符,[第几个],[是否区分大小写],[是否找不到时返回原文],[匹配模式])
二、适用版本
|
|
|
|---|---|
|
|
Excel 365
|
|
|
|
⚠️ Excel 2019 及以下版本不支持这两个函数。
三、基础用法
提取邮箱 @ 前的用户名
=TEXTBEFORE("zhangsan@163.com","@")→ 结果: zhangsan
提取邮箱 @ 后的域名
=TEXTAFTER("zhangsan@163.com","@")→ 结果: 163.com
提取文件路径中的文件名
=TEXTAFTER("C:\Users\张三\Documents\report.xlsx","\",-1)→ 结果: report.xlsx
-1表示从最后一个反斜杠后面提取。
四、15 个实战场景
场景 1:提取姓名(逗号前)
=TEXTBEFORE("张三,北京,销售部",",")→ 结果: 张三
场景 2:提取城市(逗号中间)
=TEXTBEFORE("张三,北京,销售部",",",2)→ 结果: 北京
第2个= 找第2个逗号前面的内容,即”北京”。
场景 3:提取最后一个部门(逗号后)
=TEXTAFTER("张三,北京,销售部",",",-1)→ 结果: 销售部
-1= 从最后一个逗号后面提取。
场景 4:从文件路径提取文件名
=TEXTAFTER("C:\Users\张三\Documents\report.xlsx","\",-1)→ 结果: report.xlsx
场景 5:从文件路径提取盘符
=TEXTBEFORE("C:\Users\张三\Documents\report.xlsx","\")→ 结果: C:
场景 6:从 URL 提取域名
=TEXTBEFORE("https://www.example.com/page", "://",1)=TEXTAFTER("https://www.example.com/page", "://",1)→ 域名前缀: https→ 域名: www.example.com/page
场景 7:提取手机号后4位
配合 TEXTAFTER 和 LEN:
=RIGHT("13812345678",4)或=TEXTAFTER("13812345678",RIGHT("13812345678",4),-1)→ 结果: 5678
场景 8:提取括号内的内容
=TEXTAFTER("订单号(ORDER123)","(")→ 结果: ORDER123)需配合 TEXTBEFORE 去尾:=TRIM(TEXTBEFORE(TEXTAFTER("订单号(ORDER123)","("),")"))→ 结果: ORDER123
场景 9:按第 N 个分隔符提取
=TEXTBEFORE("A-B-C-D-E","-",3)→ 结果: A-B-C=TEXTAFTER("A-B-C-D-E","-",3)→ 结果: C-D-E
场景 10:提取第一个和最后一个
=TRIM(TEXTBEFORE("产品-A-红色-大","-",-1))→ 结果: 大 (最后一个)=TRIM(TEXTBEFORE("产品-A-红色-大","-",1))→ 结果: 产品 (第一个)
场景 11:多级提取(嵌套)
原始: "sales@company.com.cn"提取公司名: =TEXTBEFORE(TEXTAFTER("sales@company.com.cn","@"),".")→ 结果: company
场景 12:与 FILTER 组合筛选
=FILTER(A:B,TEXTBEFORE(B:B,"@") = "zhangsan")
筛选出邮箱用户名是 zhangsan 的所有行。
场景 13:与 IFERROR 组合处理无分隔符情况
=IFERROR(TEXTBEFORE(A1,","), A1)
找不到逗号时,返回原文而不是错误。
场景 14:提取日期部分
原始: "会议-2024-03-15-北京"提取日期: =TEXTBEFORE(TEXTAFTER("会议-2024-03-15-北京","-"),"-",2)→ 结果: 2024-03-15
场景 15:提取金额中的数字部分
原始: "订单金额: ¥12,345.00 元"提取数字: =TRIM(TEXTAFTER("订单金额: ¥12,345.00 元", "¥"))→ 结果: 12,345.00 元 (再配合 SUBSTITUTE 去非数字)
五、关键参数详解
|
|
|
|
|---|---|---|
instance_num |
|
1
2 = 第二个,-1 = 最后一个 |
match_mode |
|
0
1 = 不区分 |
match_end |
|
TRUE
FALSE = 返回错误 |
if_not_found |
|
|
六、常见错误处理
|
|
|
|
|---|---|---|
#N/A |
|
if_not_found 参数返回原文 |
#VALUE! |
|
|
|
|
|
=IFERROR(..., 原文) 兜底 |
七、版本说明
TEXTBEFORE 和 TEXTAFTER 仅在 Excel 365(订阅版)和 Excel 2021 中可用。
Excel 2019 及以下版本不支持。
八、核心公式速查
|
|
|
|---|---|
|
|
=TEXTBEFORE(文本, 分隔符) |
|
|
=TEXTAFTER(文本, 分隔符) |
|
|
=TEXTBEFORE(文本, 分隔符, -1) |
|
|
=TEXTAFTER(文本, 分隔符, -1) |
|
|
=TEXTBEFORE(文本, 分隔符, N) |
|
|
=TEXTAFTER(文本, 分隔符, N) |
|
|
=TEXTBEFORE(文本, 分隔符, , 1) |
|
|
=IFERROR(TEXTBEFORE(文本, 分隔符), 文本) |
总结: TEXTBEFORE 和 TEXTAFTER 是处理文本提取的利器。分隔符可以是任意字符(逗号、空格、@、\ 等),配合第 N 个参数和负数,实现从前、从后、从任意位置精准提取。比传统的 LEFT+RIGHT+MID+FIND 组合简洁得多,而且可读性极强。
如果你觉得这篇有用,欢迎转发给需要的朋友!
夜雨聆风