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」への参照設定が必要です。