Excelで重複の削除といえば、特定の列(たとえば「名前」や「ID」など)をキーに処理することが一般的ですが、「行ごとにまったく同じ内容のデータが重複している場合、それを1件だけ残して削除したい」というニーズも非常に多くあります。
たとえば以下のようなケースです:
| 氏名 | 生年月日 | 所属部署 |
|---|---|---|
| 山田 | 1990/01/01 | 経理部 |
| 山田 | 1990/01/01 | 経理部 |
| 佐藤 | 1992/04/10 | 営業部 |
上記では「山田・1990/01/01・経理部」の行が完全に一致して2回出現しており、これを「1件だけ残して削除」したい、あるいは「すべて削除」したいという要望に応じた処理方法を解説していきます。
目次
行単位で重複削除とは?
| 判定方法 | 対象 |
|---|---|
| セル単位 | 特定の列(氏名、IDなど) |
| 行単位 | すべての列の値が一致した行 |
本記事では、「すべての列の値が一致している行=重複行」として扱い、それを削除する方法を複数紹介します。
【Excel】重複削除を正しく行う方法|関数・フィルター・Power Queryを使いこなす実践ガイド
✅ Excelの「重複の削除」機能で行単位の重複を削除する方法
もっとも簡単に行単位の重複を削除できるのは、Excelの標準機能「重複の削除」です。
操作手順:
データ範囲全体(例:A1:C100)を選択
「データ」タブ →「重複の削除」
「すべて選択」にチェックが入っていることを確認
「OK」をクリック
これにより、列のすべての値が完全に一致する行だけが重複と見なされ、1件を残して他の同一行が削除されます。
特徴:
非常に簡単・高速
1行のすべての値を基準に自動で重複判定
元のデータが変更されるため、事前にコピー推奨
【Excel】重複を色付けして視覚的にわかりやすくする方法|条件付き書式・関数・応用設定まで徹底解説
✅ COUNTIFS関数を使って完全一致行を特定して削除する方法
削除前に「本当に重複しているか確認したい」場合や、「重複がある行を色分けしたい」場合には、COUNTIFS関数を使った判定がおすすめです。
手順:
判定列(たとえばD列)に以下の式を入力:
=COUNTIFS($A$2:$A$100, A2, $B$2:$B$100, B2, $C$2:$C$100, C2)
=2以上なら重複行と判断可能フィルターや条件付き書式を使って強調表示・削除が可能
応用:
=1の行だけを残す>1の行を削除=2のみ削除(2回だけ出現)など細かい条件設定が可能
【Excel】重複データを抽出し件数をカウントする方法|関数・ピボット・Power Queryを活用した集計テクニック
✅ Power Queryで完全一致の行を削除する方法
Power Queryでは、行単位の重複判定もすべての列を一括で指定するだけで簡単に行えます。
手順:
データを選択 →「データ」タブ →「テーブルまたは範囲から」
Power Queryエディタが起動
すべての列を選択(Ctrl+クリック)
「ホーム」→「行の削除」→「重複の削除」
「閉じて読み込む」で新しいシートに出力
メリット:
元データを壊さず、安全に処理できる
データ追加後も「更新」だけで再処理可能
複数列が存在する大規模データにも対応
✅ VBAで1行すべての値が一致している重複行を削除する方法(高速処理向け)
大量データや定期処理には、VBAを使った自動化が便利です。
サンプルコード:
Sub 完全一致行を削除()
Dim ws As Worksheet
Dim dict As Object
Dim lastRow As Long, i As Long
Dim rowKey As String
Set ws = ActiveSheet
Set dict = CreateObject("Scripting.Dictionary")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = lastRow To 2 Step -1
rowKey = ws.Cells(i, 1).Value & "|" & ws.Cells(i, 2).Value & "|" & ws.Cells(i, 3).Value
If dict.exists(rowKey) Then
ws.Rows(i).Delete
Else
dict.Add rowKey, 1
End If
Next i
MsgBox "完全一致した行の削除が完了しました。"
End Sub
ポイント:
rowKeyに行のすべてのセル値を連結して1つの判定キーを生成重複があれば削除。最初の1行のみを残す仕様
データ量が多くても高速
✅ 重複行を1件も残さずすべて削除したい場合
上記のVBAを少し変更すれば、「完全に一致した行はすべて削除(1件も残さない)」という処理にも対応可能です。
' 出現回数を先にカウントし、2回以上出現した行をすべて削除
このような処理は重複チェック用データベースのクレンジングなどで活躍します。
・注意点とトラブル対策
| トラブル内容 | 原因 | 解決方法 |
|---|---|---|
| 一見同じに見えるのに削除されない | 空白やスペース、データ型の違いがある場合 | TRIM・CLEAN・数値型統一などの前処理を実施 |
| 重複判定が不正確 | 比較対象となる列が一部抜けている | 列すべてを範囲に含めて指定すること |
| データが上書きされてしまった | 元のデータで直接削除を実行してしまった | 必ず「コピーシート」で検証 → 本番データへ反映 |
| Power Queryで順序が保持されない | 並び順がリセットされることがある | 必要に応じて「インデックス列」を作成して並び順を保持 |
・まとめ:行ごとの完全一致を見極めて、正確な重複削除を実現しよう
| 方法 | 特徴 |
|---|---|
| 重複の削除機能 | 最も手軽。すべての列を指定することで行単位の削除が可能 |
| COUNTIFS関数 | 削除前に確認でき、柔軟な条件指定が可能 |
| Power Query | 更新対応・非破壊処理に最適 |
| VBAマクロ | 大量データの処理や定型業務の自動化に最適 |
行単位での重複判定と削除を正確に行うことは、データ品質の向上と処理精度に直結します。目的に応じて最適な方法を選び、効率よくデータ整理を進めましょう。