Home / Microsoft / Excel / 【2026年最新版】Excelで重複データを削除・抽出する方法【関数・条件付き書式対応】

【2026年最新版】Excelで重複データを削除・抽出する方法【関数・条件付き書式対応】

※本ページにはプロモーション(広告)が含まれています

Excelで大量のデータを扱っていると、同じデータが複数行に重複して入力されていることは珍しくありません。顧客リスト、売上データ、商品マスタなど、さまざまな場面で重複データは発生します。

重複データをそのまま放置すると、集計結果がズレたり、分析の精度が落ちたりと、業務に支障をきたす可能性があります。しかし「どうやって重複を見つけて削除すればいいのかわからない」という方も多いのではないでしょうか。

この記事では、Excelで重複データを削除・抽出・検出するあらゆる方法を、初心者でもわかるように丁寧に解説します。組み込み機能から関数、条件付き書式まで網羅しているので、状況に合わせた最適な方法を選んでください。

重複の削除機能

この記事でわかること

  • 「重複の削除」機能で一括削除する手順
  • COUNTIF関数で重複データを検出・フラグ付けする方法
  • 条件付き書式で重複セルを色分けして視覚化する方法
  • UNIQUE関数(Excel 365/2021)で重複なしリストを抽出する方法
  • VLOOKUP・XLOOKUPで別シート間の重複チェックをする方法
  • 複数列(複合キー)での重複チェック方法
  • 重複削除・抽出でよくあるトラブルと対処法

Excelの重複データとは?基本を理解しよう

まず、Excelにおける「重複データ」の定義を確認しましょう。

重複データの種類

Excelの重複データには、大きく分けて以下の2種類があります。

種類 説明
完全重複 1列または複数列の値がすべて一致している 「田中太郎」が2行ある
部分重複 特定の列だけが一致している メールアドレスは同じだが名前が違う

状況によって対処法が異なるため、まず「どの列を基準に重複判定するか」を決めることが重要です。

重複チェックの前に必ずバックアップを

⚠️ 注意:重複削除は元に戻せない場合があります(Ctrl+Zで戻せることもありますが、保存後は不可)。
必ずファイルをコピーするか、別名保存してから작업することをおすすめします。


方法1:「重複の削除」機能を使う(最も簡単)

Excelには「重複の削除」という組み込み機能があり、クリック操作だけで重複行を一括削除できます。最も手軽な方法です。

手順(Excel 2016以降対応)

ステップ1:対象データを選択する

  1. 重複削除したい表の中の、いずれかのセルをクリックします(表全体を選択しなくてOK)
  2. または、特定の列だけを対象にしたい場合は、その列の列番号をクリックして列全体を選択

ステップ2:「重複の削除」を開く

  1. Excelの上部メニューから「データ」タブをクリック
  2. 「データツール」グループにある「重複の削除」ボタンをクリック

ステップ3:基準列を選択する

  1. 「重複の削除」ダイアログが開きます
  2. 「先頭行をデータの見出しとして使用する」のチェックが入っているか確認(通常は入ったまま)
  3. 重複判定に使う列のチェックボックスを選択します
  4. 全列にチェック → すべての列の値が完全一致する行を削除
  5. 特定の列のみチェック → その列だけで重複判定(例:「メールアドレス」列だけにチェック)
  6. OK」をクリック

ステップ4:結果を確認する

  1. 「X件の重複値が見つかり削除されました。Y件の一意の値が残っています。」というメッセージが表示されます
  2. 「OK」をクリックして完了
COUNTIF重複検出

「重複の削除」の注意点

  • 最初の行が残る:重複している場合、最初に出てきた行だけが残り、2行目以降は削除されます
  • 元に戻せない(保存後):削除後に保存すると取り消しできません
  • 大文字・小文字は区別しない:「Excel」と「excel」は同一と判定されます
  • 前後のスペースも考慮する:「田中 太郎」と「田中太郎」(スペースあり・なし)は別データとして扱われます

複数列(複合キー)での重複削除

例えば「氏名+メールアドレスの組み合わせが重複している行を削除したい」という場合は、ダイアログで複数列にチェックを入れるだけです。

チェックを入れたすべての列の値がすべて一致する場合のみ重複と判定されます。


方法2:COUNTIF関数で重複データを検出する

「削除する前に、まず重複している行を確認したい」という場合は、COUNTIF関数を使って重複をフラグ付けする方法が便利です。どの行が重複しているかを視覚的に確認できます。

