查找单元格中格式化字符的位置(Microsoft Excel)
加里(Gary)有一个工作表,其中包含他需要解析为组件元素的非结构化文本字符串。有时他需要搜索文本类型而不是特定字符。例如,他可能想查找单元格中任何粗体字符(或任何斜体字符)的第一个,第N个或最后一个出现。
Excel中没有内部功能或工具可以完成此任务。
常规的“查找和替换”功能会返回用于格式化的匹配项,但不会返回这些匹配项发生的位置。要具体说明您要查找的内容,您需要使用宏。如果将宏实现为用户定义的函数,则可以将定位信息重新返回到工作表中。
下面的宏接受一个范围(打算是一个特定的单元格),指示您是否要使用粗体或斜体(或两者)的指示符,以及该格式的出现。
Function FindNth(r As Range, sType As String, N As Integer) As Integer Dim J As Integer Dim iCount As Integer Dim sStyle As String If r.Count = 1 Then FindNth = 0 iCount = 0 For J = 1 To Len(r.Text) sStyle = r.Characters(J, 1).Font.FontStyle If LCase(sStyle) = LCase(sType) Then iCount = iCount + 1 If N = 0 Then FindNth = J Else If N = iCount Then FindNth = J Exit For End If End If End If Next J Else FindNth = -1 End If End Function
为了使用该宏,请在工作表中使用以下公式之一:
=FindNth(A1, "bold", 2) =FindNth(A1, "italic", 3) =FindNth(A1, "bold italic", 1)
在每种情况下,第三个参数都指定了要查找的给定格式出现的位置。该函数返回该事件在单元格中的字符位置。如果没有这种情况,则返回0。如果在函数的第一个参数中指定多个单元格,则它将返回-1。如果指定出现的次数为0,则返回指定格式的最后一次出现的字符位置。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本提示(13402)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。