📊 Excel VBA Top100
🔄

RemoveDuplicates

データ処理

A列(A1:A100)の重複データを削除します

指定した列を基準にして重複する行を検出・削除し、ユニークなレコードだけを残すマクロです。Excelの「重複の削除」機能(データタブ)と同等の処理をVBAで自動化しています。基準列を複数指定することも可能で、「A列とB列の組み合わせが重複しているものを削除する」といった複合キーでの重複削除にも対応しています。削除件数が実行後に表示されるため、処理結果の確認も簡単です。実装にはRangeオブジェクトのRemoveDuplicatesメソッドを使用しており、Excel標準機能と同じ信頼性の高い動作をワンクリックで再現します。ヘッダー行を保持したままデータ部分だけを処理するため、表の構造が崩れることもありません。削除前にHighlightDuplicateValuesで重複箇所を目視確認し、必要ならバックアップを取ってから実行する、という手順にすると安全性が最も高くなります。

RemoveDuplicates デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: アクティブシートのA1:A100にデータを用意してマクロを実行。A列の重複行が削除されます(1行目はヘッダーとして保持)。

🎯 活用シーン

  • ✓複数のシートやファイルからデータを統合した際に発生した重複レコードを削除してクリーンなマスターデータを作成したいとき
  • ✓メールアドレスリストや顧客リストから同一人物の重複エントリーを取り除いて正確な件数を把握したいとき
  • ✓ログデータや履歴データから重複した記録を除去して集計処理の正確性を確保したいとき
  • ✓メルマガ配信リストの重複アドレスを除去して、同じ人への二重送信を防ぎたいとき
  • ✓複数月の売上データを結合したあと、誤って二重に貼り付けたレコードを取り除きたいとき

💡 実装のヒント

  • ▸削除前に重複データのバックアップを取ることを強く推奨します。削除された行はファイル保存後には復元できません。
  • ▸最初に出現する行が残り、2番目以降の重複行が削除されます。残したい行(最新のデータなど)が先頭に来るよう、事前にソートしておくと良いでしょう。
  • ▸重複削除後は行数が減るため、行番号や連番が飛ぶ場合があります。必要に応じてAddSerialNumbersで番号を振り直してください。
  • ▸どの行が消えるか不安な場合は、先にHighlightDuplicateValuesで重複を色付けして確認してから実行してください。
  • ▸対象範囲がA1:A100固定のため、データ量が多い場合はコード内の範囲指定を実データに合わせて変更してください。

💻 VBAコード

Sub RemoveDuplicates()
    On Error GoTo ErrHandler
    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    If ws Is Nothing Then
        MsgBox "アクティブなシートが見つかりません", vbCritical
        Exit Sub
    End If
    
    If Application.WorksheetFunction.CountA(ws.Range("A1:A100")) = 0 Then
        MsgBox "データが見つかりません", vbCritical
        Exit Sub
    End If
    
    ws.Range("A1:A100").RemoveDuplicates Columns:=1, Header:=xlYes
    
Exit Sub
ErrHandler:
    MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub