Excelで条件付き書式を使って重複データを色付けした後、一番上の重複セル以外の文字列を削除するVBAボタン作成方法について解説します。条件付き書式は保持したまま、文字列だけ削除できます。
準備:対象列と条件付き書式の確認
まず、重複チェック用の条件付き書式が適用されている列を確認します。ここでは1列のみを対象とします。
色は薄赤色など、既存の条件付き書式で設定されたものが分かる状態でOKです。
VBAで重複を判定して上部を残す
以下の手順でVBAを作成します。
- 開発タブ → Visual Basic → 挿入 → モジュール
- 対象列のセルを上から順にチェック
- Dictionaryオブジェクトで重複を記録し、一度出現した文字列はスキップ
- 2回目以降の文字列はクリア(””を代入)
サンプルコード
Sub RemoveDuplicateKeepTop()
Dim rng As Range, cell As Range
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Set rng = Range("A1:A100") '対象列を指定
For Each cell In rng
If Not IsEmpty(cell.Value) Then
If dict.Exists(cell.Value) Then
cell.ClearContents '重複セルを削除
Else
dict.Add cell.Value, True
End If
End If
Next cell
End Sub
このコードはA列のA1:A100を対象とし、最初に出現した値は残し、以降の重複は削除します。
ボタンに割り当てて実行
1. 開発タブ → 挿入 → フォームコントロールのボタンを配置
2. ボタンに上記マクロを割り当てる
3. ボタンを押すと、条件付き書式は残したまま、重複文字列が削除されます
まとめ
条件付き書式で色付けされた重複セルを対象に、VBAで一番上の文字列だけ残し、それ以外を削除する方法を紹介しました。Dictionaryを使うことで重複判定が簡単になり、複数列を使わず1列のみで処理可能です。

コメント