配列内の要素を、完全一致で検索したい場合があります。
Dictionaryの連想配列へ格納して検索した方が高速ですが、コード内の値の重複が許可されません。
ここでは単純にFor~Loopで処理する形を案内します。
完全一致で検索するサンプルコード
一次元配列、二次元配列共にFor~Loopで処理がスタンダードです。
Findやmatchで検索も可能ですが、当方は使用しません。
'■一次元配列内の要素を検索し、完全一致の場所を探す Public Function Call_ArraySearch() Dim arr(3) As Long Dim i As Long Dim sWord As String: sWord = "123" arr(0) = 123 arr(1) = 234 arr(2) = 345 arr(3) = 123 '■単純にFor~Loopで回して検索する For i = LBound(arr) To UBound(arr) If arr(i) = sWord Then 'arr(0)とarr(3)が完全一致 MsgBox "一次元配列の要素" & i & "が完全一致しました" End If Next i End Function '■二次元配列内の要素を検索し、完全一致の場所を探す Public Function Call_ArraySearch2D() Dim arr(1, 1) As Long Dim i As Long, j As Long Dim sWord As String: sWord = "123" arr(0, 0) = 123 arr(0, 1) = 234 arr(1, 0) = 345 arr(1, 1) = 123 '■単純にFor~Loopで回して検索する For i = LBound(arr, 1) To UBound(arr, 1) For j = LBound(arr, 2) To UBound(arr, 2) If arr(i, j) = sWord Then 'arr(0,0)とarr(1,1)が完全一致 MsgBox "二次元配列の要素" & i & ", " & j & "が完全一致しました" End If Next j Next i End Function
その他
部分一致での検索で良ければFor~Loopで回さなくても、Filter関数で取得できます。
配列で条件に「部分一致」した要素を取得する【Filter関数】【ExcelVBA】
関連記事
一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
配列の宣言(静的/動的/1次元/2次元)【ExcelVBA】
コメント