Excelで大量のデータを扱っていると、同じ値が複数行にわたって記載されている「重複データ」に出会うことは多々あります。
たとえば、次のような場面です:
名簿に同じ人の名前が複数回記録されている
顧客リストに同じIDのデータが複数行ある
商品マスタに重複した商品コードが含まれている
このような場合、「重複しているデータを1つだけ残して削除」することで、正しいデータ整理や集計が可能になります。
本記事では、Excelで重複データを削除して1件だけ残す方法について、初心者から上級者まで対応できる内容を、複数の手法で丁寧に解説していきます。
目次
目的の明確化:「重複の削除で1件残す」とは?
重複を「削除」と言っても、その意味はさまざまです。
| 処理 | 結果 |
|---|---|
| 完全一致を削除 | 同じ行がすべて除去されて0件になる(完全重複) |
| 一部重複を1件だけ残す | 同じ値の中で最初の1件を残し、他を削除 |
| キー列の重複を1件残す | 氏名やIDなど指定した列に対する重複のみを削除 |
本記事では「重複している値を1件だけ残す」という前提で、以下の処理を行います。
✅ Excelの「重複の削除」機能を使う方法(基本機能)
最も手軽なのが、Excelの「重複の削除」ボタンを使う方法です。
手順:
対象のデータ範囲を選択(例:A1:B100)
「データ」タブ →「重複の削除」をクリック
対象となる列(氏名やIDなど)にチェックを入れる
「OK」を押す
これで、重複データが自動で削除され、最初に出現した1件だけが残ります。
特徴:
数クリックで実行できる手軽さ
複数列で組み合わせ条件も指定可能
元のデータが直接上書きされるため、コピーやバックアップ必須
【Excel】重複を色付けして視覚的にわかりやすくする方法|条件付き書式・関数・応用設定まで徹底解説
✅ COUNTIF関数とフィルターで重複を抽出→削除する方法
「元データを残したまま、重複を取り除きたい」「削除する前に確認したい」という場合は、COUNTIF関数とフィルターの併用が便利です。
手順:
B列に次の式を入力:
=COUNTIF($A$2:A2, A2)=1
「TRUE」の行だけが初出のデータ
フィルターで「TRUE」のみを表示 → コピー&別シートへ貼り付け
メリット:
元のデータを残して別の場所に一意なリストを作成できる
複数条件での制御も可能(例:COUNTIFS)
バージョン問わず使用可能
【Excel】最新の日付だけを残して他は削除する方法|関数・Power Query・VBAでの実務対応テクニック
✅ Power Queryで重複を削除して1件だけ残す方法(自動更新対応)
Power Queryを使えば、重複を削除して1件だけ残すクエリ処理を自動化できます。
手順:
対象範囲を選択 →「データ」→「テーブルまたは範囲から」
Power Queryエディタが起動
重複除去対象の列を右クリック →「重複の削除」
「閉じて読み込む」で別シートに出力
特徴:
更新ボタンを押せば、新しいデータに合わせて再処理が可能
元データに影響を与えずに済む
複数列をキーにした処理も可能
【Excel】削除せずに最新データだけを別シートへ出力する方法|関数・Power Query・VBAによる自動抽出テクニック
✅ UNIQUE関数を使用する方法(Excel 365/2021以降)
最新のExcelには、重複のないデータを自動で抽出できるUNIQUE関数が用意されています。
使用例:
=UNIQUE(A2:A100)
この関数を使えば、指定列に含まれる一意な値だけを縦に並べて表示してくれます。
特徴:
データ範囲を変更するたびに自動反映
ソートや並び替えとの併用も可能
複数列に対応(横方向にも可能)
重複データを1件だけ残す方法は、データ整理の基本となる代表的な手法です。
「完全に削除したい」「最新データだけを残したい」「複数列を条件にしたい」など、目的別の削除方法をまとめて確認したい場合は、次の総合ガイドもあわせて参考にしてください。
✅ VBAで重複を削除して1件だけ残す自動処理の方法
大量データを一気に処理したい場合や、繰り返し作業を効率化したい場合には、VBAを使ったマクロ処理が最適です。
サンプルコード:
Sub 重複を削除して1件残す()
Dim dict As Object
Dim ws As Worksheet
Dim lastRow As Long, i As Long
Dim key 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
key = ws.Cells(i, 1).Value
If dict.exists(key) Then
ws.Rows(i).Delete
Else
dict.Add key, 1
End If
Next i
MsgBox "重複削除が完了しました。"
End Sub
特徴:
最初に出現した1件を残して、それ以降を削除
別シートにも適用可能(コードを少し調整)
フィルターや関数よりも大量データに強い
・実務における活用例と注意点
| 活用シーン | 実際の処理内容 |
|---|---|
| 名簿管理 | 同じ名前の登録が複数あれば最初の1件だけを残す |
| 顧客データのクレンジング | 顧客IDの重複を取り除いて整理 |
| 商品リストの重複排除 | 商品コードが重複しているものを1行に統一 |
| アンケート集計 | 同じ意見の重複を1件にしてユニーク回答を抽出する |
注意点
重複の削除は元データが変わる処理なので、必ずコピーを作ってから操作する
空白セルや数値と文字列(例:"1"と1)は異なる扱いになるため注意
スペースや記号などで見た目が同じでも実際は異なるケースもあり得る
・まとめ:重複を1件だけ残して削除する処理はExcelの基本かつ強力な整理手法
Excelでの「重複削除」は、単なるデータの整形にとどまらず、集計やレポート作成、名寄せ処理などの土台となる重要な作業です。
複数の方法を使い分けられるようになると、あらゆる業務に柔軟に対応できるようになります。
| 方法 | 対応バージョン | 特徴 |
|---|---|---|
| 重複の削除ボタン | Excel 2007以降 | 最も簡単で即実行可能。元データが変わる点に注意 |
| COUNTIF+フィルター | 全バージョン | 安全に抽出可能。元データを保持したまま利用可能 |
| Power Query | Excel 2016以降推奨 | 自動化・再利用に強い。高度な整形も可能 |
| UNIQUE関数 | Excel 365 / 2021 | 自動展開&動的抽出に最適 |
| VBAマクロ | 全バージョン | 大量処理・自動化・反復作業に最適 |