Excel

【Excel】VBAマクロで配列の存在チェック(完全一致や部分一致)する方法【InStr関数、For Eachループ】

当サイトでは記事内に広告を含みます

この記事では、【Excel】VBAマクロで配列の存在チェック(完全一致や部分一致)する方法【InStr関数、For Eachループ】について解説していきます。ポイントとしては、InStr関数とFor Eachループを使用することです。

特に初心者の方にも理解しやすいように、変数名を少し変わった日本語ローマ字表記にしています。実際の使用時には、より適切な英語表記の変数名に変更してご利用ください。

それでは、手順を詳しく見ていきましょう!

 

VBAマクロで配列の存在チェック(完全一致)する方法【ココア、カカオ、ライスのリスト】

それではまず、配列の存在チェック(完全一致)する方法について解説していきます。この方法では、特定のリスト内で特定の文字列が完全に一致するかどうかを確認します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub CheckArrayCompleteMatch()
    Dim shokuhinList As Variant
    shokuhinList = Array("ココア", "カカオ", "ライス")
    Dim item As Variant
    Dim targetItem As String
    targetItem = "カカオ"

    For Each item In shokuhinList
        If item = targetItem Then
            MsgBox targetItem & " はリスト内に存在します。"
            Exit Sub
        End If
    Next item
    MsgBox targetItem & " はリスト内に存在しません。"
End Sub

コードのAlt+F8を押し、マクロ選択画面でCheckArrayCompleteMatch関数を実行します。

このコードでは、`shokuhinList` という配列に「ココア」、「カカオ」、「ライス」という要素を設定し、`targetItem` にチェックしたい項目を指定しています。

`For Each` ループを使って配列の各要素と `targetItem` を比較し、一致すればメッセージボックスで結果を表示します。

 

VBAマクロで配列の存在チェック(部分一致)する方法【チョコ、マシュマロ、サラダのリスト】

続いては、配列の存在チェック(部分一致)する方法について解説していきます。こちらでは、要素の一部が指定した文字列に一致するかどうかを確認します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub CheckArrayPartialMatch()
    Dim sweetsList As Variant
    sweetsList = Array("チョコ", "マシュマロ", "サラダ")
    Dim item As Variant
    Dim targetString As String
    targetString = "チョ"

    For Each item In sweetsList
        If InStr(item, targetString) > 0 Then
            MsgBox "リスト内に " & targetString & " を含む要素が存在します。"
            Exit Sub
        End If
    Next item
    MsgBox "リスト内に " & targetString & " を含む要素は存在しません。"
End Sub

コードのAlt+F8を押し、マクロ選択画面でCheckArrayPartialMatch関数を実行します。

このコードでは、`sweetsList` という配列に「チョコ」、「マシュマロ」、「サラダ」という要素を設定し、`targetString` に部分一致させたい文字列を設定しています。

ここで `InStr` 関数を使って、配列の各要素内に `targetString` が含まれているかをチェックし、含まれていればメッセージボックスで結果を表示します。

 

VBAマクロで配列の存在チェック(単語の完全一致、全体の部分一致)する方法【チョコ、マシュマロ、サラダのリスト】

続いては、単語が完全一致し、全体としては部分一致する要素が配列内に存在するかどうかをチェックする方法について解説していきます。

特定の単語が配列内のいずれかの要素に含まれているかを判断します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub CheckArrayPartialMatchWithCompleteWord()
    Dim sweetsList As Variant
    sweetsList = Array("チョコ", "マシュマロ", "サラダ")
    Dim item As Variant
    Dim targetWords As Variant
    targetWords = Array("チョコ", "カカオ")

    Dim found As Boolean
    found = False

    For Each item In sweetsList
        For Each targetWord In targetWords
            If item = targetWord Then
                found = True
                Exit For
            End If
        Next targetWord
        If found Then Exit For
    Next item

    If found Then
        MsgBox "指定した単語はリスト内のいずれかの要素に含まれています。"
    Else
        MsgBox "指定した単語はリスト内のどの要素にも含まれていません。"
    End If
End Sub

コードのAlt+F8を押し、マクロ選択画面でCheckArrayPartialMatchWithCompleteWord関数を実行します。

このコードでは、`sweetsList` という配列に「チョコ」、「マシュマロ」、「サラダ」という要素を設定し、`targetWords` にチェックしたい単語のリストを設定しています。

2つの `For Each` ループを使用し、`sweetsList` の各要素が `targetWords` のいずれかの単語と完全に一致するかをチェックしています。

一致する単語が見つかった場合、メッセージボックスで結果を表示します。

 

まとめ VBAマクロで配列の存在確認(完全一致や部分一致)する方法【InStr関数、For Eachループ】

この記事では、VBAマクロで配列の存在チェック(完全一致や部分一致)する方法【InStr関数、For Eachループ】を解説しました。

マクロをマスターしてさらに快適に過ごしていきましょう!