SEARCH 函数¶
一、函数概述¶
SEARCH 用于在一段文本中查找指定字符/子串第一次出现的位置,并返回其起始字符序号(从 1 开始计数)。
它最常见的用途是:定位关键字位置、判断是否包含某段文字、配合 MID/LEFT/RIGHT 做文本拆分与提取。
SEARCH 的几个重要特性:
- 不区分大小写:例如查找
"abc"与"ABC"结果相同。 - 支持通配符:可使用
*、?进行模式匹配(需要时可配合~转义)。 - 可指定从文本的某个位置开始查找(通过第三个参数)。
二、基础语法¶
三、参数说明¶
1)find_text(必填)¶
要查找的文本(字符或子串)。
可以是文本常量(如 "@"、"上海"),也可以引用单元格(如 E2)。
2)within_text(必填)¶
被查找的文本范围,即“在什么文本里找”。
通常是一个单元格引用(如 A2),也可以是公式拼接后的文本表达式。
3)start_num(可选)¶
从 within_text 的第几个字符开始查找。
- 省略时,默认从第 1 个字符开始
- 常用于:跳过前面的内容、查找第二段结构、或在多次查找中做递进定位
四、基础用法示范¶
下面示例假设你正在处理文本数据(邮箱、网址、产品名称等)。你可以直接替换为自己的单元格引用。
示例 1:查找某个字符第一次出现的位置¶
需求:在文本中找到 @ 的位置(常用于邮箱拆分)。
假设 A2 为:tom@example.com
返回值为 @ 在文本中的序号,例如返回 4(表示第 4 个字符是 @)。
示例 2:从指定位置开始查找¶
需求:从第 6 个字符开始查找 -(跳过前缀)。
假设 A2 为:CN-2026-001
这会从第 6 个字符起向后找 -,通常用于定位第二个分隔符位置。
示例 3:判断文本是否包含某关键字¶
需求:判断 A2 是否包含 “退款”。
SEARCH 找得到会返回位置,找不到会报错。实际判断时通常用 ISNUMBER 将结果转成 TRUE/FALSE。
- 返回
TRUE:包含“退款” - 返回
FALSE:不包含“退款”
这个写法非常适合做筛选辅助列、分类标签、条件格式判断等。
示例 4:提取邮箱的用户名部分¶
需求:从 tom@example.com 提取 tom。
逻辑:@ 之前的内容 = 从左侧截取 @ 前一位。
示例 5:提取邮箱的域名部分¶
需求:从 tom@example.com 提取 example.com。
逻辑:从 @ 后一位开始取到末尾。
说明:这里的 999 代表“取足够长”,Excel 会自动按实际长度返回。
示例 6:按分隔符拆分“姓名-部门-工号”¶
假设 A2 为:张三-销售部-00123
需求:提取部门(中间一段)。 思路:
- 找到第一个
-的位置p1 - 从
p1+1开始找第二个-的位置p2 - 部门长度 =
p2 - p1 - 1 - 用
MID截取
示例 7:使用通配符进行模式查找(* 和 ?)¶
假设 A2 为:订单号: AB-2026-XYZ
需求:定位是否存在形如 AB- 的前缀片段(中间内容不固定)。
* 表示任意长度任意字符。
当文本中出现以 AB- 开头、后面跟任意内容的片段时,返回 TRUE。
五、总结¶
SEARCH的核心作用是:返回子串在文本中的位置(从 1 开始)。- 它的优势在于:不区分大小写、支持
*和?通配符、还能用start_num控制查找起点。 -
真实业务中最常见的组合:
SEARCH+LEFT/RIGHT/MID:拆分邮箱、编码、地址、规则字段ISNUMBER(SEARCH(...)):判断是否包含关键字,用于分类、筛选、条件格式- 多次
SEARCH:定位多个分隔符,实现提取“中间段/第 N 段”文本
只要你掌握“定位位置”和“用位置驱动提取”这两件事,SEARCH 就能覆盖绝大多数文本处理需求。