查找字符的第N次出现(Microsoft Excel)
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 Application.Volatile 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培训的来源。
本技巧(3324)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: