エクセルで重複データを1つだけ表示する方法!COUNTIF関数で初出だけを残す手順

エクセルで重複データを1つだけ表示する方法!COUNTIF関数で初出だけを残す手順
エクセルで重複したデータを1つだけ表示したいときはないでしょうか。

けど、そんな中で悩むことは、

・同じ商品名が何度も並んでいて見づらい
・重複しているかを目で探すのが大変でミスしやすい
・「重複の削除」を使うと元のデータが消えて元に戻せない

ですよね。

今回はそんなお悩みを解決する

・重複データを1つだけ表示する方法(COUNTIF関数)

についてまとめます!

完成イメージ

商品リストのように重複したデータがある表では、同じ商品名が何度も出てきて、種類や件数を数えるときに困ります。
今回は
・重複していても最初の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 と絶対参照で固定するのがポイントです。
こうすると、下にコピーしても数える範囲がずれません。
実際の入力画面がこちらです。
COUNTIF関数の入力画面
フィルハンドルで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」で判定するのがポイントです。
重複していない商品だけを探したいときに便利な書き方です。
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件だけの商品」を探したいとき
データ → 重複の削除 重複した行そのものが消える 削除される(元に戻せない) 完全に重複を無くしたいとき
POINT

重複を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つしか登録できない」性質を使った、重複除去の定番テクニックです。

タカヒロ

タカヒロ
数式版は元の表を残したまま判定できるのが強み、VBA版は重複を除いた一覧を別の列に作れるのが強みです。
用途に合わせて使い分けてくださいね。

うまくいかないときの対処法(トラブルシュート)

実際に試すと、思ったように動かないこともあるかもしれません。
よくあるつまずきと対処法をまとめました。

症状 原因 対処
初出が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件目として残ったのかも一目でわかります。
思ったとおりに動きましたか?
重複の確認が一目でできるようになり、集計作業がぐっとラクになります。
フィルターを解除して元データを確認した状態

さいごに

いかがでしょうか。

今回は、

・エクセルで重複データを1つだけ表示する方法(COUNTIF関数)

についてまとめました。

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



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。






コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA ImageChange Image