如何在 Microsoft Excel 中使用 SEARCH 函数
手动扫描 Excel 电子表格简直是让人头疼的做法。无论是标记关键字还是验证 ID,SEARCH 函数都是“读取”单元格中文本的最佳工具。以下是如何掌握其语法以及四种实用用法。
Excel 中 SEARCH 函数的工作原理
掌握语法以查找任何文本字符串
SEARCH 函数查找一个字符或单词并返回它的起始位置。
语法
SEARCH 函数有三个参数:
=SEARCH(find_text, within_text, [start_num])
在哪里:
- find_text(必需)是您要查找的文本(用双引号括起来)。如果 Excel 找不到该文本,SEARCH 会返回 #VALUE! 错误。
- within_text (必填)是要搜索的文本字符串(通常是一个单元格)。
- start_num(可选)告诉 Excel 从文本字符串的哪里开始搜索。如果留空,Excel 将从第一个字符开始。只要确保该值不大于文本长度,以避免出现 #VALUE! 错误。
SEARCH 不区分大小写。如果你需要区分大小写的搜索,请改用 FIND 函数。
SEARCH 的优势:为什么不使用更新的函数、Power Query 或 Python?
虽然现代 Excel 工具通常可以完成同样的工作,但对于许多日常任务来说,SEARCH 仍然是首选。原因如下:
- 即时性:SEARCH 是一个“实时”公式。你一完成输入,它就会更新,而其他工具可能需要刷新或执行时间更长。
- 兼容性:如果您将文件分享给使用旧版本 Excel 的用户,像 REGEXTEST 或 TEXTBEFORE 这样的新功能将无法使用。SEARCH 几乎适用于所有版本的 Excel。
- 零设置:你不需要学习第二种编程语言或构建单独的查询。所有操作都直接在你的单元格内使用你已经熟悉的工作流程进行。
为了在阅读时跟随,请下载示例 Excel 工作簿的免费副本。点击链接后,您会在屏幕右上角找到下载按钮,打开文件后,您可以在单独的工作表选项卡上访问每个使用案例。
用例 1:创建逻辑“包含”标志
将混乱的文本转换为简单的真假结果
就其本身而言,像“5”这样的位置信息对于最终报告并不总是有帮助。然而,将 SEARCH 包裹在 ISNUMBER 中可以创建一个强大的“包含”测试,简单地检查关键字是否存在。
场景: 在您的 T_Transactions 表的 Status 列中,您希望将包含“Refund”一词的任何交易标记为“需要操作”。所有其他交易应标记为“已清算”。
在单元格 D2 中,输入以下内容并按 Enter:
=IF(ISNUMBER(SEARCH("Refund", [@Description])), "Action Required", "Cleared")
这是这个公式的工作原理:
- SEARCH("Refund", [@Description]): 这将在当前行的 Description 列中查找单词 "Refund"。如果找到,它会返回一个数字。如果没找到,它会返回一个错误。
- ISNUMBER(...): 这会检查搜索的结果。如果它看到一个数字,则返回 TRUE。如果它看到一个错误,则返回 FALSE。
- IF(...,"需要操作","已清除"): 这是最后一道关卡。如果上一步返回 TRUE,则显示"需要操作"。如果返回 FALSE,则显示"已清除"。
用例 2:掌握带通配符的部分匹配
使用星号和问号进行模式匹配
有时数据输入并不是完全标准化的。你可能在某个序列号的开头有一个特定的ID,但在另一个序列号的中间却隐藏着同样的ID。通过使用星号,你可以桥接两个已知信息之间的间隙,而不管它们之间有多少个字符。
场景: 在您的 T_ProductCodes 表中,您需要识别每一个属于“TS”系列且属于“2026”生产批次的产品,即使它们被不同的城市代码或批次号分隔。
你需要在单元格 D2 中输入以下内容:
=ISNUMBER(SEARCH("TS*2026", [@SerialNumber]))让我们分解这个公式:
- "TS*2026": 星号是一个通配符字符,表示任意数量的字符。这告诉 Excel 查找“TS”,然后跳过任意数量的文本,直到遇到“2026”。
- SEARCH(...): 这会在 SerialNumber 列中搜索特定的模式。无论间隔是两个字符还是 20 个字符,只要两个字符串按顺序出现,搜索就会返回一个数字。
- ISNUMBER(...): 这会将数值位置转换为 TRUE 或 FALSE。
另一个通配符字符是问号 (?),它代表任何单个字符。例如,搜索“202?”将会找到“2024”,但不会找到“20245”。要查找字面上的“?”或“*”,请在其前面直接放置一个波浪号(~)。
用例3:驱动动态条件格式
让你的电子表格行根据数据产生视觉反应
每当特定关键词出现时,您可以使用SEARCH更改整行的颜色。
场景:你希望在 T_ProjectTracker 表中,任何客户名称包含“Acme”的行都变成浅蓝色。
步骤如下:
- 选择您的表格(不包括标题行)。
- 转到 首页 > 条件格式 > 新建规则。
- 点击 使用公式确定要设置格式的单元格。
- 点击格式,将你的填充颜色设置为浅蓝色。
- 在空字段中输入以下公式(确保行号与您选择的第一行匹配),然后点击确定:
=ISNUMBER(SEARCH("Acme", $B2))
这次发生的情况如下:
- $B2:美元符号将搜索“锁定”到B列(客户名称)。
- SEARCH("Acme",...): 这会扫描客户名称中的文本字符串“Acme”。请记住,SEARCH 不区分大小写。
- ISNUMBER(...): 如果找到“Acme”,SEARCH 返回一个数字,ISNUMBER 返回 TRUE,并且蓝色高亮应用到整行。
用例 4:使用位置逻辑验证数据
为复杂规则定位字符的精确坐标。
高级用户经常将 SEARCH 用作卷尺。因为该函数返回一个数值坐标(字符位置),所以你只有在字符出现在单元格的特定位置时才能触发操作。
场景: 您需要对 T_EmployeeData 表中的 DepartmentCode 列的代码进行分类:前五个字符内包含连字符的代码必须被归类为“Legacy”,而连字符出现在更后位置的任何代码都被归类为“Standard”。
这是你需要的公式:
=IF(SEARCH("-", [@DepartmentCode]) <= 5, "Legacy", "Standard")
运作方式如下:
- SEARCH("-", [@DepartmentCode]): 不仅仅是检查连字符是否存在,它还可以找到其确切位置。
- <= 5: 这是在问,"连字符的位置是否小于或等于5?"
- IF(..., "Legacy", "Standard"): 如果连字符出现在第5位或更早的位置,测试为TRUE,该行被标记为“Legacy”。否则,我们得到“Standard”。
如果一个单元格根本不包含连字符,SEARCH 会返回错误,这会导致 IF 语句也返回错误,除非使用 IFERROR 处理。
SEARCH 函数的优点在于,它能将静态的电子表格变成一个反应灵敏的工具,在你发现错误之前就捕捉到它们。现在,为了进一步提高你的清理技能,掌握“定位”特殊功能——这是寻找 SEARCH 可能遗漏的隐藏公式或空白单元格的理想方法。