基本の使い方

たとえば、A列に名前が入っているとします。B列にCOUNTIF関数を入れて、各名前が何回登場するかをカウントします。

=COUNTIF($A$2:$A$100,A2)

この数式の意味:

  • $A$2:$A$100:チェック対象の範囲(絶対参照で固定)
  • A2:現在の行のセル(相対参照)
  • 結果が「2」以上なら重複あり、「1」なら一意のデータ

「重複あり」「なし」のフラグをつける

数値だけでは見づらいので、IF関数と組み合わせてフラグ文字列を表示させると管理しやすくなります。

=IF(COUNTIF($A$2:$A$100,A2)>1,”重複あり”,””)

これで、重複している行には「重複あり」と表示されます。空欄の行は一意のデータです。

最初の出現だけを「重複なし」と判定する

「同じ値が複数ある場合、最初の1件だけを有効とし、2件目以降にフラグをつけたい」という場合は、以下の数式を使います。

=IF(COUNTIF($A$2:A2,A2)>1,”重複(2回目以降)”,”初回”)

ポイントは $A$2:A2 という「開始行を固定、終了行を相対参照にした範囲」です。行が下に進むにつれて範囲が広がるため、「自分より上の行で同じ値が出た回数」をカウントできます。

複数列の複合条件での重複チェック(COUNTIFS)

「氏名とメールアドレスの両方が一致する場合だけ重複とみなしたい」という場合は、COUNTIFS関数を使います。

=COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,B2)

A列が氏名、B列がメールアドレスの場合、両方一致する行のみカウントされます。


方法3:条件付き書式で重複セルを色分けする

視覚的に重複データを確認したい場合は、条件付き書式を使って重複セルに色をつける方法が効果的です。どのデータが重複しているかひと目でわかります。

手順

ステップ1:対象範囲を選択する

  1. 重複チェックしたいセル範囲を選択します(例:A2:A100)

ステップ2:条件付き書式を設定する

  1. ホーム」タブ →「条件付き書式」→「セルの強調表示ルール」→「重複する値」をクリック
  2. 「重複する値」ダイアログが開きます
  3. 左のドロップダウンで「重複」を選択(「一意」を選ぶと逆に一意のものだけが色付けされます)
  4. 右のドロップダウンで色を選択(デフォルトは「薄い赤の塗りつぶし」)
  5. 「OK」をクリック

これで重複しているセルが選択した色で塗りつぶされます。

複数列を組み合わせた条件付き書式(数式で指定)

複数列の組み合わせで重複チェックしたい場合は、「新しいルール」から数式で条件を指定します。

  1. チェックしたい行全体(例:A2:C2)を選択した後、「ホーム」→「条件付き書式」→「新しいルール
  2. 「数式を使用して、書式設定するセルを決定」を選択
  3. 数式欄に以下を入力:
=COUNTIFS($A$2:$A$100,$A2,$B$2:$B$100,$B2)>1
  1. 「書式」から塗りつぶし色を設定して「OK」

A列とB列の両方が一致する行全体が色付けされます。

条件付き書式で色分け

方法4:UNIQUE関数で重複なしリストを抽出する(Excel 365/2021)

Excel 365またはExcel 2021以降をお使いの場合、UNIQUE関数を使うことで重複を除いたリストをワンステップで抽出できます。元のデータを変更せず、別の場所にユニークなリストを生成できるのが大きなメリットです。

UNIQUE関数の基本構文

=UNIQUE(配列, [列方向], [1回だけ出現])
引数 説明 省略時
配列 重複削除の対象となるセル範囲 (必須)
列方向 FALSEまたは0:行方向で比較(通常)、TRUEまたは1:列方向で比較 FALSE(行方向)
1回だけ出現 TRUEまたは1:1回だけ出現する値を抽出(重複しているものを除外) FALSE(重複なし一覧)

実際の使い方

例:A2:A100の名前リストから重複なし一覧をD2に表示する

=UNIQUE(A2:A100)

D2にこの数式を入力するだけで、重複を除いた一覧が自動的にD列以降に展開されます(スピル機能)。

例:複数列の組み合わせで重複なし一覧を作る

=UNIQUE(A2:B100)

A列とB列の両方が一致する行を1件にまとめた表が生成されます。

SORT関数と組み合わせる

=SORT(UNIQUE(A2:A100))

重複なしのリストをさらに昇順で並べ替えて表示できます。

