エクセルで重複したデータを1つだけ表示したいときはないでしょうか。
けど、そんな中で悩むことは、
・重複しているかを目で探すのが大変でミスしやすい
・「重複の削除」を使うと元のデータが消えて元に戻せない
ですよね。
今回はそんなお悩みを解決する
についてまとめます!
完成イメージ
商品リストのように重複したデータがある表では、同じ商品名が何度も出てきて、種類や件数を数えるときに困ります。
今回は
・重複していても最初の1件だけを残して表示する方法(=COUNTIF($A$2:A2,A2)=1)
をゴールにします。
元のデータを消さずに、重複を1つだけ表示できるようになります。

上の画像が完成形です。オートフィルターで「初出」だけを表示すると、重複していた商品が1つずつだけ並びます。
なお、「重複の削除」との違いや、VBA(Dictionary)で一括処理する方法、うまくいかないときの対処法(トラブルシュート)もあわせてご紹介します。
早速実装して試してみましょう!
もくじ
STEP1. 重複を含む商品リストを用意する
まずは重複を含む商品リストを用意します。
今回のデータは商品名だけの12件です。
同じ商品名が何度も出てくるのがポイントで、これから重複を1つだけ表示していきます。
B列からD列は、このあと重複を判定するための作業列として使います。

下の表をコピーして、Excelのシートに貼り付けるとそのまま試せます。
| 商品名 | 重複件数 | 1回だけ | 初出 |
|---|---|---|---|
| ノートPC | |||
| モニター | |||
| キーボード | |||
| マウス | |||
| ノートPC | |||
| モニター | |||
| プリンタ | |||
| キーボード | |||
| ノートPC | |||
| スピーカー | |||
| モニター | |||
| マウス |
※ 数式で求める列は空にしています。すでに値が入っている列はそのまま残して試せます。
STEP2. COUNTIF関数で重複を判定する
次に、それぞれの商品名が全部で何回出てくるかを数えます。
B2セルに次の数式を入力します。
=COUNTIF($A$2:$A$13, A2)
COUNTIFは「範囲の中で条件に合うセルの個数」を数える関数です。
検索する範囲を $A$2:$A$13 と絶対参照で固定するのがポイントです。
こうすると、下にコピーしても数える範囲がずれません。
実際の入力画面がこちらです。

フィルハンドルでB13までコピーすると、各商品の出現回数が出ました。
2以上なら重複している、1なら1回しか出てこない商品です。
ノートPCとモニターは3回、キーボードとマウスは2回出てきていることが一目でわかります。

STEP3. 「1回だけ」出てくる商品を取り出す
COUNTIFの結果が1の商品は、1回しか出てこない商品です。
C列でその商品に○を付けてみましょう。
C2セルに次の数式を入力します。
=IF(COUNTIF($A$2:$A$13,A2)=1, "○", "")
数える範囲を $A$2:$A$13(表全体)にして「=1」で判定するのがポイントです。
重複していない商品だけを探したいときに便利な書き方です。

STEP4. 重複していても1つだけ残す
ここからが今回の本題です。
重複している商品でも、最初に出てきた1件だけを表示するようにします。
D2セルに次の数式を入力します。
=IF(COUNTIF($A$2:A2,A2)=1, "初出", "重複")
さきほどとの違いは、数える範囲が $A$2:A2 になっている点です。
始まりの $A$2 だけを固定し、終わりの A2 には$を付けません。
すると、下にコピーするにつれて範囲が $A$2:A3、$A$2:A4… と1行ずつ広がります。
そのため「ここまでの範囲で初めて出たかどうか」を判定でき、重複の初出だけが1つ残るのです。

フィルハンドルでD13までコピーすると、初出の行と重複の行に分かれました。
初出の行に色を付けておくと、どこが1件目なのかがすぐに見分けられます。

STEP5. オートフィルターで初出だけを表示する
表の中のセルを選び、データ タブ → フィルターをクリックします。
見出し行に▼ボタンが付きます。
ショートカットは Ctrl+Shift+L です。
次にD列「初出」の▼をクリックし、初出だけにチェックを入れてOKします。
すると、重複していた商品は1つずつだけ表示されました。
これが「重複データを1つだけ表示する」状態です。
元のデータは消えていないので、フィルターを解除すればいつでも元に戻せます。

