配列内の要素で一致した要素だけ別の配列にコピーしたい(抜き出ししたい)場合があります。
単純に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】
コメント