Excelで大量データから重複値を検索する方法

100万件程の大量データの中で重複するデータを見つける方法を紹介します。

  • 前提条件
    検証で使用した環境は次の通りです。
    RAND()関数で作成した約100万件(Excelの最大行数となる1,048,576個)のデータを使用しています。

    PCAMD Ryzen 5 3400G, メモリ: 16GB, SSD: 256GB
    OSWindows 10(64ビット)
    OfficeMicrosoft Office Professional Plus 2019
    (Microsoft® Excel® 2019 MSO (16.0.14228.20216) 32 ビット )
  • 重複検出方法の比較
    1. 単純案 ※ダメな案

      • COUNTIF関数を使って同じ値を持つセル数をカウントします。
        重複している個所は、2以上の値になります。
      • これをExcelの最大行数(約100万件)に適用すると、数分間応答がなくなります。
      • 重複個所のみを表示するようフィルタすると、応答が返ってきません。
    2. 改善案

      • 対象データを事前にソートし、一つ前の値と一致するかを確認する式を使用します。
        重複している個所は、TRUEになります。

      • ソート処理は非常に速く、約100万件のソートでも数秒で完了します。
      • 重複個所のみ表示するようフィルタすると、数十秒程かかりますが、応答は返ってきます。
  • 性能の違いの説明
    データ件数に応じた比較回数と計算量を次に示します。

    方法案平均比較回数
    (100件想定)
    平均比較回数
    (100万件想定)
    計算量
    単純案100 × 100 ÷ 21,000,000 × 1,000,000 ÷ 2O(n2)
    改善案1001,000,000O(n)