※購入先、ダウンロードへのリンクにはアフィリエイトタグが含まれており、それらの購入や会員の成約、ダウンロードなどからの収益化を行う場合があります。

スプレッドシートの重複を見つけて削除する方法|色付け・関数・再発防止まで

スプレッドシートのデータを統合した途端、同じ人や同じ取引が複数行に増えてしまい、集計が合わない、二重連絡が起きそう、削除が怖い――そんな状況は珍しくありません。重複対応で焦って行を消すと、必要な情報まで失ったり、残すべき行を間違えて後工程が崩れたりすることもあります。

本記事では、重複を「何で同一とみなすか」を決めるところから始め、条件付き書式での色付け、COUNTIF・COUNTIFSでの判定、データクリーンアップによる削除、UNIQUEによる安全な一覧化までを手順付きで解説します。さらに、重複が繰り返し発生しないようにする運用設計も整理いたします。自分のデータに合う最短ルートを選び、事故なく重複を解消したい方は、ぜひこのまま読み進めてください。

※本コンテンツは「記事制作ポリシー」に基づき、正確かつ信頼性の高い情報提供を心がけております。万が一、内容に誤りや誤解を招く表現がございましたら、お手数ですが「お問い合わせ」よりご一報ください。速やかに確認・修正いたします。

スプレッドシートで重複が起きる原因と最初に決めること

同一判定のキーを決める(メール、社員番号など)

重複対策で最初にやるべきことは、「何が同じなら同一とみなすか」を決めることです。これをキー(主キーのようなもの)として決めておくと、以降の色付け・抽出・削除の精度が安定します。

よく使われるキーの例は次のとおりです。

  • 顧客リスト:メールアドレス、会員ID、電話番号

  • 従業員台帳:社員番号

  • 注文・請求:注文番号、請求番号、取引ID

  • 申込データ:申込ID、フォームの回答ID、予約番号

  • 商品マスタ:商品コード、型番

ポイントは、「現場でぶれない値をキーにする」ことです。氏名は表記揺れが起きやすく、住所も引っ越しや番地表記で揺れます。まずはメールアドレスやIDのような“ぶれない値”があるなら、それを優先します。

ただし、キーを1列で決められないこともあります。例えば次のようなケースです。

  • 同じメールアドレスで複数イベントに申し込む(メールだけでは重複と誤判定する)

  • 同じ顧客が複数の契約を持つ(顧客IDだけでは1行にまとめられない)

  • 同じ商品名が複数型番で存在する(商品名だけでは危険)

この場合は、キーを複数列の組み合わせにするのが正解です。後の章で COUNTIFS を使った複数列判定を扱います。

そしてもうひとつ大事なのが、「残すべき行の優先順位」を決めることです。例えば、同じメールの重複があったときに、

  • 更新日が新しい行を残す

  • ステータスが「確定」の行を残す

  • 入金済みフラグがある行を残す

といったルールを先に決めておけば、削除や統合の判断で迷いません。ここが決まっていない状態で削除に進むと、後戻りの手間が一気に増えます。

よくある表記揺れと空白の落とし穴

重複が生まれる原因は、単に「同じ行をコピーした」だけではありません。実務では、データが複数経路から入ってくるほど、表記揺れや空白が混ざりやすくなります。よくある落とし穴を具体的に確認しておきましょう。

  • 余分なスペース(先頭・末尾)
    例:"tanaka@example.com""tanaka@example.com "(末尾にスペース)
    見た目では分かりにくいのに、判定で別物になったり、逆に同一扱いになったりして混乱の元になります。

  • 全角半角の違い
    例:電話番号のハイフン、郵便番号、英数字の半角/全角。
    インポート元が違うと簡単に混ざります。

  • 大文字小文字
    例:Tanaka@...tanaka@...
    メールアドレスは一般的に同一扱いにしたいことが多いですが、会社のルールによっては厳密に扱う場合もあります。

  • 氏名や住所の表記揺れ
    例:山田 太郎/山田太郎、丁目の表記、マンション名の有無。

  • 空白セルが絡む複数列判定
    複数列でキーを作る場合、どこかが空白だと「同一判定が崩れる」ことがあります。
    例:イベント名が空白の行が混じり、メール+イベントで判定したいのに、空白行だけ妙に重複扱いになる。

対策の考え方はシンプルです。

  • キー列はできるだけ“ぶれない値”を使い、空白が入りにくい設計にする

  • 表記揺れが避けられない列(氏名・住所)は、重複判定のキーにしない、または補助的に使う

  • 「削除」より先に「見える化」して、どの程度揺れているか把握してから処理する

