スプレッドシート重複チェック術!色付け・関数まで

仕事でGoogleスプレッドシートを使っていて、「同じデータが二重に入力されていないかな?」と不安になることはありませんか?例えば、顧客のメールアドレスや商品リストなど、データが重複していると、後々大きなトラブルにつながる可能性もありますよね。

重複チェック

手作業で一つひとつ確認するのは大変ですが、実はスプレッドシートには、重複をあっという間に見つけて処理できる便利な機能が備わっています。「条件付き書式」で色付けしたり、「関数」を使ってスマートに抽出したりする方法を覚えれば、面倒な確認作業から解放されますよ。

この記事では、すぐに使える基本操作から、ちょっと高度なカスタマイズまで、重複チェックに関するあらゆるテクニックを分かりやすく解説していきます。データの整理整頓に悩んでいる方は、ぜひ参考にしてみてくださいね。

  • 標準の「重複を削除」機能の使い方と注意点がわかる
  • 条件付き書式を使って、重複データに自動で色付けする方法が身につく
  • COUNTIFやUNIQUEなど、重複チェックに役立つ関数の活用法が理解できる
  • 別シートの参照や、うまく判定できない時のトラブルシューティングがわかる
スポンサーリンク

スプレッドシートの重複チェック基本編

まずは、スプレッドシートに標準で用意されている機能を使って、簡単に重複データをチェック・処理する方法をご紹介します。難しい関数を使わなくても、これを知っているだけで作業効率がグッと上がりますよ。

標準機能で重複を削除する方法

手っ取り早く、重複しているデータを消してしまいたい!という時に便利なのが、スプレッドシートに標準搭載されている「データクリーンアップ」機能です。これは、指定した範囲内で完全に一致するデータを見つけ出し、自動的に削除してくれる優れものです。

使い方はとても簡単です。まず、重複をチェックしたいデータの範囲を選択します。次に、上部のメニューバーから「データ」→「データクリーンアップ」→「重複を削除」の順にクリックします。

すると設定画面が表示されます。もし選択した範囲の1行目に「氏名」や「メールアドレス」といった見出し(ヘッダー)がある場合は、「データにヘッダー行が含まれている」にチェックを入れましょう。これを忘れると、見出しも重複チェックの対象になってしまいます。

そして、どの列を基準に重複を判定するかを選びます。例えば、「メールアドレス」の列だけを基準にしたり、「氏名」と「電話番号」の両方が一致した場合だけ削除する、といった柔軟な設定も可能です。

注意点:事前のバックアップを推奨します

この機能を使うと、重複したデータは実際にシート上から削除されてしまいます。直後であれば「元に戻す(Ctrl+Z)」で取り消せますが、誤って必要なデータを消してしまわないよう、実行前にシートをコピーしておくなど、バックアップを取っておくことを強くおすすめします。

条件付き書式で重複に色付けする

データをいきなり削除するのではなく、「まずはどこが重複しているのかを目で見て確認したい」というケースも多いですよね。そんな時は、「条件付き書式」を使って重複しているセルに自動で色を付ける方法が最適です。

設定手順を追ってみましょう。重複をチェックしたい列(ここではA列とします)を選択した状態で、メニューの「表示形式」から「条件付き書式」を選びます。画面右側に設定パネルが出てくるので、「セルの書式設定の条件」のプルダウンから一番下にある「カスタム数式」を選択します。

入力欄に、以下の数式を入力してみてください。

=COUNTIF(A:A, A1) > 1

この数式は、「A列の中で、今のセル(A1)と同じ値が2つ以上あるか?」をチェックしています。あとは、お好みの背景色(目立つ赤やオレンジなどがおすすめ)を選んで「完了」を押すだけです。

この方法の素晴らしいところは、動的(リアルタイム)に反応する点です。後から新しくデータを入力した時に、それが既存のデータと重複していれば、入力した瞬間にパッと色が付きます。入力ミスを防ぐ強力な味方になってくれますよ。

COUNTIF関数で重複を数える

「色付けで場所は分かったけれど、具体的にそれぞれ何回重複しているの?」を知りたい場合には、COUNTIF関数の出番です。この関数を使えば、特定のデータが指定した範囲内にいくつ存在するかを正確に数えることができます。

