office

エクセルで重複を削除して1つだけ残す方法は?簡単な手順を解説!

エクセルで大量のデータを扱う際、リスト内に重複した情報が含まれていることは珍しくありません。アンケートの集計、顧客リストの管理、売上データの分析など、様々な場面でデータの重複は発生し得ます。このような時、エクセル重複したデータを削除し、1つだけ残すという作業が必要になるかもしれません。単純なデータであれば手作業で修正も可能ですが、データ量が膨大になると現実的ではありません。特に複数列にわたる条件で重複を判断したい場合や、エクセル重複データの一番上だけ残すといった具体的な処理が求められると、操作に迷うこともあるでしょう。エクセル重複1つだけ抽出したり、エクセル重複1つだけ表示するためにフィルター機能を活用する方法も考えられます。また、単純に削除するだけでなく、エクセル重複1つだけカウントしてデータのユニーク数を把握したり、エクセル重複削除関数で行う方法、あるいはエクセル重複データまとめるために関数を駆使するテクニックも存在します。効率化を極めるなら、VBAを用いてエクセル重複削除1つ残す処理を自動化することも選択肢に入ります。この記事では、エクセルで重複データを整理するための様々なアプローチについて、基本的な手順から応用的なテクニックまで幅広く解説していきます。

・エクセルの標準機能を使った重複削除の具体的な手順がわかります

・フィルター機能を利用して重複データを非表示にする方法を学べます

・関数(UNIQUE関数やCOUNTIF関数など)を用いた重複データの処理方法が理解できます

・VBA(マクロ)による重複削除の自動化に関する基本的な考え方に触れられます

エクセルで重複を削除し1つだけ残す基本機能

ここでは、エクセルの標準機能を中心に、エクセル重複したデータを削除して1つだけ残すための基本的な操作方法について説明していきます。これらの機能は、多くの場合、迅速かつ簡単にデータ整理を行う手助けとなるでしょう。順に見ていきましょう。

・重複の削除機能の基本的な使い方

・フィルターで重複を1つだけ表示

・エクセルで重複を一番上だけ残す工夫

・複数列で重複を削除し1つ残す方法

・ピボットテーブル利用の重複抽出

・重複削除時の注意点とバックアップ

重複の削除機能の基本的な使い方

エクセルには、重複したデータを簡単に見つけて削除するための専用機能が備わっています。これは「データ」タブの中にある「重複の削除」という機能です。この機能を利用することで、指定した列に基づいて重複を判定し、該当する行を削除してユニークなデータだけを残すことが可能になります。

操作手順は非常にシンプルです。まず、処理対象となるデータ範囲を選択します。データ範囲全体、あるいは特定の列だけを選択することもできます。次に、「データ」タブをクリックし、「データツール」グループの中にある「重複の削除」アイコンを選択します。すると、ダイアログボックスが表示され、どの列を基準に重複を判定するかを選択する画面が現れます。データに「先頭行を見出しとして使用する」場合は、該当のチェックボックスをオンにすると、列名で選択できて便利です。

例えば、A列の「氏名」だけを基準にするならA列にのみチェックを入れます。この機能の大きなメリットは、プログラミングや複雑な関数を知らなくても、数クリックで重複処理が完了する点にあります。ただし、注意点として、この操作は元に戻す(Ctrl+Z)ことが可能とはいえ、一度実行すると元のデータが変更されてしまいます。どのデータが残されるか(通常はリストの最初に出現したもの)を意識しておく必要もあるでしょう。

フィルターで重複を1つだけ表示

データを削除するのではなく、一時的にエクセル重複1つだけ表示させたい場合、フィルター機能の「詳細設定」(フィルタオプション)が役立つかもしれません。「重複の削除」機能が元データを直接変更してしまうのに対し、こちらは元データを保持したまま、重複を除いたリストを別(あるいは同じ場所)に抽出できる点が大きな違いです。

