ZetCode

Excel FIND 和 SEARCH 函数

最后修改于 2025 年 4 月 4 日

FINDSEARCH 函数是 Excel 中必不可少的文本函数,用于在文本中定位子字符串。虽然它们很相似,但在区分大小写和通配符处理方面有所不同。本教程提供了使用这两个函数的全面指南,并附有详细示例。您将了解它们的语法、区别以及在 Excel 中进行文本处理的实际应用。

FIND/SEARCH 函数基础

FINDSEARCH 函数用于定位文本中子字符串的位置。FIND 区分大小写,而 SEARCH 不区分大小写。两者都返回找到文本的起始位置。

函数 区分大小写 通配符 语法
FIND =FIND(find_text, within_text, [start_num])
SEARCH =SEARCH(find_text, within_text, [start_num])

此表比较了 FINDSEARCH 之间的主要区别。两个函数接受相似的参数,但在区分大小写和支持通配符方面表现不同。

基础 FIND 示例

此示例演示了 FIND 函数在文本中查找子字符串的最简单用法。

基础 FIND 公式
=FIND("n", "Excel")

此公式在“Excel”中搜索“n”。它返回 4,因为“n”是第 4 个字符。FIND 区分大小写,因此搜索“N”将返回错误。

基础 SEARCH 示例

此示例显示了 SEARCH 函数在忽略大小写差异的情况下查找子字符串。

A B
Excel Functions
=SEARCH("fun", A1)

该表显示了 SEARCH 如何在“Excel Functions”中查找“fun”,而不管大小写。与 FIND 不同,SEARCH 也会在相同文本中查找“FUN”或“Fun”。

SEARCH 公式
=SEARCH("fun", A1)

此公式返回 7,因为“fun”从第 7 个字符(包括空格)开始。SEARCH 忽略大小写,使其在许多文本搜索场景中更具灵活性。

带起始位置的 FIND

两个函数都允许指定搜索的起始位置。此示例显示了带起始位置参数的 FIND。

A B
banana
=FIND("a", A1, 4)

该表演示了使用 FIND 的第三个参数从第 4 个字符开始搜索。这会跳过位置 2 的第一个“a”,并找到下一个。

带起始位置的 FIND
=FIND("a", A1, 4)

此公式返回 6,因为它在从位置 4 开始搜索时在位置 6 找到“a”。起始位置对于查找后续匹配很有用。

带通配符的 SEARCH

SEARCH 支持通配符:“?”代表单个字符,“*”代表任何序列。此示例演示了通配符的使用。

A B
Excel 2023
Excel 365
=SEARCH("Excel ?", A1)

该表显示了 SEARCH 使用“?”通配符匹配“Excel ”后面的任何单个字符。这会在版本号中找到空格和后面的数字。

带通配符的 SEARCH
=SEARCH("Excel ?", A1)

此公式返回 1,因为模式从第一个字符开始匹配。“?”通配符匹配任何单个字符(如年份前的空格)。

使用 FIND/SEARCH 处理错误

如果未找到文本,这两个函数都返回 #VALUE!。此示例显示了如何优雅地处理错误。

使用 IFERROR 处理错误
=IFERROR(FIND("z", "Excel"), "Not found")

当“Excel”中不存在“z”时,此公式返回“Not found”而不是错误。将 FIND/SEARCH 包装在 IFERROR 中可以使您的公式对丢失的文本更健壮。

提取字符后的文本

将 FIND/SEARCH 与 MID 或 RIGHT 结合使用,可以提取特定字符后的文本。此示例演示了此技术。

A B
name@example.com
=MID(A1, FIND("@", A1)+1, 100)

该表显示了如何通过查找“@”的位置并获取其后的所有内容来从电子邮件地址中提取域名。100 是一个任意的大数字,用于捕获所有剩余的文本。

从电子邮件中提取域名
=MID(A1, FIND("@", A1)+1, 100)

此公式查找“@”的位置,然后提取其后一个字符开始的文本。结果将是“example.com”。此模式对于解析结构化文本很有用。

查找第二个出现的字符

要查找后续出现的字符,请将 FIND/SEARCH 与前一个位置结合使用。此示例查找文本中的第二个空格。

查找第二个出现的字符
=FIND(" ", A1, FIND(" ", A1)+1)

此公式首先查找第一个空格,然后在其后的位置开始再次搜索以查找第二个空格。该技术可以扩展到查找任何第 n 次出现的字符。

使用 FIND 进行区分大小写的搜索

当大小写很重要时,FIND 至关重要。此示例显示了对专有名词进行区分大小写的搜索。

A B
MacDonald
macdonald
=FIND("Mac", A1)

该表演示了 FIND 的区分大小写。它会在“MacDonald”中找到“Mac”,但在“macdonald”中找不到,而 SEARCH 会同时找到两者。

区分大小写的搜索
=FIND("Mac", A1)

此公式对“MacDonald”返回 1,对“macdonald”返回 #VALUE!。当大小写很重要时,使用 FIND,例如区分姓名中的“Mac”和“mac”。

结合 FIND 与 LEFT/RIGHT/MID

FIND/SEARCH 通常与文本提取函数结合使用。此示例提取括号内的文本。

提取括号内的文本
=MID(A1, FIND("(", A1)+1, FIND(")", A1)-FIND("(", A1)-1)

此公式查找两个括号的位置并提取它们之间的文本。对于“(example)”,它返回“example”。此模式对于解析结构化文本很有用。

查找多个可能值

使用 SEARCH 和数组常量检查多个可能的子字符串。此示例检查常见的文件夹扩展名。

搜索多个值
=IF(SUM(--ISNUMBER(SEARCH({".doc",".xls",".ppt"}, A1))>0, "Office", "Other")

此公式检查 A1 是否包含任何 Office 文件扩展名。SEARCH 返回一个结果数组,ISNUMBER 将它们转换为 TRUE/FALSE 以进行计数。

作者

我叫 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教学编程方面拥有十多年的经验。

列出 所有 Excel 公式