エンジニアリングとお金の話

都内で働くエンジニアの日記です。

【技術】VBAで重複を除去する方法

【SPONSORED LINK】

vbaで重複した値を除去したい場合は、辞書を作成してキーに値を突っ込めばOK。最近仕事で使用したのでメモ書きしておく。

Sub 重複除去1()
Dim i, j As Integer
Dim dic As Object
Dim Keys

'辞書オブジェクトを作成
Set dic = CreateObject("Scripting.Dictionary")

i = 1
Do While Cells(i, 1) <> ""

    '辞書のキーが重複した際のエラーを無視
    On Error Resume Next
    
    '辞書のキーに値を設定。セルの値をキーに登録する際はvalueプロパティを付ける必要がある
    dic(Cells(i, 1).Value) = ""

    i = i + 1

Loop

'辞書からキーを取得
Keys = dic.Keys
j = 1

'キーの数だけ処理を実施
For Each tmp In Keys

   Cells(j, 2) = tmp
   j = j + 1
   
Next

End Sub

結果はこんな感じ

f:id:hatakazu93:20160928120129p:plain

また、表の内容が変わっても良い場合はRemoveDuplicatesメソッドを使った方が簡単。

Sub 重複除去2()
    Range("A1:A7").Select
    ActiveSheet.Range("$A$1:$A$7").RemoveDuplicates Columns:=1, Header:=xlNo
End Sub