Barry经常发现自己想要识别文本字符串中字符的第N次出现。他知道他可以使用SEARCH和FIND工作表功能来查找初始出现的位置,但是不确定如何在文本字符串中查找字母“ B”的第三个出现位置。

实际上,可以按以下方式使用SEARCH函数查找所需的出现:

=SEARCHB("b",G20,(SEARCHB("b",G20,(SEARCHB("b",G20,1)+1))+1))

注意如何以嵌套方式使用SEARCHB函数。公式指定要搜索的内容(字母“ b”),嵌套级别的数量表示要在单元格中查找的位置。该公式返回所需字符在单元格中的位置。

当然,这种公式的问题在于难以维护,并且如果您想查找第七次出现的情况,很快就会变得不可用。

更加灵活的公式如下:

=FIND(CHAR(1),SUBSTITUTE(A1,"B",CHAR(1),3))

此公式检查A1中的值。它将CHAR(1)代码替换为单元格中第三次出现的“ B”。然后,FIND函数在结果字符串中查找CHAR(1)出现的位置。

如果所需的出现不存在,则该公式将返回#VALUE错误。

如果愿意,可以创建一个用户定义的函数,该函数将查找字符的第N个位置。以下是一个非常简单的宏,它带有三个参数:要搜索的字符串,要匹配的文本以及所需的位置。

Function FindN(sFindWhat As String, _   sInputString As String, N As Integer) As Integer     Dim J As Integer

FindN = 0     For J = 1 To N         FindN = InStr(FindN + 1, sInputString, sFindWhat)

If FindN = 0 Then Exit For     Next End Function

该函数在搜索内容时区分大小写,并返回指定字符串中sFindWhat值出现的位置。如果在指定的实例上没有出现,则该函数返回0。下面显示了如何在工作表中使用该函数:

=FindN("b",C15,3)

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10567)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: