Excelで複数列にわたる重複データを処理する際、条件付き書式を残したまま重複セルを削除したいケースがあります。この記事では、VBAを使って左側の上位セルを残し、その他の重複セルを削除する方法を具体例とともに解説します。
複数列の重複判定の基本
重複データの判定にはTrim関数を使用すると便利です。これにより、セル内の不要なスペースを無視して比較できます。
例えば、A列とC列のデータを比較する場合、Trim関数で空白を除去して一致判定を行います。
VBAで重複セルを削除する基本手順
削除処理の基本手順は以下の通りです。
- 対象範囲をループで確認
- Trim関数でスペースを無視した文字列比較
- 最初に出現した文字列は残し、重複は空文字に置換
これにより、行を削除せずに重複を削除できます。
具体的なVBAコード例
以下の例では、A列とC列の30行目までの重複を処理します。
Sub RemoveDuplicatesKeepFirst()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim i As Long, key As String
For i = 1 To 30
key = Trim(Cells(i, 1).Value) & "|" & Trim(Cells(i, 3).Value)
If dict.exists(key) Then
Cells(i, 1).Value = ""
Cells(i, 3).Value = ""
Else
dict.Add key, 1
End If
Next i
End Sub
この方法により、左列の先頭のデータを残し、重複した下の行は削除されます。また、条件付き書式はそのまま保持されます。
複数表や異なる範囲に対応する方法
同様の処理を複数表で行う場合は、各表ごとに対象範囲を指定すれば対応可能です。
例えば、表①が1~30行目、表②が32~60行目の場合、範囲を変えてSubプロシージャを呼び出せば効率的です。
ユーザー操作を意識した柔軟な処理
スペースの有無を無視した重複処理や、条件付き書式を残すことで、ユーザーが視覚的にデータの重複を確認しつつ安全に削除できます。
また、VBAボタンにこのマクロを割り当てれば、簡単に操作できるインターフェイスを作成可能です。
まとめ
Excel VBAを用いれば、複数列にわたる重複データを左列優先で削除しつつ、条件付き書式や行構造を保持することができます。Trim関数を活用することで、スペースの違いによる誤判定も防げます。複数表や範囲への対応も簡単にでき、ユーザーに優しいマクロを作成可能です。


コメント