Excel FIND函数查找第二个相同字符位置

讲清怎样用FIND函数的起始位置参数(start_num)找到第二个、第三个相同字符的位置,并给出提取中间内容、核对结果的做法,适合处理编号、日期和路径类数据。

在 Excel 里处理编号、日期、路径这类数据时,经常需要知道某个符号在第几位,比如 2024-03-15 里的第二个短横线在第几个字符。很多人用 FIND 函数只能找到第一个,于是不知道怎么继续往后找。这篇文章专门讲 excel find 函数找到第二个相同字符的做法,也包括找第三个、取中间内容,以及结果出错时怎么排查。

读完你能做到三件事:用一条公式定位第二个相同字符,知道什么时候该嵌套、什么时候该换思路,并且会检查结果是否可靠。文中的例子都可以自己复现,把它们输入一个空白表格即可对照。如果你希望在 OmniDoc 桌面客户端里的 UniCell 表格中试算,同样的公式也可以放进去运行。

Excel FIND 函数怎么找到第二个相同字符?一句话结论

FIND 的基本写法是 FIND(要找的字符, 被查找的文本, [起始位置])。它默认从第 1 个字符开始向后找,只返回第一次出现的位置。要找第二个,关键是把第一个位置加 1 当作起始位置,让查找从它的下一个字符开始。

一句话结论:用 =FIND("-",A1,FIND("-",A1)+1) 即可得到第二个短横线的位置,外层 FIND 的第三个参数就是 start_num。

你的情况推荐做法原因
只要第一个相同字符的位置=FIND("-",A1)默认从第 1 位开始查找,直接返回第一次出现的位置
要第二个相同字符的位置=FIND("-",A1,FIND("-",A1)+1)把第一个位置加 1 作为起始位置,跳过第一个字符
要第三个相同字符的位置在上一层外再嵌套一层 FIND每多找一个,就把上一层结果加 1 作为新的起始位置
要第几个不固定,或层数很多用 LEN 与 SUBSTITUTE 计算,或用辅助列逐级记录嵌套层数太多时公式难读也难改,分列记录更直观
不区分大小写地查找字母改用 SEARCH 函数FIND 区分大小写,并且不支持通配符

开始之前:先确认这几点

动手写公式前,先确认下面几件事,否则结果很容易不对,而且不容易一眼看出原因。

  • 确认字符确实出现了足够多次。如果 A1 里只有一个短横线,找第二个时就会返回错误值,这是正常结果,不是公式写错了。
  • 注意 FIND 区分大小写。FIND("a","Apple") 会返回错误,因为原文是大写 A。字母类查找要先确定大小写是否一致。
  • 不要把数字当成文本直接比较。如果单元格里的数字是由其他系统导出的,它的显示和实际内容可能不同,建议先用 LEN 看一下字符数是否与你看到的一致。
  • 起始位置不能超过文本长度。start_num 大于文本长度时同样返回错误,所以公式里写的起始位置要基于原始文本来算。
  • 确认使用的是半角符号。中文输入法下输入的短横线或逗号是全角字符,FIND 会把它当作另一个字符,找不到就会报错。

用 FIND 找第二个短横线并截取中间内容的步骤

下面以 A1 中的 2024-03-15 为例,按步骤找到第二个短横线,并取出中间的月份 03。

  1. 在一个空白表格的 A1 输入 2024-03-15,作为练习数据。
  2. 在 B1 输入 =FIND("-",A1),按回车,结果应为 5,表示第一个短横线在第 5 位。
  3. 在 C1 输入 =FIND("-",A1,B1+1),按回车,结果应为 8,表示第二个短横线在第 8 位。这里起始位置引用了 B1 的结果并加 1。
  4. 如果想直接写成一条公式,可以在 D1 输入 =FIND("-",A1,FIND("-",A1)+1),结果同样是 8,适合不想设辅助列的情况。
  5. 要取出两个短横线之间的月份,在 E1 输入 =MID(A1,FIND("-",A1)+1,FIND("-",A1,FIND("-",A1)+1)-FIND("-",A1)-1),结果为 03。
  6. 检查 E1 的结果是否是文本格式。如果希望保留前导零,就保持文本格式;如果要参与计算,再用 VALUE 转换。
  7. 找第三个短横线时,在外层再包一层:把 FIND("-",A1,FIND("-",A1)+1) 整体作为新的起始位置,并加 1。这里的结果应为错误值,因为 2024-03-15 只有两个短横线。
  8. 把练习数据换成你的真实数据,先用两三条样本核对,再整列向下填充。

做完后逐项核对

公式算出结果后,建议逐项检查,尤其是批量填充的情况。

检查项怎么看有问题怎么办
位置数字是否合理位置应小于或等于文本长度,可以用 LEN 核对如果明显偏大,检查是否把不同单元格的引用混在一起
错误值是否集中出现找不到字符时显示#VALUE!,看它是否集中在某几行对照这些行的原始文本,看是否缺少该字符,或字符是全角
数量是否与预期一致用=LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))数出字符出现的次数次数不一致时,先确认 SUBSTITUTE 的查找字符与 FIND 一致
截取的内容是否完整对比 MID 的结果与原文,确认前后没有多余字符检查截取长度的计算,减一是否漏掉或多减
大小写是否影响结果随机抽查带字母的行需要忽略大小写时改用 SEARCH,并重新核对

📊 核心对比

找字符位置时,常会在 FIND 和 SEARCH 之间犹豫,两者的主要差别如下。

对比项FINDSEARCH
大小写区分大小写不区分大小写
通配符不支持支持问号和星号
适合场景固定格式的编号、代码等精确匹配英文单词或文本不规范的数据
返回值返回字符位置数字返回字符位置数字
找不到时返回错误值返回错误值

两者都从起始位置向后查找,因此第二个相同字符的写法基本一致,只需按数据情况选择其中一个。

❓ 常见问题(FAQ)

1. FIND 能一次返回所有相同字符的位置吗?

不能。FIND 每次只返回一个位置,要得到全部位置,需要逐个嵌套或用辅助列分别记录第一个、第二个、第三个。字符出现次数不多时,嵌套写法已经够用。

2. 找到第二个后,怎么取出它后面的内容?

把找到的位置作为 MID 或 RIGHT 的起始位置即可。例如要取第二个短横线后面的日期,可以用 =RIGHT(A1,LEN(A1)-FIND("-",A1,FIND("-",A1)+1)),结果为 15。

3. 公式结果显示#VALUE!,是什么原因?

常见原因有三个:要找的字符在文本中不存在、起始位置大于文本长度,或符号是全角而不是半角。先用 LEN 检查文本长度,再确认字符是否真的在原文中。

4. 字符出现次数不固定,怎样统一处理?

先用 LEN 减去 SUBSTITUTE 后的长度算出出现次数,再根据次数决定要找第几个。如果次数差异很大,建议改用辅助列逐级记录位置,比一层层嵌套更容易检查。

📝 总结

在 Excel 中,FIND 函数的第三个参数 start_num 是找第二个、第三个相同字符的关键,把上一个位置加 1 作为起始位置即可。动手前先确认字符是否存在、是否区分大小写,结果出来后用样本数据逐项核对。掌握这些,excel find 函数找到第二个的问题基本就能解决。

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

更新于 2026-11-04