ゲイリーは、コンポーネント要素に解析する必要がある非構造化テキスト文字列を含むワークシートを持っています。特定の文字ではなく、テキストの種類を検索する必要がある場合があります。たとえば、セル内の太字(または斜体)の最初、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)

いずれの場合も、3番目のパラメーターは、特定のフォーマットのどのオカレンスを検索するかを指定します。この関数は、セル内でそのオカレンスの文字位置を返します。そのような発生がない場合は、0が返されます。関数の最初のパラメーターで複数のセルを指定すると、-1が返されます。 0のオカレンスを指定すると、指定されたフォーマットの最後のオカレンスの文字位置が返されます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13402)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。