Excelの「重複の削除」は便利ですが、仕組みを理解せずに押すと、必要な行まで消すことがあります。
ポイントは、チェックを入れた列が重複判定の条件になることです。
「同じ行」を探しているとは限らない
たとえば次の表があります。
|顧客ID|氏名|メール|
|---|---|---|
|001|田中太郎|a@example.com|
|002|田中太郎|b@example.com|
この2行は、氏名だけ見れば重複しています。しかし顧客IDもメールも違います。
「氏名」だけにチェックを入れて重複削除を実行すれば、どちらか一方を重複として消すことになります。
反対に、顧客ID・氏名・メールの3列すべてを選べば、この2行は別レコードとして残ります。
選んだ列の組み合わせがキーになる
実務では「どの列が同じなら同一人物・同一取引とみなすか」を先に決めます。
- 顧客IDだけ
- メールアドレスだけ
- 商品コード+日付
- 氏名+電話番号
など、目的によって判定条件は変わります。
重複削除は、その判断をExcelに代わって考えてくれる機能ではありません。ユーザーが選んだ列の一致を機械的に見ていると考えた方が安全です。
先に「削除」ではなく「確認」をする
Microsoftも、一意の値をフィルターする方法、条件付き書式で重複を強調する方法、重複を削除する方法を別の操作として案内しています。
実務では、いきなり削除するより、
- 条件付き書式で重複候補を強調
- フィルターで候補を確認
- どちらを残すか決める
- 元ファイルをコピー
- その後に削除
の順が安全です。
「名前が同じ」は重複とは限らない
名簿では同姓同名があります。会社名も表記揺れがあります。
「株式会社青空」と「青空株式会社」を同じ会社としてまとめたい場合は、単純な重複削除より名寄せの問題です。
名寄せでは、表記を正規化したり、住所や電話番号など複数の属性を見て候補を作ったりします。
重複削除は「同じ値の行を落とす」機能であり、「同じ相手か判断する」機能ではありません。
削除後は件数を確認する
削除前後で、
- 行数はいくつ減ったか
- 想定していた重複件数と合うか
- 残すべき代表行が残っているか
を確認してください。
「10件くらい減るはず」が「300件減った」なら、列の選択を間違えた可能性があります。
どの行が残り、どの行が消えるのか
Microsoftの現行仕様では、選択したキー列が同じ行が複数ある場合、一覧の先頭にある最初の出現を残し、それ以降の同一行を削除します。
たとえば「メール」だけを重複判定に使う場合、
|行|氏名|メール|
|---:|---|---|
|2|田中 太郎|a@example.com|
|8|田中 T.|a@example.com|
なら、行2が先に出ているため行2が残り、行8が削除対象になります。
つまり、「更新日が新しい方を自動で残す」「情報が多い方を判断して残す」といった賢い選択はしてくれません。
最新行を残したいなら、削除前に順序を作る
「更新日が新しいレコードを残す」と決めているなら、
- 元データをコピー
- 更新日で新しい順に並べる
- 重複判定に使う列を確認
- 「重複の削除」を実行
- 残った行が想定どおりか確認
という流れにします。
ただし、並べ替え自体もデータ順を変える操作です。元データを固定し、何を残すかというルールを決めてから実行してください。
参考
- Microsoft Support: 重複しない値を抽出する、または重複する値を削除する
https://support.microsoft.com/ja-jp/Excel/get-started/filter-for-unique-values-or-remove-duplicate-values