「重複を1つだけ」と「重複の削除」の違い
似た方法がいくつかあるので、結果の違いを整理しておきましょう。
| 方法 | 結果 | 元データ | 向いている場面 |
|---|---|---|---|
| =COUNTIF($A$2:A2,A2)=1(初出) | 重複していても最初の1件だけ残る | そのまま残る | 重複を1つずつ表示したいとき |
| =COUNTIF($A$2:$A$13,A2)=1(1回だけ) | 1回しか出てこない商品だけ残る | そのまま残る | 「1件だけの商品」を探したいとき |
| データ → 重複の削除 | 重複した行そのものが消える | 削除される(元に戻せない) | 完全に重複を無くしたいとき |
重複を1つだけ表示するなら =COUNTIF($A$2:A2,A2)=1。
終わりのセルに$を付けない(固定しない)のが最大のポイントです。
固定してしまうと、どの行でも同じ件数しか数えられず、初出を判定できません。
VBA(Dictionary)で重複を除いた一覧を作る
毎回同じ作業をするなら、VBAで重複を除いた一覧を一気に作るのもおすすめです。
Alt+F11でVBAエディターを開き、標準モジュールに次のコードを貼り付けます。
Sub UniqueList()
Dim d As Object, r As Long, lastRow As Long, n As Long
Set d = CreateObject("Scripting.Dictionary")
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
n = 1
For r = 2 To lastRow
If Not d.Exists(Cells(r, 1).Value) Then
d.Add Cells(r, 1).Value, True
n = n + 1
Cells(n, 6).Value = Cells(r, 1).Value
End If
Next r
End Sub
実行すると、F列の上から順に重複を除いた商品名が並びます。
Dictionaryは「同じ値は1つしか登録できない」性質を使った、重複除去の定番テクニックです。
用途に合わせて使い分けてくださいね。
うまくいかないときの対処法(トラブルシュート)
実際に試すと、思ったように動かないこともあるかもしれません。
よくあるつまずきと対処法をまとめました。
| 症状 | 原因 | 対処 |
|---|---|---|
| 初出が1件も出ず、すべて「重複」になる | 範囲の終わりまで $A$2 のように固定している | $A$2:A2 に直す(終わりには$を付けない) |
| 重複件数がすべて1になる | 数える範囲が1行だけになっている | 表全体の $A$2:$A$13 を指定する |
| フィルターで「初出」が出てこない | 見出し行を含めずにフィルターを設定した | A1セルを選んでから Ctrl+Shift+L を押す |
| 「1回だけ」と「初出」の違いがわからない | C列とD列で数える範囲が違う | 1件だけの商品はC列、重複を1つにまとめるならD列を使う |
| 空白の行が「初出」になってしまう | 空白も同じ値として数えられる | 空行を作らない/=IF(A2=””,””,…) で囲む |
関数の説明
今回使う2つの関数の概要です。
どちらも重複の判定でよく使う関数なので、違いを押さえておきましょう。
COUNTIF関数(カウントイフ)
| 書式 | =COUNTIF(範囲, 検索条件) |
|---|---|
| できること | 指定した範囲の中で、条件に一致するセルの個数を数えます。 |
| 戻り値 | 個数(数値) |
| こんなときに | 重複の判定や、特定の値の件数を数えたいとき。 |
| 注意 | 範囲の書き方で結果が変わります。$A$2:A2 のように終わりを固定しないと、初出の判定はできません。 |
=COUNTIF($A$2:A2, A2)
IF関数(イフ)
| 書式 | =IF(論理式, 真の場合, [偽の場合]) |
|---|---|
| できること | 条件に合うときと合わないときで、表示する値を切り替えます。 |
| 戻り値 | 真の場合/偽の場合に指定した値 |
| こんなときに | 「初出」「重複」のように、判定結果を文字で表示したいとき。 |
| 注意 | 偽の場合を “” にすると、条件に合わないセルを空欄にできます。 |
=IF(COUNTIF($A$2:A2,A2)=1, "初出", "重複")
完成
フィルターで「初出」だけを表示すると、重複していた商品が1つずつだけ残りました。
上の完成イメージのとおりです。
ためしにフィルターを解除してみると、元の12件のデータはそのまま残っています。
初出の行に色が付いているので、どの商品が1件目として残ったのかも一目でわかります。
思ったとおりに動きましたか?
重複の確認が一目でできるようになり、集計作業がぐっとラクになります。

さいごに
いかがでしょうか。
今回は、
についてまとめました。
まずは今回のサンプル表で、ぜひ一度試してみてください。
重複の判定と抽出を数式で行えば、元のデータを消さずに安全に確認できますよ。
また、他にも便利なExcelの時短テクニックがありますので、よろしければご参照頂ければと思います。









コメントを残す