UNIQUE関数が使えない場合:
Excel 2019以前では使用不可です。代わりに「重複の削除」機能またはCOUNTIF関数を使う方法を選んでください。バージョン確認:「ファイル」→「アカウント」→「Excelのバージョン情報」


方法5:フィルター機能で重複データを抽出・非表示にする

COUNTIF関数でフラグをつけた後、フィルター機能を使って重複データだけを表示させたり、重複以外のデータだけを表示させたりすることができます。

手順

  1. COUNTIF関数で「重複あり」フラグをB列に付けた状態にする
  2. 表のどこかのセルを選択 → 「データ」タブ → 「フィルター」をクリック
  3. B列のドロップダウン矢印をクリック
  4. 「重複あり」にだけチェックを入れ → 「OK」

重複しているデータだけが表示されます。この状態でデータを確認したり、削除したりすることができます。

重複を除いたデータだけを別シートにコピーする

  1. COUNTIF関数のフラグ列でフィルターをかけ、「重複あり」を非表示(フラグなしの行だけ表示)にする
  2. 表示されている行をすべて選択 → Ctrl+C でコピー
  3. 新しいシートを作成 → Ctrl+V で貼り付け

元データを残したまま、重複のないクリーンなデータセットを別シートに作成できます。


方法6:VLOOKUPで別シート・別テーブルとの重複チェック

「このリストのデータが、別のリストにも存在するかどうかを確認したい」というケースでは、VLOOKUP関数が活躍します。

基本の使い方

例:シート1のA列(氏名リスト)に、シート2のA列(登録済みリスト)と同じ名前があるかチェックする

=IFERROR(VLOOKUP(A2,Sheet2!$A:$A,1,FALSE),”未登録”)

数式の解説:

  • A2:検索するキー(シート1の氏名)
  • Sheet2!$A:$A:照合先リスト(シート2のA列全体)
  • 1:一致した場合、1列目の値を返す(=名前そのものを返す)
  • FALSE:完全一致で検索
  • IFERROR(...,"未登録"):見つからなかった場合は「未登録」と表示

結果が名前(氏名)と表示された行 → 別シートに重複あり
「未登録」と表示された行 → 別シートに存在しない(新規データ)

重複を○/×で判定する

=IF(IFERROR(VLOOKUP(A2,Sheet2!$A:$A,1,FALSE),””)=””,”新規”,”重複”)

シート2に存在する → 「重複」、存在しない → 「新規」と表示されます。


方法7:XLOOKUP関数でより柔軟な重複チェック(Excel 365/2019以降)

XLOOKUP関数はVLOOKUPの進化版です。より直感的で、エラー処理も内蔵されているため、コードがすっきりします。

基本構文

=XLOOKUP(A2, Sheet2!$A:$A, Sheet2!$A:$A, “未登録”)

引数の説明:

  • 第1引数:検索する値(A2)
  • 第2引数:検索対象の範囲(Sheet2のA列)
  • 第3引数:一致した場合に返す値の範囲(同じA列を指定 → 値そのものを返す)
  • 第4引数:見つからなかった場合の値(「未登録」)

VLOOKUPとXLOOKUPの比較

比較項目 VLOOKUP XLOOKUP
エラー処理 IFERRORを別途使う必要あり 第4引数に直接記載できる
検索方向 左から右のみ 左右どちらの方向でも可
列挿入の影響 列番号がズレる可能性あり 範囲指定なのでズレない
複数結果 最初の一致のみ 最初または最後を選択可
対応バージョン Excel 2003以降(全バージョン) Excel 365 / 2019以降

方法8:ピボットテーブルで重複を集計・確認する

重複データの個数を集計して確認したい場合は、ピボットテーブルが効果的です。特に「どの値が何回重複しているか」を一覧で把握したいときに便利です。

手順

  1. データ範囲内のいずれかのセルを選択
  2. 「挿入」タブ → 「ピボットテーブル」→「新しいシート」を選択して「OK」
  3. ピボットテーブルのフィールドリストで、重複チェックしたい列を「行」エリアにドラッグ
  4. 同じ列をもう一度「値」エリアにもドラッグ(集計方法は「個数」)

すると、各値の登場回数が一覧表示されます。「2以上」の行が重複データです。


状況別:最適な重複チェック方法の選び方

Excelには複数の重複チェック方法があります。状況に応じて使い分けることが大切です。