この機能を使うには、まずリスト範囲(データ全体)を指定します。次に、「データ」タブの「並べ替えとフィルター」グループにある「詳細設定」をクリックします。ダイアログボックスが開いたら、「抽出先」として「選択範囲内」(元の場所で非表示にする)または「指定した範囲」(別の場所に抽出する)を選びます。そして、最も重要なのが「重複するレコードは無視する」というチェックボックスです。ここにチェックを入れることで、エクセルは重複データを判定し、ユニークなデータ(最初に出現したもの)だけを表示または抽出します。

この方法のメリットは、前述の通り元データを安全に保てることです。分析のために一時的にユニークなリストが欲しい場合や、どのデータが重複しているかを確認したい場合に適していると考えられます。一方で、「重複の削除」機能に比べると、ダイアログボックスでの設定項目が少し多く、操作がやや複雑に感じられる可能性はあります。

エクセルで重複を一番上だけ残す工夫

エクセル重複データを処理する際、多くの標準機能(例えば「重複の削除」や「詳細設定フィルター」)は、基本的にデータリストの上から順に判定し、一番上だけ残す(最初に出現したデータを残す)仕様になっています。これは多くの場合において直感的で便利な挙動と言えるでしょう。

しかし、もし「一番下」のデータ(最後に出現したデータ)を残したい、あるいは特定の条件(例:日付が最も新しいもの)に基づいて残すデータを決めたい場合は、一工夫必要になるかもしれません。

最も簡単な対策は、重複処理を実行する前に「並べ替え」を行うことです。例えば、A列に氏名、B列に登録日があり、氏名が重複している場合に最新の登録日(一番下のデータ)を残したいとします。この場合、まずB列(登録日)を「昇順」(古い順)で並べ替えます。すると、同じ氏名の中では古いデータが上に来て、新しいデータが下に来ます。この状態で「重複の削除」機能(A列の氏名基準)を実行すると、一番上、つまり「最も古いデータ」が残ります。

逆に「最も新しいデータ」を残したい場合は、B列(登録日)を「降順」(新しい順)で並べ替え、その後に「重複の削除」を実行します。こうすることで、一番上に最新データが配置されるため、重複削除後も最新のデータが残る結果となります。このように、データをどのような順序で並べてから処理するかが、結果を左右する重要なポイントになる場合があります。

複数列で重複を削除し1つ残す方法

エクセル重複削除1つ残す処理は、多くの場合、単一の列(例えば氏名だけ、商品コードだけ)ではなく、複数列の組み合わせで判断する必要があります。例えば、「同姓同名の別人」がいる場合、氏名列だけを基準に重複削除すると、異なる人物のデータまで消えてしまう恐れがあります。

このようなケースに対応するため、「重複の削除」機能では、複数の列を判定基準として設定することが可能です。操作は簡単です。「重複の削除」ダイアログボックスが表示された際に、重複判定のキーとして使用したい全ての列にチェックを入れるだけです。

例えば、「氏名」列と「生年月日」列の両方にチェックを入れた場合、エクセルは「氏名」と「生年月日」の両方が完全に一致する行のみを「重複」として認識します。氏名が同じでも生年月日が異なれば、それは別のデータとして保持されます。この機能は、エクセル重複削除1つ残す際に、複数列の条件を組み合わせたい場合に非常に強力です。

このアプローチのメリットは、データの精度を格段に向上させられる点にあります。ただし、どの列の組み合わせを「重複」と定義するかを、作業前に明確にしておく必要があります。意図しない列にチェックが入っていたり、必要な列にチェックが漏れていたりすると、期待通aりの結果が得られないため、ダイアログボックスの確認は慎重に行うことが推奨されます。

ピボットテーブル利用の重複抽出