例えば、A列に顧客名が入っているとして、B列(作業列)にその重複回数を表示させてみましょう。B2セルに次のように入力します。

=COUNTIF($A$2:$A$100, A2)

数式を入力したら、下に向かってオートフィル(コピー)します。すると、それぞれの名前がA2からA100の範囲内に何回出てくるかが数字で表示されます。「1」なら重複なし、「2」以上ならその回数だけ重複しているということです。

ここでポイントなのが、検索する範囲($A$2:$A$100)に「$」マークをつけて絶対参照にしている点です。これにより、数式を下にコピーしても検索範囲がズレるのを防ぐことができます。

この結果を使って、スプレッドシートの「フィルタ」機能で「1より大きい」ものだけを絞り込めば、重複しているデータの一覧を簡単に作ることができます。

UNIQUE関数で重複を除外して抽出

元のデータはそのまま残しつつ、別の場所に「重複を省いたきれいなリスト(ユニークなリスト)」を作りたい時に最強の関数が、UNIQUE関数です。

使い方は拍子抜けするほど簡単です。リストを作りたい別のセルに、次のように入力するだけです。

=UNIQUE(A2:A100)

これだけで、指定した範囲から重複を取り除いたデータが、ズラーッと自動的に展開されます。元のリストに新しいデータが追加されれば、このUNIQUE関数で作ったリストも勝手に更新されるので、常に最新のマスターデータとして活用できます。

さらに高度な使い方として、重複しているデータ「だけ」を抽出したい場合は、先ほどのCOUNTIF関数やFILTER関数と組み合わせます。

=UNIQUE(FILTER(A2:A, COUNTIF(A2:A, A2:A) > 1))

この数式を使えば、重複しているデータの種類だけをスッキリと一覧化できるので、リストのクレンジング作業がはかどります。

複数列を基準にして重複を判定する

実際の仕事では、「名前だけ」の重複チェックでは不十分なことがありますよね。同姓同名の別人がいるかもしれないので、「氏名」と「メールアドレス」の両方が一致した時だけ「重複」とみなしたい、というケースです。

このように複数の列を組み合わせて重複を判定したい場合は、2つのアプローチがあります。

一つ目は、COUNTIFS関数(複数条件に対応したCOUNTIF)を使う方法です。条件付き書式のカスタム数式に以下のように入力します。

=COUNTIFS($A$2:$A$100, $A2, $B$2:$B$100, $B2) > 1

これで、A列とB列の両方の組み合わせが全く同じ行にだけ色を付けることができます。

二つ目は、もっと直感的な方法です。作業用の列(例えばC列)を作って、そこでA列とB列の文字をくっつけてしまいます。

=A2 & B2

これで「山田太郎yamada@example.com」のような一つの長い文字列ができるので、あとはこのC列に対して、通常のCOUNTIF関数で重複チェックを行うだけです。この方法は計算の仕組みが分かりやすく、後から見直す時にも便利なのでおすすめです。

スプレッドシートの重複チェック応用編

重複チェック1

ここからは、実務で直面しやすい「ちょっと複雑な状況」を解決するための応用テクニックをご紹介します。別のシートにあるデータとの突き合わせや、大文字・小文字の区別など、知っておくと一目置かれるスキルです。

別シートを参照して重複を確認する

「今入力しているこのリスト、別のマスターシートにすでに登録されていないかな?」と確認したい場面はよくあります。しかし、スプレッドシートの「条件付き書式」では、直接別のシートのセルを参照しようとするとエラーになってしまうという厄介な仕様があります。

この壁を乗り越えるために欠かせないのが、INDIRECT関数です。INDIRECT関数は、文字として書かれたシート名を、きちんとした参照先に変換してくれる通訳のような役割を果たします。

条件付き書式で別シート(例:「マスターシート」)と重複チェックをする場合は、カスタム数式を以下のように書きます。

=COUNTIF(INDIRECT("'マスターシート'!$A$2:$A$1000"), $A2) >= 1

ポイント シート名は必ずシングルクォーテーション(’)で囲む癖をつけましょう。シート名にスペースなどが含まれている場合のエラーを防げます。

