跳转至

SEARCH 函数

一、函数概述

SEARCH 用于在一段文本中查找指定字符/子串第一次出现的位置,并返回其起始字符序号(从 1 开始计数)。 它最常见的用途是:定位关键字位置、判断是否包含某段文字、配合 MID/LEFT/RIGHT 做文本拆分与提取。

SEARCH 的几个重要特性:

  • 不区分大小写:例如查找 "abc""ABC" 结果相同。
  • 支持通配符:可使用 *? 进行模式匹配(需要时可配合 ~ 转义)。
  • 可指定从文本的某个位置开始查找(通过第三个参数)。

二、基础语法

SEARCH(find_text, within_text, [start_num])

三、参数说明

1)find_text(必填)

要查找的文本(字符或子串)。 可以是文本常量(如 "@""上海"),也可以引用单元格(如 E2)。

2)within_text(必填)

被查找的文本范围,即“在什么文本里找”。 通常是一个单元格引用(如 A2),也可以是公式拼接后的文本表达式。

3)start_num(可选)

within_text 的第几个字符开始查找。

  • 省略时,默认从第 1 个字符开始
  • 常用于:跳过前面的内容、查找第二段结构、或在多次查找中做递进定位

四、基础用法示范

下面示例假设你正在处理文本数据(邮箱、网址、产品名称等)。你可以直接替换为自己的单元格引用。

示例 1:查找某个字符第一次出现的位置

需求:在文本中找到 @ 的位置(常用于邮箱拆分)。 假设 A2 为:tom@example.com

=SEARCH("@", A2)

返回值为 @ 在文本中的序号,例如返回 4(表示第 4 个字符是 @)。


示例 2:从指定位置开始查找

需求:从第 6 个字符开始查找 -(跳过前缀)。 假设 A2 为:CN-2026-001

=SEARCH("-", A2, 6)

这会从第 6 个字符起向后找 -,通常用于定位第二个分隔符位置。


示例 3:判断文本是否包含某关键字

需求:判断 A2 是否包含 “退款”。 SEARCH 找得到会返回位置,找不到会报错。实际判断时通常用 ISNUMBER 将结果转成 TRUE/FALSE。

=ISNUMBER(SEARCH("退款", A2))
  • 返回 TRUE:包含“退款”
  • 返回 FALSE:不包含“退款”

这个写法非常适合做筛选辅助列、分类标签、条件格式判断等。


示例 4:提取邮箱的用户名部分

需求:从 tom@example.com 提取 tom。 逻辑:@ 之前的内容 = 从左侧截取 @ 前一位。

=LEFT(A2, SEARCH("@", A2) - 1)

示例 5:提取邮箱的域名部分

需求:从 tom@example.com 提取 example.com。 逻辑:从 @ 后一位开始取到末尾。

=MID(A2, SEARCH("@", A2) + 1, 999)

说明:这里的 999 代表“取足够长”,Excel 会自动按实际长度返回。


示例 6:按分隔符拆分“姓名-部门-工号”

假设 A2 为:张三-销售部-00123

需求:提取部门(中间一段)。 思路:

  1. 找到第一个 - 的位置 p1
  2. p1+1 开始找第二个 - 的位置 p2
  3. 部门长度 = p2 - p1 - 1
  4. MID 截取
1
2
3
4
5
=MID(
  A2,
  SEARCH("-", A2) + 1,
  SEARCH("-", A2, SEARCH("-", A2) + 1) - SEARCH("-", A2) - 1
)

示例 7:使用通配符进行模式查找(* 和 ?)

假设 A2 为:订单号: AB-2026-XYZ

需求:定位是否存在形如 AB- 的前缀片段(中间内容不固定)。 * 表示任意长度任意字符。

=ISNUMBER(SEARCH("AB-*", A2))

当文本中出现以 AB- 开头、后面跟任意内容的片段时,返回 TRUE。


五、总结

  • SEARCH 的核心作用是:返回子串在文本中的位置(从 1 开始)。
  • 它的优势在于:不区分大小写、支持 *? 通配符、还能用 start_num 控制查找起点。
  • 真实业务中最常见的组合:

    • SEARCH + LEFT/RIGHT/MID:拆分邮箱、编码、地址、规则字段
    • ISNUMBER(SEARCH(...)):判断是否包含关键字,用于分类、筛选、条件格式
    • 多次 SEARCH:定位多个分隔符,实现提取“中间段/第 N 段”文本

只要你掌握“定位位置”和“用位置驱动提取”这两件事,SEARCH 就能覆盖绝大多数文本处理需求。