はじめに
顧客リストや商品コード一覧を扱っていると、「重複しているデータがないかチェックしたい」という場面が頻繁にあります。目視で探すのは大変ですが、Excelの「条件付き書式」を使えば、重複した値を持つセルを自動でハイライト(色付け)できます。
この便利な機能を、VBAマクロとして登録しておけば、ボタン一発でいつでも実行できるようになります。この記事では、選択したセル範囲の中から、重複している値に色を付ける、シンプルで実用的なマクロをご紹介します。
重複セルに色を付けるVBAサンプルコード
このマクロは、以下の手順で動作します。
- まず、選択範囲に設定されている既存の条件付き書式を一旦すべてクリアします。
- 次に、「重複する値」という条件で新しい書式設定を追加します。
- 条件に合致したセル(重複した値を持つセル)の背景色を指定した色に変更します。
完成コード
' 選択したセル範囲内で、重複する値を持つセルの背景色を変更する
Sub HighlightDuplicateValues()
'== 変数を定義します ==
Dim targetRange As Range
' グラフなどが選択されている場合を考慮し、対象がセル範囲かを確認
If TypeName(Selection) <> "Range" Then
MsgBox "セル範囲を選択してから実行してください。", vbExclamation
Exit Sub
End If
' 選択範囲をセット
Set targetRange = Selection
'== 選択範囲の既存の条件付き書式をクリア ==
targetRange.FormatConditions.Delete
'== 「重複する値」をハイライトする条件付き書式を追加 ==
' .AddUniqueValues メソッドで重複/一意の値のルールを追加
With targetRange.FormatConditions.AddUniqueValues
' .DupeUnique プロパティで「重複」を指定
.DupeUnique = xlDuplicate
' 書式設定:背景色を薄い赤に設定
.Interior.Color = RGB(255, 199, 206)
' 書式設定:文字色を濃い赤に設定
.Font.Color = RGB(156, 0, 6)
End With
MsgBox "重複する値に色を付けました。", vbInformation
End Sub
コードの解説
targetRange.FormatConditions.Delete
マクロを何度も実行できるように、まず選択範囲に設定されている古い条件付き書式を .Delete
メソッドで一旦すべて削除しています。これにより、書式が何重にも設定されるのを防ぎます。
targetRange.FormatConditions.AddUniqueValues
選択範囲(targetRange
)の条件付き書式(.FormatConditions
)に、重複または一意の値をチェックするための新しいルール(.AddUniqueValues
)を追加しています。
.DupeUnique = xlDuplicate
追加したルールがどちらを対象とするかを設定しています。xlDuplicate
は「重複した値」を意味します。もし一意の値(重複していない値)に色を付けたい場合は、ここを xlUnique
に変更します。
.Interior.Color = RGB(255, 199, 206)
条件に一致したセルの書式を設定しています。
.Interior.Color
: セルの内部(背景)の色を指定します。RGB(255, 199, 206)
: 光の三原色(赤, 緑, 青)の値を指定して色を作成する関数です。この例では、Excelの標準の「濃い赤の文字、明るい赤の背景」の色合いを再現しています。色はお好みの値に変更可能です。
まとめ
今回は、VBAを使って選択範囲内の重複データに色を付ける、簡単で便利な方法をご紹介しました。
FormatConditions.AddUniqueValues
を使って、重複チェックのルールを追加する。.DupeUnique = xlDuplicate
で「重複」を条件として指定する。.Interior.Color
などで、ハイライトする書式を自由に設定できる。
このマクロを個人用マクロブックに保存し、クイックアクセスツールバーに登録しておけば、データチェック作業が大幅に効率化します。ぜひ日々の業務にご活用ください。