配列内の要素で一致した要素だけ別の配列にコピーしたい(抜き出ししたい)場合があります。
単純にFor~Loopで処理し、別の配列にコピーします。
条件に該当した要素を抜き出しするサンプルコード
サンプルコードは完全一致での抜き出しです。
'■一次元配列内の要素を検索し、条件に一致した要素を抜き出す
Public Function Call_ArraySearch(arr As Variant, sWord As String)
Dim i As Long, k As Long
Dim tmp As Variant
ReDim tmp(UBound(arr))
'■単純にFor~Loopで回して検索する
For i = LBound(arr) To UBound(arr)
If arr(i) = sWord Then
tmp(k) = arr(i)
k = k + 1
End If
Next i
ReDim Preserve tmp(k - 1)
Call_ArraySearch = tmp
End Function
実際の使い方
Public Sub sample()
Dim arr(3) As Variant
Dim var As Variant
arr(0) = 111
arr(1) = 121
arr(2) = 222
arr(3) = 333
'■222に完全一致するデータを配列varにコピーする
var = Call_ArraySearch(arr, "222")
Debug.Print arr(0) '222
End Sub
その他
一次元配列の場合は「完全一致」ではなく「部分一致」のケースが多いと考えます。
部分一致での検索で良ければFor~Loopで回さなくても、Filter関数で取得できます。
配列で条件に「部分一致」した要素を取得する【Filter関数】【ExcelVBA】



コメント