Excelの「重複の削除」は便利ですが、仕組みを理解せずに押すと、必要な行まで消すことがあります。

ポイントは、チェックを入れた列が重複判定の条件になることです。

「同じ行」を探しているとは限らない

たとえば次の表があります。

|顧客ID|氏名|メール|
|---|---|---|
|001|田中太郎|a@example.com|
|002|田中太郎|b@example.com|

この2行は、氏名だけ見れば重複しています。しかし顧客IDもメールも違います。

「氏名」だけにチェックを入れて重複削除を実行すれば、どちらか一方を重複として消すことになります。

反対に、顧客ID・氏名・メールの3列すべてを選べば、この2行は別レコードとして残ります。

選んだ列の組み合わせがキーになる

実務では「どの列が同じなら同一人物・同一取引とみなすか」を先に決めます。

  • 顧客IDだけ
  • メールアドレスだけ
  • 商品コード+日付
  • 氏名+電話番号

など、目的によって判定条件は変わります。

重複削除は、その判断をExcelに代わって考えてくれる機能ではありません。ユーザーが選んだ列の一致を機械的に見ていると考えた方が安全です。

先に「削除」ではなく「確認」をする

Microsoftも、一意の値をフィルターする方法、条件付き書式で重複を強調する方法、重複を削除する方法を別の操作として案内しています。

実務では、いきなり削除するより、

  1. 条件付き書式で重複候補を強調
  2. フィルターで候補を確認
  3. どちらを残すか決める
  4. 元ファイルをコピー
  5. その後に削除

の順が安全です。

「名前が同じ」は重複とは限らない

名簿では同姓同名があります。会社名も表記揺れがあります。

「株式会社青空」と「青空株式会社」を同じ会社としてまとめたい場合は、単純な重複削除より名寄せの問題です。

名寄せでは、表記を正規化したり、住所や電話番号など複数の属性を見て候補を作ったりします。

重複削除は「同じ値の行を落とす」機能であり、「同じ相手か判断する」機能ではありません。

削除後は件数を確認する

削除前後で、

  • 行数はいくつ減ったか
  • 想定していた重複件数と合うか
  • 残すべき代表行が残っているか

を確認してください。

「10件くらい減るはず」が「300件減った」なら、列の選択を間違えた可能性があります。

どの行が残り、どの行が消えるのか

Microsoftの現行仕様では、選択したキー列が同じ行が複数ある場合、一覧の先頭にある最初の出現を残し、それ以降の同一行を削除します。

たとえば「メール」だけを重複判定に使う場合、

|行|氏名|メール|
|---:|---|---|
|2|田中 太郎|a@example.com|
|8|田中 T.|a@example.com|

なら、行2が先に出ているため行2が残り、行8が削除対象になります。

つまり、「更新日が新しい方を自動で残す」「情報が多い方を判断して残す」といった賢い選択はしてくれません。

最新行を残したいなら、削除前に順序を作る

「更新日が新しいレコードを残す」と決めているなら、

  1. 元データをコピー
  2. 更新日で新しい順に並べる
  3. 重複判定に使う列を確認
  4. 「重複の削除」を実行
  5. 残った行が想定どおりか確認

という流れにします。

ただし、並べ替え自体もデータ順を変える操作です。元データを固定し、何を残すかというルールを決めてから実行してください。

参考

  • Microsoft Support: 重複しない値を抽出する、または重複する値を削除する
    https://support.microsoft.com/ja-jp/Excel/get-started/filter-for-unique-values-or-remove-duplicate-values
おすすめの記事