重複を「削除」するのではなく、データの中にどれだけ重複が存在するのか、あるいはどのデータが重複しているのかを「特定」したい場合、ピボットテーブルを活用するアプローチも考えられます。これは、エクセル重複1つだけカウントするというサブキーワードのニーズにも関連する方法です。

ピボットテーブルは、本来データを集計・分析するための強力なツールですが、その特性を利用して重複の可視化が可能です。まず、重複をチェックしたいデータ範囲を選択し、「挿入」タブから「ピボットテーブル」を作成します。

次に、ピボットテーブルのフィールドリストで、重複を判定したい列(例:氏名)を「行」エリアにドラッグします。さらに、同じ「氏名」列を「値」エリアにもドラッグします。「値」エリアの設定が「合計」になっている場合は、「個数」に変更します。

こうして作成されたピボットテーブルは、各氏名が元のデータに何回出現したか(個数)を集計したリストになります。この結果、「個数」が「2」以上になっているデータが、元のリストで重複しているデータであることを示します。

この方法のメリットは、元データを一切変更せずに、重複の状況を一覧で把握できる点です。どのデータが何件重複しているかを明確に確認した上で、次のアクション(削除するのか、修正するのか)を決定できます。ただし、これはあくまで重複を「特定」し「カウント」する方法であり、直接的に重複を削除して1つだけを残す機能ではない点には留意が必要です。

重複削除時の注意点とバックアップ

エクセルの「重複の削除」機能は非常に便利ですが、実行には細心の注意が求められます。なぜなら、この機能は選択されたデータ範囲内の行を物理的に「削除」するからです。一度削除を実行し、その後ファイルが保存されてしまうと、削除されたデータを取り戻すことは基本的にできません(「元に戻す」が効く間は別ですが)。

したがって、最も重要なルールは「実行前に必ずバックアップを取る」ことです。作業対象のシート全体をコピーして新しいシートを作成する、あるいはファイル自体を別名で保存するなど、万が一失敗しても元の状態に戻せる準備を整えておくことが賢明です。

また、非表示になっている行や列が処理にどう影響するかも意識する必要があります。一般的に「重複の削除」機能は、非表示の行も処理対象に含んでしまいます。もし非表示の行にある重要なデータを残したい場合、意図せず削除されてしまうリスクがあるため、処理前に再表示させておくか、処理対象の範囲を慎重に選択する必要があります。

さらに、データがテーブル(「挿入」タブの「テーブル」機能)として書式設定されている場合、挙動が少し異なる可能性もゼロではありません。

どの列をキーとして重複を判定するか、先頭行を見出しとして正しく認識しているかなど、ダイアログボックスの設定を再三確認することが、意図しないデータ損失を防ぐ鍵となります。

関数やVBAでエクセルの重複を削除し1つ残す応用術

ここでは、標準機能だけでは対応が難しい場合や、より柔軟な処理、あるいは作業の自動化を目指す場合に役立つ、関数やVBAを用いたエクセル重複削除1つだけ残すための応用的な手法について解説していきます。順に見ていきましょう。

・エクセルの重複削除に関数を使う

・COUNTIF関数で重複を1つだけ抽出

・エクセルの重複データをまとめる関数

・エクセルで重複を1つだけカウントする

・VBAで重複を削除し1つ残す処理

・エクセルで重複を削除し1つ残す方法の総括

エクセルの重複削除に関数を使う

Microsoft 365やExcel 2021以降のバージョンを利用している場合、エクセル重複削除関数で行う最も簡単で強力な方法として「UNIQUE(ユニーク)関数」が挙げられます。この関数は、指定した範囲から重複する値を除いた、ユニークな値のリストを自動的に生成(スピル)します。

使い方は非常にシンプルで、=UNIQUE(範囲)と入力するだけです。例えば、A2からA100までにデータが入力されている場合、別のセル(例:C2)に=UNIQUE(A2:A100)と入力すると、C2セルを起点として、A列のデータから重複を除いたリストが自動的に展開されます。

