MENU

【VBA】特定の文字列が含まれているか調べるにはコレ!【Instr関数】

エクセルマクロで文字列を操作する際、特定の文字や文字列を検索する必要があります。そんな時に便利なのが InStr 関数です。この記事では、 InStr 関数の基本的な使い方から応用例まで詳しく解説します。

Instr関数とは?

InStr 関数は、ある文字列内に特定の文字列が含まれているかを調べ、その位置を返します。例えば、「Hello, World!」という文字列の中に「World」が含まれているかどうかを確認する場合に使います。

Instr関数の基本構文

InStr([開始位置], 対象文字列, 検索文字列, [比較モード])
  • 開始位置(省略可): 検索を開始する位置を指定します。省略した場合は 1 から始まります。
  • 対象文字列: 検索される文字列を指定します。
  • 検索文字列: 対象文字列の中で探す文字列を指定します。
  • 比較モード(省略可): 大文字と小文字の区別を指定します。省略した場合はバイナリ比較(大文字小文字を区別)されます。
    • vbBinaryCompare: 大文字小文字を区別して比較します。
    • vbTextCompare: 大文字小文字を区別せずに比較します。

基本的な使用例

以下に、InStr 関数を使って文字列を検索する基本的な例を示します。

Sub BasicInStrExample()
    Dim text As String
    Dim searchString As String
    Dim position As Long

    text = "Hello, World!"
    searchString = "World"

    ' "World"が"Hello, World!"の中で何番目にあるかを検索
    position = InStr(1, text, searchString, vbTextCompare)

    If position > 0 Then
        MsgBox "文字列 '" & searchString & "' は位置 " & position & " に見つかりました。"
    Else
        MsgBox "文字列 '" & searchString & "' は見つかりませんでした。"
    End If
End Sub

応用例

応用例1:シート内の特定の文字列を検索

次の例では、シート内のセルをループして、特定の文字列が含まれているセルを見つけます。

Sub FindStringInSheet()
    Dim searchString As String
    Dim cell As Range
    Dim found As Boolean

    searchString = "検索文字列"
    found = False

    ' シートのすべてのセルをループ
    For Each cell In ActiveSheet.UsedRange
        If InStr(1, cell.Value, searchString, vbTextCompare) > 0 Then
            cell.Interior.Color = RGB(255, 255, 0) ' 黄色でハイライト
            found = True
        End If
    Next cell

    If found Then
        MsgBox "文字列 '" & searchString & "' が見つかりました。"
    Else
        MsgBox "文字列 '" & searchString & "' は見つかりませんでした。"
    End If
End Sub

応用例2:大文字小文字を区別した検索

大文字と小文字を区別して検索する例です。

Sub CaseSensitiveSearch()
    Dim text As String
    Dim searchString As String
    Dim position As Long

    text = "Hello, World!"
    searchString = "world" ' 小文字の"world"

    ' 大文字小文字を区別して検索
    position = InStr(1, text, searchString, vbBinaryCompare)

    If position > 0 Then
        MsgBox "文字列 '" & searchString & "' は位置 " & position & " に見つかりました。"
    Else
        MsgBox "文字列 '" & searchString & "' は見つかりませんでした。"
    End If
End Sub

応用例3:部分一致検索

部分一致を利用して、特定の文字列が含まれるかどうかを判断する例です。以下の例では、複数のキーワードのうち1つでも含まれているかを確認します。

Sub PartialMatchSearch()
    Dim text As String
    Dim keywords As Variant
    Dim keyword As Variant
    Dim position As Long
    Dim found As Boolean

    text = "The quick brown fox jumps over the lazy dog"
    keywords = Array("quick", "slow", "lazy")

    found = False

    For Each keyword In keywords
        position = InStr(1, text, keyword, vbTextCompare)
        If position > 0 Then
            found = True
            Exit For
        End If
    Next keyword

    If found Then
        MsgBox "いずれかのキーワードが見つかりました。"
    Else
        MsgBox "キーワードは見つかりませんでした。"
    End If
End Sub

まとめ

InStr 関数は、エクセルマクロで文字列を検索する際に非常に便利なツールです。基本的な使い方から応用例までを理解することで、データの検索や操作を効率的に行えるようになります。この記事を参考にして、InStr 関数を活用してみてください。

エクセルマクロに関する他の質問やリクエストがあれば、コメントで教えてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

自動車メーカーで、VBAやRPAを用いた業務効率化・業務改善を行っております。

目次