消す前の安全手順チェックリスト

ここが最重要です。重複処理は、やり直しが効かない事故が起きやすい作業です。削除に入る前に、必ず次を確認してください。作業の手間は数分ですが、事故の復旧は数時間〜数日になることがあります。

  • シートを複製してバックアップを作った
    例:シート名の右クリック → 「複製」。日付を付けて 顧客リスト_2025-12-28_バックアップ のように残す。
    「元に戻す」で戻れない状況(共同編集、ブラウザの状態、時間経過)もあるため、複製が最も確実です。

  • 同一判定のキー列が決まっている
    何列を基準に重複とみなすかが曖昧なまま削除すると、残すべきデータの一部が消えます。

  • 対象範囲を正しく選択している
    途中の列だけ選ぶ、ヘッダーを含めない/含めるを間違えると、想定外の削除が起きます。

  • ヘッダー行の扱いが正しい
    1行目が見出しなら、削除機能でヘッダー設定を誤らないようにします。

  • フィルタや並べ替えの状態を確認した
    フィルタがかかったまま削除すると、見えていない行まで含めて処理してしまうと感じることがあります。削除前にフィルタを解除するか、処理対象が本当に意図どおりか確認します。

  • 削除が本当に必要かを検討した
    「元データを残したい」「削除は怖い」なら、UNIQUEで別シートにユニーク一覧を作り、そちらで運用するほうが安全です。

このチェックを通ったら、次に「見つける」工程へ進みます。


スプレッドシートの重複を見つける方法

条件付き書式で重複セルを色付けする(COUNTIF)

まずは、重複がどこにあるかを視覚的に把握しましょう。条件付き書式で色付けできると、削除前の確認がしやすくなり、チーム内の共有もラクになります。

ここでは「A列がキー(メールアドレスなど)」という前提で説明します。データは2行目から始まり、A2:A に値が入っている想定です。

