VBATips

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

配列Aに配列B内の要素が一つでも含まれているかどうか

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

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

'■配列arr内に配列sKey内の要素がどれか一つでも含まれていればTrue/一つも含まれてなければFalse
Public Function call_arrToarrFuzzySearch(arr As Variant, sKey As Variant) As Boolean
    Dim i As Long, j As Long
    For i = LBound(arr) To UBound(arr)
        For j = LBound(sKey) To UBound(sKey)
            '■文字が含まれていれば、TrueとしてFunctionを抜ける
            If InStr(arr(i), sKey(j)) >= 1 Then
                call_arrToarrFuzzySearch = True
                Exit Function
            End If
        Next
    Next
    call_arrToarrFuzzySearch = False

End Function

実際の使い方

Public Sub sample()
    Dim arr(4) As Variant
    arr(0) = "りんご"
    arr(1) = "みかん"
    arr(2) = "ぶどう"
    arr(3) = "バナナ"
    arr(4) = "マンゴー"
    
    Debug.Print call_arrToarrFuzzySearch(arr, Array("りん", "りんご"))          'True 「りん」でヒット→抜ける(りんごもヒットするが、抜けるので処理なし)
    Debug.Print call_arrToarrFuzzySearch(arr, Array("りんごあめ", "りんご"))    'True 「りんご」でヒット→抜ける
    Debug.Print call_arrToarrFuzzySearch(arr, Array("xxx", "yyy"))              'False
End Sub

注意点

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

関連記事

コメント

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