やりたいこと おすすめの方法 対応バージョン
すぐに重複を削除したい 重複の削除機能 全バージョン
削除前に重複箇所を確認したい 条件付き書式または COUNTIF 全バージョン
重複なしの一覧を別の場所に作りたい UNIQUE関数 365 / 2021以降
別シートのリストと照合したい VLOOKUP または XLOOKUP XLOOKUP は365以降
重複の個数を集計したい COUNTIF または ピボットテーブル 全バージョン
複数列の組み合わせで重複チェックしたい COUNTIFS または 重複の削除(複数列選択) 全バージョン
データを変更せず重複を把握したい 条件付き書式 または ピボットテーブル 全バージョン

よくあるトラブルと対処法

Q. スペースが違うだけで同じデータが重複と判定されない

原因:「田中 太郎」(スペースあり)と「田中太郎」(スペースなし)は別の文字列としてExcelに認識されます。

対処法:TRIM関数でスペースを除去してから比較します。

=COUNTIF($A$2:$A$100,TRIM(A2))

または、前処理として別列にTRIM処理したデータを作り、そちらで重複チェックする方法も有効です。

Q. 全角・半角の違いで重複判定されない

原因:「A」(全角)と「A」(半角)は別の文字として扱われます。

対処法:ASC関数で全角を半角に統一してから比較します。

=COUNTIF($A$2:$A$100,ASC(A2))

Q. 大文字・小文字を区別して重複チェックしたい

原因:COUNTIFは大文字・小文字を区別しません(「Excel」と「excel」を同じと判定)。

対処法:EXACT関数とSUMPRODUCT関数を組み合わせます。

=SUMPRODUCT((EXACT($A$2:$A$100,A2))*1)

結果が2以上なら大文字・小文字まで含めて完全一致する重複があります。

Q. 「重複の削除」を実行したら必要なデータまで消えた

対処法:Ctrl+Zで直ちに取り消しできます(保存前であれば)。保存してしまった場合はバックアップから復元してください。

今後の対策として、重複削除の前にシートのコピーを作成する習慣をつけましょう:シートタブを右クリック →「移動またはコピー」→「コピーを作成する」にチェック。

