この記事では、Excel VBAを用いて、重複するデータのみを抽出し、さらにその中からユニークなデータをまとめる方法について解説します。
ポイントとしては、独自のロジックとExcel VBAの組み込み関数を組み合わせることです。初心者にも理解しやすいように、変数名を独特の名称にしています。
実際の利用時には、一般的に英語表記の適切な変数名に変更してください。
それでは、具体的な手順を見ていきましょう!
ロで重複をチェックし重複データのみをまとめる(抽出:1列のみに着目)方法【Dictionary】
それではまず、データの中から重複している項目を特定し、それらを別の範囲にコピーする方法について解説していきます。
ここでは`Dictionary`オブジェクトを使い、データを効率よく処理します。
Sub CopyDuplicatesToAnotherRange()
' 辞書オブジェクトの初期化
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
' データ範囲の指定
Dim dataRange As Range
Set dataRange = ThisWorkbook.Sheets("Sheet1").Range("A1:A100")
Dim cell As Range
' 各セルの値をチェックして辞書にカウント
For Each cell In dataRange
If Not cell.Value = "" Then
If dict.Exists(cell.Value) Then
dict(cell.Value) = dict(cell.Value) + 1
Else
dict(cell.Value) = 1
End If
End If
Next cell
' 重複データを別の範囲にコピー
Dim i As Long
i = 1 ' コピー開始位置
For Each Key In dict.Keys
If dict(Key) > 1 Then
ThisWorkbook.Sheets("Sheet1").Cells(i, "B").Value = Key
i = i + 1
End If
Next Key
End Sub
Alt + F11にてVBE画面を開いて、上記コードをコピペしましょう。
コードの実行はAlt+F8を押し、マクロ選択画面で`CopyDuplicatesToAnotherRange`関数を実行します。
このマクロは、指定した範囲内で重複しているデータを別の範囲にコピーします。
重複データを抽出する範囲やコピー先は、コード内の`dataRange`や`i`変数を適宜変更してください。
VBAマクロで重複をチェックし重複データのみをまとめる(抽出:複数列にOR条件)方法【RemoveDuplicates】
続いては、コピーした重複データからユニークなデータのみを残す方法について解説していきます。
Excel VBAの`RemoveDuplicates`メソッドを活用して、データを精査します。
Sub LeaveUniqueDuplicates()
' データがコピーされた範囲の指定
Dim duplicatesRange As Range
Set duplicatesRange = ThisWorkbook.Sheets("Sheet1").Range("B1:B" & ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row)
' RemoveDuplicatesメソッドを使ってユニークなデータのみを残す
duplicatesRange.RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
Alt + F11でVBE画面を開いて、上記コードをコピペしてください。
実行するにはAlt+F8を押し、`LeaveUniqueDuplicates`関数を実行します。この関数は、コピーされた重複データの中からユニークな項目のみを残し、重複を削除します。
重複データがコピーされた範囲は、`duplicatesRange`変数で指定します。
VBAマクロで配列の重複を抽出し重複データのみをまとめたデータリストを作成する方法【FinalList】
最後に、ユニークな重複データを抽出して、新しいリストを作成する方法を見ていきましょう。
これにより、データの中から重複するユニークな項目のみを一覧できます。
Sub CreateUniqueDuplicatesList()
' ユニークな重複データがある範囲の指定
Dim uniqueDuplicatesRange As Range
Set uniqueDuplicatesRange = ThisWorkbook.Sheets("Sheet1").Range("B1:B" & ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row)
' 新しいシートを作成し、ユニークな重複データをコピー
Dim newSheet As Worksheet
Set newSheet = ThisWorkbook.Worksheets.Add
newSheet.Name = "UniqueDuplicatesList"
uniqueDuplicatesRange.Copy Destination:=newSheet.Range("A1")
End Sub
Alt + F11でVBE画面を開いて、上記のコードをコピペします。
Alt+F8を押し、`CreateUniqueDuplicatesList`関数を実行すると、ユニークな重複データが新しいシートにリストアップされます。
この関数は、コピーされたユニークな重複データを新しいシートに転記し、整理されたリストを作成します。
まとめ VBAマクロで重複データをまとめる(抽出:カウント)方法【UniqueDuplicatesなど】
これで、重複データのみを残し、その中からユニークなデータのみを抽出する手順が完了します。
この方法を活用して、より業務を効率化させていきましょう。