Excel で重複を安全に見つけて削除する方法
Excel の重複を数え、確認してから削除する手順。判定列と残すレコードを決め、変更前後の行数を検証します。
データ → 重複の削除 は、選んだ列で判定し、最初のレコードを残して後続の一致レコードを選択範囲から削除します。ダイアログで判定列を確認してから確定してください。操作が元に戻す履歴に残っている間は 元に戻す / Ctrl+Z を使えますが、元データのコピーも保存しましょう。Microsoft の重複削除ガイドも参照してください。
安全なワークフローはこうです。数える → 確認する → どの行を残すか決める → それから削除する。各ステップを見ていきましょう。
ステップ 1:何かに触る前に重複を数える
キーが 1 列の場合(たとえば B 列のメールアドレス):
=COUNTIF($B$2:$B$5000, B2)
1 を超える値は重複グループの印です。複数列の組み合わせで定義される重複(同じ顧客かつ同じ日付かつ同じ金額)の場合:
=COUNTIFS($A$2:$A$5000,A2, $C$2:$C$5000,C2, $D$2:$D$5000,D2)
これを Copies という名前の作業列として追加し、>1 でフィルターすれば、影響を受ける行を一度に確認できます。
強調表示する場合は、判定列を選択 → ホーム → 条件付き書式 → セルの強調表示ルール → 重複する値 です。このルールは選択範囲の個々のセル値を比較し、複数列を一つのレコードとして比較するものではありません。複合キーには COUNTIFS を使います。
ステップ 2:「重複」の定義を決める
重複削除の仕事に潜む厄介なバグは、削除そのものではなく、定義にあります。
- 大文字小文字と空白。
COUNTIFは大文字と小文字を区別しないため、ACME Corpとacme corpは一致します。余分な空白は一致を妨げることがあるので、必要に応じてTRIMで整えます。COUNTIF に大文字小文字を無視させるためのLOWERは不要です。Microsoft の COUNTIF 解説とクリーニング手順を参照してください。 - 同じキー、異なるデータ。 メールアドレスは同じで電話番号が違う 2 行は、重複ではありません。それは競合であり、削除ではなくマージが必要です。
- 正当な繰り返し。 取引シートで同じ顧客が 2 回現れるのは正常です。重複判定のキーには、本物の二重登録を特定できるだけの列を含める必要があります。
ステップ 3:どの行を残すか選ぶ
Excel の組み込みツールは常に最初の出現行——一番上の行——を残します。最新のレコードを残したい場合は、重複の削除を実行する前に日付列で降順に並べ替え、各グループの先頭に最新の行が来るようにしてください。
数式で残す行をマークする方法もあります(最初の出現を残す場合):
=IF(COUNTIF($B$2:B2, B2)=1, "keep", "remove")
拡張参照 $B$2:B2 は現在の行までの出現回数だけを数えるため、最初の行には "keep"、以降の行には "remove" が付きます。"remove" の行をフィルターして削除します——もちろん確認してから。
ステップ 4:削除して、件数を検証する
どの方法で削除するにしても、必ず検証してください。削除前の行数 − 削除後の行数が "remove" フラグの数と一致するはずです。一致しなければ、手を止めて確認しましょう。
指示ひとつで済ませる方法
AI for Excel なら、正規化・カウント・確認・残す行の選択・削除・検証というワークフロー全体が、言葉で伝えるだけの作業になります。
「メールアドレスで重複行を探して。大文字小文字と余分なスペースは無視。電話番号が食い違う重複は削除せずフラグを付けて。それ以外は Updated 列で最新の行を残して。確定前にサマリーを見せて。」
GetSheetAI には別の結果シートと削除候補の一覧を作るよう依頼してください。原本を残し、キー、競合、行数を確認してから結果を採用します。GetSheetAI の機能またはダウンロードをご覧ください。
よくある質問
重複を削除しつつ最新のエントリを残すには?
まず日付列で降順に並べ替えます。重複の削除は各グループの最初の行を残すため、並べ替え後は最新の行が残ります。または作業列の数式で最新以外にフラグを付け、確認してから削除する方法もあります。
なぜ Excel は見た目の違う値を重複として検出するのですか?
COUNTIF は大文字と小文字の違いを無視します。一方、余分な空白やデータ型の違いが意図した一致を妨げることがあります。キーを確認し、業務上意味のない違いだけを正規化してください。
Excel は重複として削除した行を表示できますか?
組み込みツールでは無理です。報告されるのは件数だけです。監査証跡が必要なら、作業列を使う方法か、削除した各行をログに残すアシスタントを使ってください。

