VBATips

(あいまい検索)配列Aに配列B内の要素が全て含まれているかどうか判定する【パーツ化】

配列Aに配列B内の要素が全て含まれているかどうか

配列データと指定文字を完全一致ではなく、
別配列内の要素が全て含まれているかチェックしたい場合があります。
パーツ化することで、今後の開発の時短に繋がります。

配列Aに配列B内の要素が全て含まれているか判定するサンプルコード

'■配列arr内に配列sKey内の要素がすべて含まれていればTrue/一つも含まれてなければFalse
Public Function call_arrToarrFuzzySearchFull(arr As Variant, sKey As Variant) As Boolean
    Dim flg As Boolean
    Dim i As Long, j As Long
    For i = LBound(arr) To UBound(arr)
        flg = True
        For j = LBound(sKey) To UBound(sKey)
            '■要素に含まれていなければFalse=逆に言えば全て要素に含まれればflgはTrueのまま
            If InStr(arr(i), sKey(j)) = 0 Then
                flg = False
                Exit For
            End If
        Next
        If flg = True Then
            call_arrToarrFuzzySearchFull = True
            Exit Function
        End If
    Next
    call_arrToarrFuzzySearchFull = False

End Function

実際の使い方

Public Sub sample()
    Dim arr(4) As Variant
    arr(0) = "りんごジュース"
    arr(1) = "みかんジュース"
    arr(2) = "ぶどうジュース"
    arr(3) = "バナナジュース"
    arr(4) = "マンゴージュース"
    
    Debug.Print call_arrToarrFuzzySearchFull(arr, Array("りんご", "ジュース"))  'True 「りんご」も「ジュース」も一要素内で両方ヒット
    Debug.Print call_arrToarrFuzzySearchFull(arr, Array("りんご", "みかん"))    'False 「りんご」「みかん」は一要素内で片方しかヒットしない
    Debug.Print call_arrToarrFuzzySearchFull(arr, Array("xxx", "yyy"))          'False
End Sub

注意点

  • 指定文字の完全一致の場合はこちら。
  • 配列A内に配列Bの要素がどれか一つでも含まれている場合はこちら。

関連記事

コメント

タイトルとURLをコピーしました