Q. UNIQUE関数が使えない(#NAME?エラーが出る)

原因:Excel 2019以前のバージョン、またはExcel for Web以外の旧バージョンでは使用できません。

対処法:「重複の削除」機能を使う方法(方法1)またはCOUNTIF+フィルター方法(方法2+5)で代替できます。

Q. 数値なのに重複と判定されない場合がある

原因:見た目は同じでも、一方が「数値型」、もう一方が「文字列型」になっている可能性があります(左揃えになっているセルは文字列型)。

対処法:数値型に統一するには、空きセルに「1」を入力 → コピー → 文字列になっているセル範囲を選択 → 形式を選択して貼り付け → 「乗算」を選択 → OK。

Q. COUNTIFで大量データを扱うと動作が重い

対処法:以下の方法で軽量化できます。

  • 範囲指定を列全体(A:A)ではなく、実際のデータ範囲(A2:A1000)に限定する
  • ピボットテーブルを使う(COUNTIFより処理が速い場合がある)
  • 数式をオフにして処理後に戻す:「数式」タブ →「計算方法の設定」→「手動」→処理後に「自動」に戻す

よくある質問(FAQ)

Q. UNIQUE関数とCOUNTIFはどちらが便利ですか?

A. 目的によって使い分けます。重複なしリストを別の場所に自動生成したい場合はUNIQUE関数が圧倒的に簡単です。元の表に重複フラグをつけたい、どの行が重複しているか確認したい場合はCOUNTIFが適しています。Excel 365/2021ユーザーはUNIQUE関数を積極的に使うことをおすすめします。

Q. 重複削除で「最後の行」を残したい(最初の行ではなく)

A. Excelの「重複の削除」機能は常に最初の行を残す仕様で、変更できません。最後の行を残したい場合は、データを逆順(下から上)に並べ替えてから「重複の削除」を実行し、その後再び昇順に並べ替えると対応できます。

Q. 重複した行をまとめて合計・集計したい

A. SUMIF関数またはピボットテーブルを使います。例えば「同じ商品名の売上を合計する」場合はSUMIF:=SUMIF($A$2:$A$100,A2,$B$2:$B$100)(A列が商品名、B列が売上額の場合)。ピボットテーブルで商品名を行、売上を値(合計)に設定してもOKです。

Q. 重複チェックの結果を別シートにまとめる方法は?

A. COUNTIF関数でフラグをつけ、フィルターで「重複あり」の行だけを表示させてからコピー&ペーストする方法が最も手軽です。Excel 365ではFILTER関数を使って動的に抽出することもできます:=FILTER(A2:C100,COUNTIF(A2:A100,A2:A100)>1)

Q. 日付データの重複チェックで注意することは?

A. 日付型と文字列型が混在していると正しく重複判定されません。セルの書式を「日付」に統一してから処理することが重要です。また、「2026/1/1」と「2026/01/01」は同じ日付として扱われますが、テキストとして入力されていると別の値と判定されることがあります。

Q. 重複チェックにマクロ(VBA)を使うべきですか?

A. データ量が少なく(1万行以下)、操作が1回限りであれば関数や組み込み機能で十分です。毎日・毎週定期的に同じ処理を繰り返す場合や、10万行以上の大量データを扱う場合はVBAマクロで自動化するとよいでしょう。ただしVBAはプログラミングの知識が必要です。

Q. Google スプレッドシートでも同じ方法が使えますか?

A. 基本的なCOUNTIF関数と条件付き書式の重複ハイライトはGoogle スプレッドシートでも使用可能です。UNIQUE関数もスプレッドシートで使えます(関数名・書式はほぼ同じ)。ただし「重複の削除」機能はスプレッドシートには存在しないため、「データ」→「データクリーンアップ」→「重複を削除」から代替機能を利用してください。

Q. 重複を削除した後、行番号を連番に振り直したい

A. 重複削除後に行番号がズレる(飛び番になる)ことがありますが、これはExcelの仕様です。連番を振り直すには、隣の列に=ROW()-1(1行目がヘッダーの場合)や=SEQUENCE(COUNTA(A:A)-1)(SEQUENCE関数、Excel 365)を入力します。または単純に「1」「2」と入力してオートフィルするだけでも十分です。

Q. 重複削除で一方のデータを優先したい(更新日時が新しい行を残すなど)

A. Excelの標準「重複の削除」では特定条件での優先制御はできません。この場合は、「更新日時」列で降順に並べ替えてから重複削除を実行することで「最新の行を残す」処理を再現できます。

Q. 重複データが大量にあって処理が遅い場合は?

A. 数式の計算方法を「手動」に切り替えてから一括処理し、完了後に「自動」に戻す方法が有効です。また、Power Queryを使うと大量データでも高速に重複削除ができます(「データ」→「データの取得と変換」→「テーブルまたは範囲から」→「重複の削除」)。


まとめ:Excelの重複データ削除・抽出は状況に応じて使い分けよう

Excelで重複データを扱う方法は、大きく分けて以下の8種類です。

方法 難易度 おすすめシーン
重複の削除機能 ★☆☆(簡単) 手っ取り早く削除したい
COUNTIF関数 ★★☆(中程度) 削除前に確認・フラグ付けしたい
条件付き書式 ★☆☆(簡単) 視覚的に重複を確認したい
UNIQUE関数 ★☆☆(簡単) 別セルに重複なし一覧を作りたい
フィルター ★☆☆(簡単) 重複行だけを抽出・確認したい
VLOOKUP関数 ★★☆(中程度) 別シートのリストと照合したい
XLOOKUP関数 ★★☆(中程度) VLOOKUPより柔軟に照合したい
ピボットテーブル ★★☆(中程度) 重複件数を集計・可視化したい

最初に取り組む方には「重複の削除機能」と「条件付き書式」の2つだけ覚えておけば、大半のケースに対応できます。

より高度な活用をしたい場合は、COUNTIF関数でフラグ管理する方法と、Excel 365ユーザーならUNIQUE関数が非常に強力です。ぜひ自分の業務に合った方法を試してみてください。

この記事のポイントまとめ

  • すぐ削除したい → データタブの「重複の削除」機能が最速
  • 削除前に確認したい → 条件付き書式で重複セルを色付け
  • フラグをつけて管理 → COUNTIF関数で個数カウント
  • 別セルに抽出したい → UNIQUE関数(365/2021以降)
  • 別シートと照合したい → VLOOKUP・XLOOKUP関数
  • 複数列での重複チェック → COUNTIFS関数または重複の削除(複数列選択)
  • 削除前に必ずバックアップを取ること

Check Also

【2026年最新版】ExcelのFLOOR・CEILING・ROUND関数で数値を丸める方法【完全ガイド】

Excelで数値を扱っていると …