Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

Excelユーザーは日々の業務の中で、データセットに含まれる重複したエントリに悩まされることが少なくありません。そんなときに便利なのが、フィルターオプション(詳細設定)による「一意のレコードのみ」の抽出機能です。Excelの標準機能に加えて、UNIQUE関数(Excel 365限定)やVBAマクロを活用すれば、重複を除外した一意のレコードだけを効率的に取り出せます。

ここでは、同一のエントリが複数含まれるデータセットを例に、「重複を削除し、それぞれ1件だけを残す」操作方法を解説します。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

本記事では、一意のレコードのみを抽出するための複数のアプローチを順番に紹介していきます。

サンプルワークブックのダウンロード

Excelで一意のレコードのみを抽出する4つの方法

方法1:「フィルターオプション」機能で一意のレコードを抽出する

Excelでは、データタブにフィルターオプション(詳細設定)が用意されており、この機能を使えば一意の値だけを抽出できます。つまり、重複しているレコードから1件だけを残し、残りを除外できるのです。

まずデータセットを確認すると、3組の同一レコードが見つかります。そこで、各組から1件だけを残して、残りの重複を取り除く必要があります。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

ステップ1: 対象となる範囲全体を選択し、データタブ > 並べ替えとフィルターグループ内の詳細設定をクリックします。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

ステップ2: フィルターオプションのダイアログボックスが表示されたら、以下のように設定します。

  • アクション:「指定した範囲にコピー」を選択
  • リスト範囲:自動的に選択されます(例:B4:F17)
  • コピー先:抽出結果の出力先を指定(例:H4)
  • 重複するレコードは無視する」にチェックを入れる
  • OKをクリック

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

OKをクリックすると、ダイアログの「コピー先」で指定した場所に、一意のレコードだけが出力されます。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

🔁 検索条件を指定して一意のレコードを絞り込む

検索条件を組み合わせれば、必要なレコードだけをピンポイントで探すことも可能です。たとえば、注文日商品数量に関する条件を設定し、「特定の日(2022/2/3)に一定量(>50)以上売れた商品のレコード」を抽出したいケースを考えてみましょう。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

➤ 上記のステップ1と同じ手順でフィルターオプションダイアログを開き、ステップ2と同様の設定を行ったうえで、検索条件範囲に条件セルの範囲(例:G6:J7)を指定します。最後にOKをクリックしてください。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

⧬ 注意点として、検索条件範囲には必ず列見出し(ヘッダー行)も含めて選択してください。

OKをクリックすると、フィルターオプションが条件を満たすレコードだけを抽出します。下の画像のような結果になります。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

この例では、条件を満たすレコードがデータセット内に1件しか存在しないため、抽出結果も1件のみとなっています。

方法2:UNIQUE関数で一意のレコードのみを抽出する

ExcelのUNIQUE関数を使えば、一意のレコードだけを簡単に抽出できます。ただし、この関数はExcel 365でのみ使用可能です。書式は以下のとおりです。

=UNIQUE(配列, [列の比較], [回数指定])

引数の意味は次のとおりです。

  • 配列:一意の値を抽出したい範囲または配列を指定します。
  • [列の比較]:比較の方向を指定します。FALSE(既定)は行方向、TRUEは列方向で比較します。【省略可能】
  • [回数指定]:TRUEを指定すると1回しか出現しない値のみ返し、FALSE(既定)はすべての一意の値を返します。【省略可能】

ステップ1: 空白セル(例:H4)に次の数式を入力します。

=UNIQUE(B4:F17)

この数式では、UNIQUE関数が配列(B4:F17)だけを受け取り、その中の一意の値をすべて返します。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

ステップ2: Enterキーを押すと、瞬時にすべての一意の値が表示されます。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

上のスクリーンショットのとおり、データセットから一意のレコードだけが抽出されていることがわかります。

方法3:「重複の削除」機能で重複を取り除く

重複を削除することも、一意のレコードを得るための便利な手段のひとつです。Excelのデータタブには重複の削除オプションがあり、この機能は重複レコードの中から1件だけを残してくれます。

ステップ1: 対象範囲を選択し、データタブ > データツールグループ内の重複の削除をクリックします。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

ステップ2: 重複の削除ダイアログが表示されたら、「すべて選択」をクリックしてからOKを押します。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

ステップ3:3個の重複する値が削除されました」という通知ウィンドウが表示されるので、OKをクリックします。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

重複の削除を実行すると、重複が取り除かれ、一意のレコードだけが残ります。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

