Dictionaryクラス(連想配列)を利用して、一次元配列の重複要素を削除する事が可能です。
Dictionaryは重複した値を格納する事が出来ません。その特性を活用します。
配列で条件に一致した要素を取得するサンプルコード
'■配列内の重複データを削除する Sub sample_Array_Duplicate() Dim arr(3) As Variant Dim temp As Variant arr(0) = "ABC" arr(1) = "abc" arr(2) = "123" arr(3) = "123" '■重複を除く処理 temp = Call_Array_Dictionary(arr) '■重複を除いたユニークな一覧を表示 MsgBox Join(temp, vbCrLf) 'ABC 'abc '123 End Sub ’Dictionaryを使用する場合は、Microsoft Scripting Runtimeの参照設定が必要です '■Dictionary(連想配列)で重複データを削除する Public Function Call_Array_Dictionary(arr As Variant) Dim dic As New Dictionary Dim i As Long '■On Error Resume Nextでエラーを無視する On Error Resume Next For i = 0 To UBound(arr) dic.Add arr(i), arr(i) Next Call_Array_Dictionary = dic.Keys End Function
その他
- 重複した値を削除しユニークなリストとなりましたが、並び替えソート(昇順、降順)はされません。
必要な場合、別途ソートする処理を入れましょう。
- 一次元配列のみ対応で、二次元配列には対応していません。
- Dictionaryクラスを使用するには「Microsoft Scripting Runtime」を参照設定しましょう。
※VBA画面のツールメニュー→参照設定→「Microsoft Scripting Runtime」にチェック
コメント