この関数の最大のメリットは、元データを一切変更しないことです。「重複の削除」機能のように元のデータが消えてしまう心配がなく、安全にユニークなリストを作成できます。また、元データの範囲が変更されると、UNIQUE関数の結果も自動的に更新される(動的配列)ため、メンテナンス性にも優れています。

複数列を対象にすることも可能です。=UNIQUE(A2:B100)のように指定すれば、A列とB列の組み合わせがユニークなデータだけを抽出します。

ただし、この関数は比較的新しいバージョンのエクセルでしか利用できません。古いバージョン(Excel 2019以前など)では使用できないため、環境に応じた別のアプローチが必要になる場合があります。

COUNTIF関数で重複を1つだけ抽出

UNIQUE関数が使えない古いバージョンのエクセル環境でも、関数を組み合わせてエクセル重複1つだけ抽出する作業は可能です。その代表的な方法が、COUNTIF(カウントイフ)関数とフィルター機能を組み合わせるテクニックです。

この方法では、まず作業列(元のデータの隣など)を1列用意します。仮にデータがA列(A2から)にあるとし、B列を作業列とします。B2セルに、=COUNTIF($A$2:A2, A2)という数式を入力します。この数式のポイントは、範囲指定の開始位置($A$2)を絶対参照($マーク)にし、終了位置(A2)を相対参照にすることです。

この数式をB列の下までコピー(オートフィル)すると、各行のデータが「その行より上を含めて」何回出現したかをカウントします。最初に出現したデータは「1」、2回目に出現したデータは「2」、3回目は「3」とカウントされます。

カウントが完了したら、データ範囲全体にフィルターを設定します。そして、作業列(B列)で「1」だけを絞り込みます。こうすることで、各データの最初に出現したもの(重複を除いたユニークなデータ)だけが表示されます。

この方法は、元データを削除せずに重複を除いたリストを得られるメリットがあります。ただし、作業列が必要になる点や、手順がUNIQUE関数に比べて多い点がデメリットと言えるかもしれません。

エクセルの重複データをまとめる関数

データの重複処理において、単にエクセル重複削除1つだけ残すのではなく、エクセル重複データまとめる(集計する)必要があるケースも多々あります。例えば、商品名が重複しているリストで、重複を削除する代わりに、商品ごとの売上数量を合計したい場合などです。

このようなニーズには、SUMIF(サミフ)関数やSUMIFS(サミフエス)関数が非常に有効です。SUMIF関数は、特定の条件(例:商品名が「りんご」)に一致するデータの合計(例:売上数量)を計算します。SUMIFS関数は、複数の条件(例:商品名が「りんご」かつ店舗が「A店」)に一致するデータを合計できます。

まず、UNIQUE関数や前述のCOUNTIFとフィルターの方法などで、重複を除いた商品名のリストを作成します。次に、そのリストの横にSUMIF関数を設置し、=SUMIF(元のデータの商品名列, ユニークなリストの商品名セル, 元のデータの売上数量列)のように指定します。

これにより、重複していた商品名ごとに集計された売上数量のリストが完成します。これは「重複を削除する」のとは異なりますが、重複データを活用して新しい知見を得るための重要なデータ整理術の一つです。

もちろん、こうした集計作業はピボットテーブルの最も得意とするところでもあります。関数を使うかピボットテーブルを使うかは、データの構造や更新頻度、最終的なアウトプットの形式によって選択するのが良いでしょう。

エクセルで重複を1つだけカウントする

データを削除したり抽出したりする前に、そもそも「ユニークなデータ(重複を除いたデータ)が何件あるのか」を知りたい場合があります。つまり、エクセル重複1つだけカウント(ユニークカウント)する作業です。

Microsoft 365やExcel 2021以降であれば、UNIQUE関数とCOUNTA関数(空白以外のセルを数える)を組み合わせるのが最も簡単です。=COUNTA(UNIQUE(範囲))と入力するだけで、指定した範囲内のユニークなデータ件数を瞬時に計算できます。