方法4:VBAマクロで一意のレコードを抽出する

VBAマクロは、条件に基づいた処理を実現するうえで非常に強力なツールです。マクロのコードを使えば、一意のレコードだけを自動的に抽出できます。

ここでも、重複を含む同じデータセットを使用します。重複エントリを見分けやすいよう、あらかじめ色分けしておきます。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

ステップ1: Alt + F11キーを同時に押してMicrosoft Visual Basicウィンドウを開きます。続いて、メニューバーの挿入 > 標準モジュールをクリックします。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

ステップ2: モジュールに以下のマクロコードを入力します。

Option Explicit
Sub Filter_Unique_Records()
Dim SourceRng As Range, PasteRng As Range
Dim lastRow As Long
Dim wrk As Worksheet
Set wrk = ThisWorkbook.Sheets("VBA")
Set PasteRng = wrk.Cells(4, 8)
If PasteRng <> vbNullString Then
lastRow = wrk.Columns(PasteRng.Column).Find("*", , , , xlByRows, xlPrevious).Row
wrk.Range(PasteRng, Cells(lastRow, PasteRng.Column + 2)).Delete xlUp
Set PasteRng = wrk.Cells(4, 8)
End If
lastRow = wrk.Columns(2).Find("*", , , , xlByRows, xlPrevious).Row
Set SourceRng = wrk.Range(Cells(4, 2), Cells(lastRow, 6))
SourceRng.AdvancedFilter Action:=xlFilterCopy, copytorange:=PasteRng, Unique:=True
End Sub

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

このマクロでは、ソース範囲の起点を4行目・2列目に、貼り付け範囲の起点を4行目・8列目に設定しています(VBAのCellsプロパティを使用)。また、Range.Deleteメソッドによって、貼り付け先に既存データがある場合に内容を消去する条件も組み込んでいます。最後に、AdvancedFilterメソッド(Action:=xlFilterCopy、Unique:=True)を実行して一意のレコードをコピーします。

ステップ3: F5キーでマクロを実行し、ワークシートに戻ると、下の画像のように重複レコードがすべて除去されています。

【保存版】Excelで重複を除外して一意のレコードのみを抽出する4つの方法

まとめ

本記事では、Excelの複数の標準機能、UNIQUE関数、そしてVBAマクロを使って、一意のレコードのみを抽出する方法を紹介しました。それぞれの手法には特徴があり、データの種類や用途に応じて使い分けることで作業効率が大きく向上します。ご不明な点や追加したい情報があれば、ぜひコメントでお知らせください。

関連記事

  • Excelのフィルターオプション活用術【複数列・複数条件・数式・ワイルドカード】
  • Excelのフィルターオプションで空白セルを除外する方法(3つの簡単テクニック)
  • Excelのフィルターオプションで別シートにデータをコピーする方法
  • Excelのフィルターオプションで「指定した範囲にコピー」を使う手順
  • Excelのフィルターオプションが動作しないときの原因と対処法(2つのパターン)
  1. 【Excel】高度なフィルタで空白セルを除外する3つの簡単なテクニック

    Excelで大きなデータセットを扱っていると、あちこちに散らばった空白セルに悩まされることがあります。後の処理のためにこれらの空欄を削除したい場合でも、1つずつ手作業で探して削除していては非常に時間がかかってしまいます。この記事では、Excelの高度なフィルタ(フィルターオプション)を使って、空白セルを効率的に除外する方法をわかりやすく解説します。 なお、この記事で使用している練習用ワークブックはダウンロード可能ですので、実際に手を動かしながら学習できます。 Excelの「高度なフィルタ」とは? 多くの方が普段使っている通常のフィルタ機能には、いくつか制限があります。例えば、抽出結果を別の場所

  2. Excelの詳細フィルターでデータを別のシートにコピーする2つの方法

    Excelの「詳細フィルター」(フィルターオプションの設定)は、複数の条件に基づいてデータ範囲から必要なデータだけを抽出できる強力な機能です。通常、データを別の場所に移すにはコピー&ペーストを行いますが、詳細フィルターを活用すれば、条件に合致するデータだけを効率的に別のシートへ抽出できます。この記事では、すべての例で同じサンプルデータセットを使用しながら、具体的な手順を解説します。 詳細フィルターで別シートにデータをコピーする2つの方法 ここでは、詳細フィルターを使ってデータを別のシートにコピーする2つの方法を紹介します。1つ目は「データ」タブの「フィルターオプションの設定」を使う方法、2つ