Excel FIND与SEARCH函数用法及#VALUE!错误

讲清Excel中FIND与SEARCH函数的区别:FIND区分大小写、不支持通配符,SEARCH两者都不同。再按先易后难的顺序排查#VALUE!错误,并给出用SEARCH按关键词查找记录的做法。

做 Excel 表格时,很多人第一次用 FIND 函数拆分编号、提取前缀或查找关键词,单元格里却突然出现 #VALUE! 错误。明明觉得表格里确实有那段字,函数却查不到。另一个相近的函数 SEARCH 有时能算出结果,有时又报错,于是怀疑是不是用错了函数。

这篇文章写给经常用 Excel 拆分、提取、筛选文字的人,比如整理客户名单、从订单号里取前缀、按关键词找记录的读者。读完你能分清 FIND 与 SEARCH 的差别,知道 #VALUE! 通常是哪几种原因造成的,并按顺序逐项排除。

查文字该用 FIND 还是 SEARCH?一句话结论

一句话结论:需要严格区分大小写或要找的就是 * 和 ? 本身时用 FIND;不在乎大小写或需要模糊匹配时用 SEARCH。两者的语法相同,都是“要找的文字, 被查找的文字, [起始位置]”。

你的情况推荐做法原因
型号 AB 和 ab 需要区分用 FINDFIND 严格区分大小写
只想知道关键词在不在,不管大小写用 SEARCHSEARCH 不区分大小写
要用 * 或 ? 做模糊匹配用 SEARCHSEARCH 支持通配符,FIND 会把它们当普通字符
要找的正是 * 或 ? 本身用 FIND;或在 SEARCH 中写 ~* 或 ~?通配符在 SEARCH 中有特殊含义,需要转义
只想判断是否包含外层套 ISNUMBER找到返回数字,找不到返回错误,ISNUMBER 转成 TRUE 或 FALSE

先判断是哪一种问题

#VALUE! 只表示函数没有得到有效结果,并不直接告诉你原因。先对照下表,缩小排查范围。

症状常见原因怎么确认
肉眼能看到的文字,FIND 返回 #VALUE!大小写不一致把 FIND 换成 SEARCH 再算一次,能出数字即为大小写问题
结果有了,但提取出的内容多出或少了字符单元格里有不可见空格或全角符号用 LEN 计算字符数,与肉眼看到的字符数对比
查找词来自另一个单元格,始终报错引用的单元格为空,或内容只有空格点开该单元格的编辑栏,看是否真有内容
写了第三个参数后报错起始位置小于 1,或大于文本长度检查 start_num 是否在 1 到文本长度之间
整列下拉时,只有个别行报错这几行确实没有该文字,或原单元格本身是错误值对这几行单独检查原始内容

逐项排查和修复

按下面的顺序排查,前面的步骤更容易做,也能排除大多数情况。

  1. 先检查函数写法。FIND 和 SEARCH 都需要两个必填参数,即要找的文字和被查找的单元格,顺序不能颠倒,比如 =FIND("-",A2) 而不是 =FIND(A2,"-")。
  2. 把 FIND 换成 SEARCH 试一次。如果 SEARCH 能返回数字,说明问题出在大小写。若确实需要区分大小写,就保留 FIND,并在公式里把两边都用 LOWER 或 UPPER 统一,例如 =FIND(LOWER("ab"),LOWER(A2)),这样既不改变原数据,也能正常计算。
  3. 清理隐藏字符。用 LEN 数一下单元格的字符数,和看到的字符数对比。普通空格可以用 TRIM 去掉;从网页或其他系统粘贴来的数据,常含不换行空格,可以用 =SUBSTITUTE(A2,CHAR(160),"") 去掉。全角的逗号、横线等符号也会导致找不到,可用 SUBSTITUTE 替换成半角后再查找。
  4. 检查起始位置。省略第三个参数时,默认从第 1 个字符开始查找。若写了 0、负数,或大于文本长度的数字,都会返回 #VALUE!。
  5. 确认查找词有内容。如果查找词引用了其他单元格,点开确认它不是空白,也没有多余空格。
  6. 最后用 IFERROR 或 ISNUMBER 处理找不到的情况,例如 =IFERROR(FIND("-",A2),"无"),或 =IF(ISNUMBER(SEARCH("退款",A2)),"是","否")。
  7. 找到位置后,再配合 LEFT、MID 取出需要的文字,例如 =LEFT(A2,FIND("-",A2)-1) 可以取出第一个横线之前的内容。

用 SEARCH 在一列中找记录

如果目标是找出包含某个关键词的所有行,可以按下面的方法做,不必逐行查看。

  • 在空白列第 2 行输入 =IF(ISNUMBER(SEARCH("关键词",A2)),"命中","")),然后向下填充。
  • 对这一列使用筛选,只显示“命中”的行,就能看到全部符合条件的记录。
  • 若只需要第一条命中记录的位置,可以用 =MATCH(TRUE,INDEX(ISNUMBER(SEARCH("关键词",A2:A100)),0),0)。返回的是区域内的行序号,而不是工作表的行号;如果返回 #N/A,表示这个区域里没有命中。

怎样避免下次再出现

  • 粘贴数据后先抽查几个单元格的 LEN 结果,确认没有隐藏字符,再开始写公式。
  • 从网页、聊天软件或 PDF 复制的内容,建议先粘贴到纯文本编辑器中去掉格式,再粘贴进 Excel。
  • 同一张表格尽量统一使用一种函数。需要区分大小写时,用 LOWER 或 UPPER 统一处理,避免 FIND 和 SEARCH 混用导致结果不一致。
  • 公式外层加 IFERROR 或 ISNUMBER 时,留出明确的显示内容,比如“未找到”,方便之后筛选检查。
  • 对重要表格,随机选几行手动核对公式结果,尤其是长度不一致或来源复杂的数据。

❓ 常见问题(FAQ)

1. FIND 和 SEARCH 返回的数字是什么意思?

数字表示查找文字在被查找文字中的位置,从 1 开始计数。例如在“AB-123”中找“-”,FIND 返回 3。找不到时两者都返回 #VALUE!。

2. 用 SEARCH 还是报 #VALUE!,是不是函数有问题?

函数本身通常没问题。常见原因是文字确实不存在,或起始位置超出范围,也可能有不可见字符。先用 LEN 检查单元格内容,再核对参数。

3. FIND 能用通配符查找吗?

不能。FIND 会把 * 和 ? 当作普通字符处理。如果需要模糊匹配,应使用 SEARCH。

4. IFERROR 会不会把其他错误也隐藏掉?

会。IFERROR 会覆盖所有错误类型,包括参数写错导致的错误。所以在套用前,应先确认公式本身是正确的,再决定是否用它处理找不到的情况。

📝 总结

FIND 与 SEARCH 的核心区别在于是否区分大小写、是否支持通配符。遇到 Excel FIND 函数返回 #VALUE! 时,先用 SEARCH 对照,再检查隐藏字符和起始位置,最后用 IFERROR 或 ISNUMBER 处理找不到的情况。

打开 OmniDoc,处理你的表格文件

更新于 2026-11-04