VBATips

(あいまい検索)ニ次元配列に指定した文字が含まれるかどうか判定する【パーツ化】

ニ次元配列内に指定した文字が含まれるかどうか判定したい(部分一致/あいまい検索)

配列データと指定文字を完全一致ではなく、あいまい検索したい場合があります。
パーツ化することで、今後の開発の時短に繋がります。

ニ次元配列内に指定文字が含まれるかどうか判定するサンプルコード

'■2次元配列内に指定文字strが含まれていればTrue/存在しなければFalse/sColは検索する列位置
Public Function Call_arrCheck2DLike(str As String, arr As Variant, sCol As Long) As Boolean
    Dim i As Long
    For i = LBound(arr, 1) To UBound(arr, 1)
        If str Like "*" & arr(i, sCol) & "*" Then Call_arrCheck2DLike = True: Exit Function
    Next
    Call_arrCheck2DLike = False
End Function

実際の使い方

Public Sub sample()
    Dim arr(4, 1) As Variant
    arr(0, 0) = "A":    arr(0, 1) = "りんご":
    arr(1, 0) = "B":    arr(1, 1) = "みかん":
    arr(2, 0) = "C":    arr(2, 1) = "ぶどう":
    arr(3, 0) = "D":    arr(3, 1) = "バナナ":
    arr(4, 0) = "E":    arr(4, 1) = "マンゴー":

    
    Debug.Print Call_arrCheck2DLike("りん", arr, 0)      'False
    Debug.Print Call_arrCheck2DLike("りん", arr, 1)      'False
    Debug.Print Call_arrCheck2DLike("りんご", arr, 0)    'False
    Debug.Print Call_arrCheck2DLike("りんご", arr, 1)    'True
    Debug.Print Call_arrCheck2DLike("りんごあめ", arr, 0) 'False
    Debug.Print Call_arrCheck2DLike("りんごあめ", arr, 1) 'True
    Debug.Print Call_arrCheck2DLike("xxx", arr, 0)      'False
    Debug.Print Call_arrCheck2DLike("xxx", arr, 1)      'False

End Sub

注意点

関連記事

コメント

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