Excel VBAでのデータの一意化についてのサンプルです.

目次

  1. UNIQUE関数を使う例
  2. コレクションを使う例

UNIQUE関数を使う例

Excel 2019以降であればスピル関数のUNIQUEが使えます.
次の例ではA列に含まれる値を一意にしていますが,空白セルも取得してしまうことに注意してください.
そのため,最後にB列への書き出しを行っているFor文では,UBoundで取得した個数から1を引いて,最後に返される「空白」を取り除いています.

Dim mydata As Variant
Dim i As Long

mydata = WorksheetFunction.Unique("A:A")
For i = 1 To UBound(mydata) - 1
Cells(i, 2) = mydata(i, 1)
Next

コレクションを使う例

古いバージョンのExcelでマクロを実行する可能性がある場合,コレクションを使います.
コレクションは重複した値をとることができません.
その性質を逆に利用して,On Error Resume Nextによりエラーする処理はスキップして一意な値を集めています.

Dim mydata As New Collection
Dim i As Long
Dim col As Long: col = 対象列

On Error Resume Next
For i = 1 To Range("A1").SpecialCells(xlLastCell).Row
mydata.Add Cells(i, col), Cells(i, col)
Next i

' 右隣に列を挿入して,重複しないリストを書き出す
Columns(col + 1).Insert
For i = 1 To mydata.Count
Cells(i, col + 1) = mydata(i)
Next i