VBAで重複する値を取り除く
2021-07-26 00:00:00
リストなどから重複する値を取り除く方法を紹介します。Collectionを使う方法やDictionaryを使う方法が一般的に使われます。シート上にある場合には、RangeオブジェクトのRemoveDuplicatesメソッドが使用するとよいケースもあると思います。
Collectionを用いた実装
Dim orig As Variant Dim unq As Collection Dim v As Variant orig = Array(1, 2, 2, 4, 5, 5, 7, 8) Set unq = New Collection For Each v In orig On Error Resume Next unq.Add v, CStr(v) On Error GoTo 0 Next For Each v In unq Debug.Print v Next
Dictionaryを用いた実装
Dim orig As Variant Dim unq As Object Dim v As Variant orig = Array(1, 2, 2, 4, 5, 5, 7, 8) Set unq = CreateObject("Scripting.Dictionary") For Each v In orig If Not unq.Exists(v) Then unq.Add v, 1 End If Next For Each v In unq.keys() Debug.Print v Next
Dictionaryを事前バインディングで使うときには「Microsoft Scripting Runtime」への参照設定が必要です。