Excelで重複を削除する関数|UNIQUEとCOUNTIFの使い分け
本ページはプロモーションが含まれています
Excelで重複を関数で取り除くなら、Microsoft 365やExcel 2021以降では =UNIQUE(範囲) の1つで重複のない一覧が作れます。UNIQUE関数が使えない古いバージョンでは、COUNTIF関数で「2回目以降に出てきた行」に印を付け、フィルターで絞り込んで消すのが定番です。この記事では、2つの関数の使い方と、関数を使わない「重複の削除」機能との使い分けを解説します。
目次
方法は3つ:まず使い分けを知る
| 方法 | 使えるバージョン | 元データ | 向いている場面 |
|---|---|---|---|
| UNIQUE関数 | Microsoft 365、Excel 2021以降など | 残る | 重複のない一覧を別の場所に作りたい。元データが更新されても自動で反映したい |
| COUNTIF関数+フィルター | ほぼすべてのバージョン | 自分で消すまで残る | 古いExcelを使っている。どれが重複か確認してから消したい |
| 「重複の削除」機能(関数ではない) | ほぼすべてのバージョン | 直接消える | 一度きりの作業で、すぐに重複を消したい |
「関数で」と調べる人の多くは、元のデータを壊さずに重複をなくしたい人です。その場合はUNIQUE関数か、COUNTIF関数を使う方法を選びましょう。
作業の前にコピーを取る
重複を消す作業は、元に戻せなくなることがあります。特に「重複の削除」機能や、行の削除を伴う作業の前には、シートをコピーするか、ファイルを別名で保存しておきましょう。
UNIQUE関数で重複のない一覧を作る
UNIQUE関数は、指定した範囲から重複を取り除いた一覧を返す関数です。
=UNIQUE(範囲, [列の比較], [回数指定])
| 引数 | 意味 |
|---|---|
| 範囲 | 重複を取り除きたいデータ |
| 列の比較(省略可) | FALSEまたは省略で行ごとに比べる(ふつうはこちら)。TRUEで列ごとに比べる |
| 回数指定(省略可) | FALSEまたは省略で重複をまとめて1つ残す。TRUEで「1回しか出てこない値」だけを返す |
使い方の例
A2:A100に顧客名が入っていて、重複のない顧客名の一覧を作る場合です。
- 空いているセル(例: C2)を選択する
=UNIQUE(A2:A100)と入力してEnterキーを押す- C2から下に、重複のない顧客名が自動で並ぶ
このように、1つのセルに入れた数式の結果が下のセルまで自動で広がることを「スピル」と呼びます。結果が出る範囲に何か入力されていると「#SPILL!」エラーになるので、下のセルは空けておきましょう。
複数の列で重複を判定する
「顧客名と商品名の両方が同じ行」を重複とみなしたい場合は、範囲を複数列にします。
=UNIQUE(A2:B100)
A列とB列の組み合わせが同じ行だけがまとめられます。
並べ替えも一緒にしたいとき
SORT関数と組み合わせると、重複を除いたうえで並べ替えられます。
=SORT(UNIQUE(A2:A100))
空白セルの扱い
範囲に空白セルがあると、結果に「0」が1つ出ることがあります。範囲をデータのある行だけにするか、空白を除きたい場合は =UNIQUE(FILTER(A2:A100, A2:A100<>"")) のようにFILTER関数で空白を除いてから使います。
COUNTIF関数で重複に印を付けて削除する
UNIQUE関数が使えないバージョンでは、COUNTIF関数で重複に印を付けます。
手順
A2:A100にデータがある場合です。
- 隣の空いている列(例: B2)に、次の数式を入力する
```
=COUNTIF($A$2:A2, A2)
```
- B2をB100までコピーする
- B列の数字が「1」なら初めて出てきた値、「2」以上なら2回目以降に出てきた重複です
- 見出し行を選択し、「データ」タブ →「フィルター」をクリック
- B列のフィルターで「1」のチェックを外し、2以上の行だけを表示する
- 表示された行をまとめて選択し、右クリック →「行の削除」
- フィルターを解除し、B列(作業用の列)を削除する
ポイントは $A$2:A2 という範囲の指定です。始まりを$で固定しているので、下にコピーすると $A$2:A3、$A$2:A4…と範囲が1行ずつ広がります。その結果、「その行までに同じ値が何回出てきたか」を数えられます。
重複している値をすべて確認したい場合
「2回目以降」ではなく、「重複しているものすべて」に印を付けたい場合は、範囲を全体に固定します。
=COUNTIF($A$2:$A$100, A2)
結果が2以上の行は、どれも重複している値です。消す前に、どれを残すかを目で確認したいときに便利です。
関数を使わない「重複の削除」機能
関数ではありませんが、Excelには重複を直接消す機能もあります。
- 重複を消したい表の中のセルを選択する
- 「データ」タブ →「重複の削除」をクリック
- 重複を判定する列にチェックを入れて「OK」
この機能は手軽ですが、元のデータが直接書きかわる点に注意してください。また、どの行が消えたかは表示されないため、確認しながら消したい場合はCOUNTIF関数の方法のほうが安心です。
重複が消えないときの原因
「同じに見えるのに重複として扱われない」場合は、次の原因がよくあります。
| 原因 | 確認方法 | 対処 |
|---|---|---|
| 前後や途中に余分なスペースがある | =LEN(A2) で文字数を比べる | TRIM関数で余分なスペースを取り除く |
| 全角と半角が混ざっている(方法によって同じとみなすかどうかが違うことがある) | 目で見て「ABC」「ABC」などを確認 | ASC関数(全角→半角)などで先にそろえておく |
| 数値と文字列が混ざっている | セルの左上に緑の三角が出ていないか確認 | 表示形式や =VALUE(A2) でそろえる |
これらは、VLOOKUPで値が見つからないときの原因とも共通しています。詳しくはVLOOKUPで#N/Aが出る原因と直し方で解説しています。なお、UNIQUE関数やCOUNTIF関数は、アルファベットの大文字と小文字を区別しません。
重複のない一覧ができたら、それをプルダウンの選択肢に使うこともできます。作り方はExcelで連動するプルダウンの作り方を参考にしてください。
まとめ
- Microsoft 365やExcel 2021以降なら、
=UNIQUE(範囲)で元データを残したまま重複のない一覧が作れる - 古いバージョンでは
=COUNTIF($A$2:A2, A2)で2回目以降の重複に印を付け、フィルターで絞り込んで消す - 「データ」タブの「重複の削除」は手軽だが、元データが直接書きかわる
- 消えない重複は、スペース・全角半角・数値と文字列の違いを疑う
- どの方法でも、作業前にコピーを取っておく
まずは自分のExcelでUNIQUE関数が使えるかを試し、使えなければCOUNTIF関数の方法を選ぶとスムーズです。