手順(A列の重複を色付け)

  1. 重複判定したい範囲を選択(例:A2:A1000

  2. メニューから「表示形式」→「条件付き書式」

  3. ルールで「単一色」を選び、「セルの書式設定の条件」を「カスタム数式」にする

  4. 数式に次を入力する

    • =COUNTIF($A$2:$A$1000,A2)>1

  5. 書式(背景色など)を選び「完了」

この数式の意味

  • COUNTIF($A$2:$A$1000, A2) は「A2と同じ値が範囲内にいくつあるか」を数えます

  • それが2以上なら重複なので >1 で判定しています

失敗しやすいポイント

  • $A$2:$A$1000 のように範囲を固定しないと、行ごとに参照範囲がズレます

  • 対象範囲が小さすぎると、下のほうの行が範囲外になり、重複が見逃されます

  • 空白セルが多い列にこの判定をすると、空白同士が重複扱いになり色付けされることがあります

    • 対策:空白を除外する条件を追加(例:=AND(A2<>"",COUNTIF(...,A2)>1)

空白を除外したい場合の例

  • =AND(A2<>"",COUNTIF($A$2:$A$1000,A2)>1)

空白が多いデータでは、この一手間が混乱を大きく減らします。

重複数をカウントして別列で判定する(COUNTIF)

色付けは「見つける」には便利ですが、「抽出」「削除候補の一覧化」「確認フロー」には向きません。そういうときは、隣の列に“出現回数”を出す方法が強いです。見た目だけでなく、数値で重複を扱えるようになります。

例:B列に出現回数を出す

  • B1 に見出しとして 出現回数 と入れる

  • B2 に次を入力

    • =COUNTIF($A$2:$A$1000,A2)

  • B2 を下までコピー

運用上のメリット

  • 1 の行だけをフィルタすれば、ユニークだけを抽出できる

  • 2以上 の行だけをフィルタすれば、重複候補だけをレビューできる

  • 「この重複は残す」「この重複は削除」とチェック列を追加して判断を進められる

フィルタで確認する手順例

  1. 見出し行を含めて表全体を選択

  2. 「データ」→「フィルタを作成」

  3. B列のフィルタから「条件でフィルタ」→「次の値より大きい」→ 1 を指定

  4. 重複だけが表示されるので、内容を確認する

この方法は「削除前の確認」と相性が良いです。いきなり削除に入るより、まずはカウント列で状況把握してからのほうが、ほぼ確実に安全です。

複数列の組み合わせで重複行を判定する(COUNTIFS)

「メールアドレスが同じ」だけで重複と判断してよいとは限りません。例えば次のようなデータでは、複数列で見ないと誤判定します。

  • 同じ人が複数イベントに参加する(メール+イベント名で判定したい)

  • 同じ顧客が複数商品を買う(顧客ID+注文日+商品コードなど)

  • 同じ商品名が複数型番で存在する(商品名+型番で判定したい)

ここで使うのが COUNTIFS です。複数条件に一致する件数を数えられます。

例:A列=メール、B列=イベント名 の組み合わせで重複判定

  • C1 に 組み合わせ回数 と入れる

  • C2 に次を入力

    • =COUNTIFS($A$2:$A$1000,A2,$B$2:$B$1000,B2)

  • C2 を下までコピー

これで 2以上 の行が「同じメール×同じイベント名」の重複です。

空白がある場合の注意
イベント名が空白の行が混ざると、空白同士で重複扱いになり、意図せず大量に 2以上 になることがあります。空白を除外したいなら、判定用の列を分けたり、データを整えるのが基本です。簡易的には、空白を除外する補助列を作るのが現実的です。

補助列を作って安全にする考え方

  • 例:D列に「判定キー」を作る

    • =A2&"|"&B2 のように結合し、D列だけでCOUNTIFする

  • イベント名が空白なら、そもそも入力を埋めるルールにする(運用で防ぐ)

複数列判定は強力ですが、運用の荒れ(空白や表記揺れ)をそのままにすると誤判定が起きます。次章の削除に入る前に、まずはこの判定で「本当に消してよい重複なのか」を確かめましょう。


スプレッドシートの重複を削除する方法

機能で重複行を削除する(データクリーンアップ)

重複を削除する方法として、最も手早いのがスプレッドシートの機能(データクリーンアップ)です。条件を選んで、重複行をまとめて削除できます。

ただし、ここは“速いけれど強い”操作です。削除前にバックアップを作ってから行ってください。

基本手順

  1. 重複削除したい範囲を選択(可能なら表全体)

  2. メニュー「データ」→「データ クリーンアップ」→「重複を削除」

  3. 「データにヘッダー行が含まれている」の有無を確認

  4. 重複判定に使う列を選択(キー列、または複数列)

  5. 実行する

安全に実行するコツ

  • 最初は「コピーしたシート」で試す
    本番シートでいきなり実行しないのが鉄則です。複製で試し、結果を目視で確認してから本番に反映します。

  • 残したい行の優先順位があるなら先に並べ替える
    例:更新日が新しい行を残したいなら、更新日で降順ソートしてから実行。
    こうすると「最初に出てくる行」を残す動きになりやすく、意図に近づけられます。

  • 判定列は最小限にする
    「行全体が完全一致」の重複を消したいのか、「キー列が同じなら重複」なのかで選ぶ列が変わります。
    迷う場合は、キー列だけを選んで、他列の差異がある重複はまず残してレビューするほうが安全です。

よくある失敗

  • ヘッダー行を含める設定を間違え、見出しが消えたり判定がズレたりする

  • 判定列を増やしすぎて、消したい重複が消えない(少し違う列があるため別物扱いになる)

  • 逆に判定列が少なすぎて、別件まで重複扱いになり消えてしまう(例:メールだけで判定してイベント違いが消える)

削除機能は「完全な重複」「キーが明確で、同じなら統合で良い」ケースに向いています。そうでない場合は、次の UNIQUE のほうが安全です。

UNIQUEで重複のない一覧を作る(元データは残す)

「削除は怖い」「元データは保管しておきたい」「集計や共有用にユニークな一覧だけ欲しい」場合、UNIQUE を使う方法が最も安全です。元データに手を入れず、別の場所に重複のない結果を作れます。

例:A列(キー列)のユニーク一覧を作る

  • 別シートを作る(例:シート名 ユニーク一覧

  • A1 に見出しを入れる(例:メールアドレス

  • A2 に次を入力

    • =UNIQUE(元データ!A2:A)

これで、元データのA列から重複を除いた一覧が作れます。削除ではないため、失敗のリスクがぐっと下がります。

行全体(複数列)をユニークにしたい場合

  • 例えば A列=メール、B列=氏名、C列=部署 の3列をセットでユニークにしたいなら

    • =UNIQUE(元データ!A2:C)
      のように範囲を指定します。

UNIQUE運用が向いている場面

  • 集計の入力として使う(ユニークな顧客一覧、ユニークな取引先一覧)

  • メール配信や案内送付の宛先を作る(重複送信を避ける)

  • 元データは監査・履歴として残しておきたい

注意点(理解しておくと迷わない)

  • UNIQUEは「元データの先頭から順に見て、最初に出てきたものを採用」します
    つまり、「どの行を残すか」の優先順位が必要な場合は、元データの並び順が重要になります。
    優先順位があるなら、元データ側を並べ替えてからUNIQUEを作る、または別の方法(抽出・統合)を検討します。

削除かUNIQUEかで迷ったら、基本はUNIQUEです。「消してよい」と確信できる場合だけ削除に進むほうが、後悔が少なくなります。

どの方法を使うべきか比較表

目的別に最適な手段を整理します。あなたの目的に一番近い行を選び、その方法から着手してください。

目的おすすめ手段向いているケース注意点
重複がどこにあるかをすぐ把握したい条件付き書式+COUNTIFまず現状把握、チーム共有、削除前の確認空白除外、範囲固定($)が重要
重複候補を一覧で確認し、判断したいCOUNTIF/COUNTIFSで回数列レビューしながら残す/消すを決めたいキー設計が曖昧だと判断がぶれる
完全重複をまとめて消したいデータクリーンアップの重複削除完全一致、またはキーが明確で統合でOKバックアップ必須、判定列の選び方が肝
元データは残し、ユニーク一覧だけ欲しいUNIQUE宛先リスト、集計用マスタ、共有用先頭採用のため並び順の影響あり
複数列で重複を判定して消したいCOUNTIFS+フィルタ→削除イベント別、商品別など複数条件が必要空白や表記揺れがあると誤判定しやすい

この比較表のとおり、「消す」が必要な場面は意外と限られます。まずは「見つける」「ユニーク一覧を作る」で目的を満たせないかを検討すると安全です。


スプレッドシートで重複を防ぐ運用

入力規則で重複を防ぐ考え方(キー列を守る)

重複は一度きれいにしても、入力の仕組みが同じなら必ず再発します。再発防止は「技」より「設計」です。特に重要なのが、キー列(メール、社員番号など)の守りです。

考え方は次の3点に集約できます。

  1. キー列を必須入力にする(空白を許さない)
    空白が混ざると、重複チェックの精度が落ちます。フォームや入力ルールで空白を防ぐのが第一です。

  2. キー列の表記を揃える(入力ブレを抑える)
    例:メールは小文字に統一、電話番号はハイフンあり/なしを統一、など。
    完璧に揃えなくても、「最低限ここだけは揃える」という基準があると重複が減ります。

  3. ユニーク性が必要なら、キー列に“重複を許さない仕組み”を入れる
    具体的には、重複が生じた瞬間に気付ける状態にします。

    • 条件付き書式で重複を赤くする

    • 出現回数列を常設し、2以上なら要確認にする

    • 入力担当が必ず見る場所に警告を置く

「入力規則で完全に防ぐ」ことを目標にしすぎると、現場が回らない場合もあります。まずは“気付ける仕組み”を作るだけでも効果は大きいです。

追加データにも効く「監視」設計(色付け範囲・列固定)

インポートやフォーム回答など、データが日々追加される場合は、「一回だけ重複を消す」では終わりません。追加データに対しても自動的に監視が効く設計をしておくと、後の負担が激減します。

監視設計の基本

  • 条件付き書式の対象範囲を「今後増える分」まで広げる
    例:A2:A1000 ではなく A2:A5000 にしておく

  • COUNTIF/COUNTIFSの参照範囲を固定し、下の行にも同じ判定が効くようにする

  • チェック列(出現回数)を“常設”にし、フィルタでいつでも重複だけを抽出できるようにする

「監視が効いている」状態の判断

  • 新しい行を追加した瞬間、重複なら色が付く

  • 出現回数列が2以上になり、フィルタで重複だけにできる

  • チーム内で「重複が出たらこの列を見る」という共通認識がある

追加が多い場合の運用例

  • 週1回、重複フィルタ(回数列が2以上)で一覧を確認し、必要なら統合・削除する

  • 「確定データ」シートと「入力途中」シートを分け、確定側はルールが厳しい、途中側は柔軟、のように分離する

  • UNIQUEで作った宛先や集計用一覧は、元データとは別に維持する(元データが多少荒れても目的を満たせる)

こうした設計をしておくと、「気付いたら重複が100件」ではなく「重複が発生した時点で気付ける」ようになります。

チーム運用で崩れないルール例

一人で使うシートより、複数人で編集するシートのほうが重複は増えます。理由は簡単で、入力の癖や判断が人によって違うからです。そこで、細かいルールより「崩れにくい最低限の約束」を作るのが効果的です。

おすすめの最低限ルール

  • 重複削除(機能)を使う前に、必ずシート複製でバックアップ
    これだけで最悪の事故がほぼ回避できます。

  • キー列は固定し、列の追加・並べ替えは勝手にしない
    シート構造が崩れると、関数や条件付き書式が壊れて重複監視が効かなくなります。

  • 重複の判断基準を一文で決める
    例:「メールが同じなら同一人物」「メール+イベント名が同じなら重複」
    文章で合意しておくと、人が変わっても判断が揺れません。

  • 残す行の優先順位も決める
    例:「更新日が新しい行を残す」「ステータスが確定の行を残す」
    これが決まっていないと、削除のたびに議論が発生します。

  • 重複が出たときの対応フローを固定する
    例:「重複フィルタで抽出 → 内容確認 → 統合 or 削除 → 対応済みチェック」
    作業の属人化を防げます。

ルールは増やしすぎると守られません。最初は「バックアップ」「キー」「優先順位」だけでも十分効果が出ます。


スプレッドシートの重複に関するよくある質問

大文字小文字や書式が違うと重複判定はどうなる?

重複判定は「どの方法を使うか」で挙動の印象が変わります。

  • 条件付き書式+COUNTIF / COUNTIFS
    基本的には「セルの値」が一致しているかで数えます。見た目が同じでも、余分なスペースがあると別物になり、逆に見た目が違っても値が同じなら同一として数えることがあります。
    ここが不安な場合は、まず色付けと回数列で「どう判定されているか」を可視化してから、削除に進むのが安全です。

  • 重複を削除(機能)
    見た目の違い(書式など)より、判定列として選んだ値の同一性が基準になります。
    そのため「見た目が違うから別物だと思っていた」行が消えることも起こり得ます。削除機能は、バックアップを取ってから実行してください。

結局のところ、「あなたが同一とみなしたい基準(キー)」を明確にし、そのキーで判定するのが一番ブレません。

最初の1件だけ残して削除できる?

「重複は消したいが、どれを残すかを指定したい」という質問はとても多いです。ポイントは、削除は基本的に「残す行を明示して消す」というより、「重複の中からどれか1つが残り、他が消える」方向で動くことです。

そのため、残したい行を“先に並び替えで上に持ってくる”のがコツです。

例:更新日が新しい行を残したい場合

  1. 更新日列で降順に並べ替える(新しい日付が上)

  2. その状態で重複削除を実行する

  3. 重複グループの上側が残りやすくなる

また、削除が怖い場合は、いきなり消さずに次の方法が安全です。

  • 回数列(COUNTIF/COUNTIFS)で重複を抽出

  • どの行を残すかを「残すフラグ」などで決める

  • 最後に不要行だけを削除する(または別シートに必要行だけをコピーして運用する)

「最初の1件だけ残す」は可能ですが、残す基準があるなら、並べ替えやレビュー列を挟むと事故が減ります。

部分的に一致する重複だけを消したい

「部分的に一致」とは、多くの場合「ある列(キー)は同じだが、他列が違う」ケースです。ここで大事なのは、目的が次のどちらかを見極めることです。

  • 同一人物(同一データ)として統合したい
    → どの列を正にするか(新しい住所、正しい部署など)を決め、統合方針が必要です。単純削除は危険です。

  • 同一キーの複数行は不要なので、どれか1行にしたい
    → 残す優先順位(更新日、ステータスなど)を決めて、並べ替え→削除が有効です。

部分一致を機械的に削除する前に、まずは COUNTIFSで「どの条件で一致しているのか」をはっきりさせてください。例えば「メール+イベント名」まで一致しているなら削除して良いが、「メールだけ一致でイベントが違うなら別件」など、条件の切り分けができます。

そして、どうしても削除判断が難しい場合は、次の逃げ道が安全です。

  • 元データは残す

  • UNIQUEやフィルタで「必要な一覧だけ」別に作る

  • その一覧を業務の入力にする(宛先、集計、共有)

「消す」以外の解決策を持っておくと、部分一致の厄介さに巻き込まれにくくなります。