乐于分享
好东西不私藏

Excel 365 新函数 TEXTBEFORE / TEXTAFTER 完全指南 — 文本提取利器

Excel 365 新函数 TEXTBEFORE / TEXTAFTER 完全指南 — 文本提取利器

Excel 365 新函数 TEXTBEFORE / TEXTAFTER 完全指南 — 文本提取利器

提取文本中某个字符前后的内容,以前靠 LEFT/RIGHT/MID/FIND 绕来绕去,现在一行搞定。

一、这两个函数是什么

TEXTBEFORE — 返回文本中指定分隔符之前的内容 TEXTAFTER — 返回文本中指定分隔符之后的内容

=TEXTBEFORE(文本,分隔符,[第几个],[是否区分大小写],[是否找不到时返回原文],[匹配模式])=TEXTAFTER(文本,分隔符,[第几个],[是否区分大小写],[是否找不到时返回原文],[匹配模式])

二、适用版本

函数
支持版本
TEXTBEFORE / TEXTAFTER
Excel 365

(2021 及以上)
老版本替代
LEFT + FIND / RIGHT + FIND / MID + FIND

⚠️ 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)
第N个前
=TEXTBEFORE(文本, 分隔符, N)
第N个后
=TEXTAFTER(文本, 分隔符, N)
不区分大小写
=TEXTBEFORE(文本, 分隔符, , 1)
找不到返回原文
=IFERROR(TEXTBEFORE(文本, 分隔符), 文本)

总结: TEXTBEFORE 和 TEXTAFTER 是处理文本提取的利器。分隔符可以是任意字符(逗号、空格、@、\ 等),配合第 N 个参数和负数,实现从前、从后、从任意位置精准提取。比传统的 LEFT+RIGHT+MID+FIND 组合简洁得多,而且可读性极强。

如果你觉得这篇有用,欢迎转发给需要的朋友!