UNIQUE関数が使えない古いバージョンでは、少し複雑な数式が必要になることがあります。代表的なのは、SUMPRODUCT関数とCOUNTIF関数を組み合わせた=SUMPRODUCT(1/COUNTIF(範囲, 範囲))という数式です。この数式は、各データが出現する回数の逆数(例えば3回出現するデータは1/3)を計算し、それらを合計(SUMPRODUCT)することで「1」にします。これにより、重複を除いた件数を算出できます。(ただし、この数式は空白セルがあるとエラーになるため、対象範囲に空白を含まないよう注意が必要です)。

また、ピボットテーブルを作成し、重複を判定したい列を行ラベルに配置し、その行数を数える(または値フィールドの「個数」を見る)ことでも、実質的にユニークな件数を確認することが可能です。

VBAで重複を削除し1つ残す処理

毎回同じような重複削除作業を繰り返している場合や、データ量が数万~数十万行と非常に多く、標準機能や関数では処理に時間がかかりすぎる場合には、VBA(マクロ)を使ってエクセル重複削除1つ残す処理を自動化することが有効な選択肢となります。

VBAには、標準機能の「重複の削除」をそのまま実行するRemoveDuplicatesメソッドが用意されています。Range("A1:C100").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYesのように記述することで、「A1からC100の範囲で、1列目と2列目を基準に、先頭行を見出しとして重複削除する」といった処理をコードで実行できます。これをマクロとして登録しておけば、ボタン一つで作業を完了させることが可能です。

また、より高速な処理が求められる場合、VBAの「Dictionary(ディクショナリ)オブジェクト」という機能を利用する方法もあります。これは、データをメモリ上に読み込み、キー(重複を判定したいデータ)が既に追加されているかを高速にチェックする方法です。データが大量にある場合、RemoveDuplicatesメソッドよりも格段に速く処理が完了する可能性があります。

VBAを利用するメリットは、処理の高速化と自動化に尽きます。一方で、VBAのコードを記述し、メンテナンスするためには専門的な知識が必要になる点がデメリットです。

エクセルで重複を削除し1つ残す方法の総括

今回はエクセル重複削除1つだけ残すための様々な方法についてお伝えしました。以下に、本記事の内容を要約します。

・エクセルの「重複の削除」機能が最も手軽な方法である

・「重複の削除」は「データ」タブの「データツール」内にある

・「重複の削除」は元データを直接変更するためバックアップが推奨される

・複数列を基準に重複を判定することも可能である

・「詳細設定フィルター」で元データを残したまま重複を除外抽出できる

・フィルターの「重複するレコードは無視する」オプションを活用する

・多くの機能はリストの「一番上」のデータを残す仕様である

・残したいデータを一番上にするため事前に「並べ替え」が有効である

・ピボットテーブルで行の個数を数え重複を特定できる

エクセル重複1つだけカウントするにはUNIQUEとCOUNTAの組み合わせが便利である

・古い環境ではSUMPRODUCTとCOUNTIFでユニークカウントも可能である

・UNIQUE関数(新しいバージョン)は重複を除いたリストを自動生成する

・COUNTIF関数とフィルターで古いバージョンでも重複抽出が可能である

エクセル重複データまとめる(集計する)ならSUMIF関数やピボットが有効である

VBARemoveDuplicatesメソッドで重複削除を自動化できる

エクセルで重複データを扱う方法は一つではありません。データを完全に削除したいのか、元データを残したいのか、あるいは集計したいのかによって、最適なアプローチは異なります。ご自身の利用環境やデータの状況に合わせて、最も効率的で安全な方法を選択することが重要です。

本記事で紹介した内容が、日々のデータ整理作業の一助となれば幸いです。

CTAサンプル

これはCTAサンプルです。
内容を編集するか削除してください。