もし、全く別のファイル(別URLのスプレッドシート)と照合したい場合は、IMPORTRANGE関数で一度自分のファイル内の見えないシートにデータを読み込んでから、このINDIRECT関数で参照するという二段構えにするのが確実な方法です。

EXACT関数で大文字小文字を区別

スプレッドシートで重複チェックをする際、絶対に知っておくべき落とし穴があります。それは、これまで使ってきたCOUNTIF関数などは、「大文字と小文字(Aとa)」や「全角と半角(1と1)」を区別しないという事実です。

例えば、商品コードで「item-A」と「item-a」が別の商品として扱われるルールだった場合、COUNTIF関数を使うとこれらが「重複している」と誤判定されてしまいます。

こういった違いを厳密に区別して「完全に一致しているか」をチェックしたい場合は、EXACT関数を使います。ただ、EXACT関数自体は2つのセルを比較するだけのシンプルな関数なので、範囲全体から重複を探すには少し複雑な数式になります。

=SUMPRODUCT(--EXACT($A$2:$A$100, $A2)) > 1

この数式を条件付き書式に設定すれば、文字コードの違いレベルで厳密な重複チェックが可能になります。より精度の高いデータ管理が求められる場面で活躍する数式です。

重複判定ができない時の対処法

「数式も合っているはずなのに、なぜか重複として色が付かない…」というトラブルはよく起こります。そんな時は、以下のポイントをチェックしてみてください。

1. 見えないスペースが混ざっている
外部のシステムからデータをインポートした際によくあるのが、文字の後ろに「半角スペース」がくっついているケースです。「山田」と「山田 」では、コンピュータは別のデータと判断します。この場合は、TRIM関数を使って余分なスペースを一掃してからチェックしてみましょう。

2. 条件付き書式の「適用範囲」がズレている
これが一番多いミスです!条件付き書式を設定する際、「適用範囲」の左上のセル(例:A2)と、カスタム数式の中の比較元セル(例:A2)が同じ行番号になっていないと、判定がズレて全く関係ないセルに色がついてしまいます。必ずこの2つが一致しているか確認してください。

3. 数式が文字列として認識されている
セルに数式を入力したのに、結果ではなく「=COUNTIF…」と文字のまま表示されてしまう場合は、セルの表示形式が「書式なしテキスト」になっている可能性があります。表示形式を「自動」に戻して、もう一度エンターキーを押して確定させ直してください。

GASを用いて重複処理を自動化する

毎日大量のデータが追加され、その都度重複チェックを手作業でやるのは時間がもったいないですよね。そんな時は、Google Apps Script(通称:GAS)を使って、スプレッドシートの裏側でプログラムを動かし、処理を自動化してしまうのがおすすめです。

GASを使えば、メニューの「重複を削除」と同じ処理を一瞬で実行するスクリプトを簡単に書くことができます。


function removeDuplicateRows() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const dataRange = sheet.getDataRange();
  // 全ての列が一致する行を削除
  dataRange.removeDuplicates(); 
}

特定の列(例えばC列=3列目)だけを基準に重複を消したい場合は、dataRange.removeDuplicates([3]); のように指定することもできます。

さらにGASを使いこなせば、「データが重複して入力されたら、担当者に警告の自動メールを送付する」といった高度なシステムを構築することも可能です。プログラミングの知識が少し必要になりますが、日々の業務を劇的に楽にしてくれるので、興味がある方はぜひ挑戦してみてください。

スプレッドシートの重複チェックまとめ

いかがでしたでしょうか。今回は、スプレッドシートで重複データをチェックし、きれいに整理するためのさまざまなアプローチをご紹介しました。

簡単な重複の削除や色付けなら標準機能やCOUNTIF関数で十分ですし、より厳密なデータ管理が必要ならEXACT関数や別シート参照のテクニックが役立ちます。そして、大規模なデータや日々のルーチンワークにはGASを使った自動化が威力を発揮します。

「どの方法が一番良い」というわけではなく、扱うデータの種類や目的に合わせて、最適なスプレッドシート重複チェックの手段を選ぶことが大切です。まずは一番手軽な「条件付き書式での色付け」あたりから試してみて、きれいなデータ管理を目指してくださいね!

タイトルとURLをコピーしました