Googleスプレッドシートで重複を取り除く方法は、大きく分けて2つあります。
- データクリーンアップの「重複を削除」:元の表から重複行を直接消す
- UNIQUE関数:元の表はそのままにして、別の場所に重複のない一覧を作る
どちらを使っても重複は取り除けますが、元データが残るか、元データが更新されたときに結果も変わるかが違います。先に使い分けを決めてから作業すると、消してはいけない行を消す事故を防げます。
使い分けの目安
| 目的 | 向いている方法 |
|---|---|
| 取り込んだデータを掃除して、その表を今後も使う | 重複を削除 |
| 元データは残したまま、取引先一覧などを別に作りたい | UNIQUE関数 |
| 元データが毎日増えるので、一覧も自動で追従させたい | UNIQUE関数 |
| どの行が消えたかを後から確かめたい | UNIQUE関数、または重複を削除の前にシートをコピー |
| 一部の列が同じなら、行ごと1件にまとめたい | 重複を削除(基準にする列を選べる) |
迷ったら、まずUNIQUE関数で結果を確かめてから、必要に応じて「重複を削除」を使う順番にすると安全です。
作業前に:シートのコピーと件数の記録
「重複を削除」は元の表を書き換えます。実行する前に次の準備をしておきます。
- シートのタブを右クリックして「コピーを作成」を選び、元のシートを残す
- 削除前のデータ件数を記録する(例:見出しを除いた件数を
=COUNTA(A2:A)で数える。A列に空欄がない列を選ぶ) - 削除後に残るはずの件数を、先に計算しておく(下の「件数で結果を確かめる」を参照)
「ファイル」メニューの変更履歴から以前の状態に戻すこともできますが、他の人が同時に編集している場合は、その人の変更まで戻してしまうことがあります。シートのコピーを作っておく方が確実です。
「重複を削除」で元データから消す手順
- 表全体(見出し行を含むすべての列)を選ぶ
- 「データ」メニュー →「データクリーンアップ」→「重複を削除」を開く
- 1行目が見出しなら「データにヘッダー行が含まれている」にチェックを入れる
- 「分析する列」で、重複を判定する基準の列を選ぶ
- 「重複を削除」を押す
- 表示される結果(削除された重複行の数と、残った行の数)を記録する
範囲は表全体を選ぶ
この機能は選んだ範囲の中だけを処理します。たとえば重複を判定したいB列だけを選んで実行すると、B列のセルだけが削除・移動され、他の列とのずれが起きるおそれがあります。範囲は表全体を選び、基準にする列はダイアログの中で選ぶ、と覚えておくと安全です。
見出し行のチェックを忘れない
「データにヘッダー行が含まれている」にチェックを入れないと、見出し行もデータの1行として扱われます。このチェックを入れると、ダイアログの列の選択肢に見出しの名前が表示されるので、列を選び間違えにくくなります。
基準にする列の選び方
| 選び方 | 結果 | 使う場面 |
|---|---|---|
| すべての列 | 全部の列が同じ行だけを消す | 同じデータを二重に貼り付けた行を消したいとき |
| 一部の列(例:顧客ID) | その列が同じなら、他の列が違っても行ごと消す | 1つのIDにつき1行だけ残したいとき |
一部の列だけで判定すると、他の列の値(金額や更新日など)が違う行も消えます。消える行に残すべき情報がないか、事前に確かめてください。
重複した行のうちどれが残るかは、通常は上にある行です。残したい行が決まっている場合(例:更新日が新しい行)は、あらかじめ並べ替えて、残したい行を上に置いてから実行します。動作に不安があるときは、数行の小さな表で一度試してから本番の表で行ってください。
UNIQUE関数で別の場所に一覧を作る手順
UNIQUE関数は、指定した範囲から重複を除いた結果を、関数を入れたセルから下と右へ広げて表示します。
1列の一覧を作る
空いている列の先頭に見出しを手で入力し、その下のセルに次のように入れます。
=UNIQUE(B2:B)
範囲を見出しの下(2行目)から指定すれば、見出しは結果に含まれません。
空欄を除く
B2:Bのように列の最後まで指定すると、空欄が1つ分、結果に混ざります。空欄を除きたい場合はFILTER関数と組み合わせます。
=UNIQUE(FILTER(B2:B, B2:B<>""))
複数の列の組み合わせで重複を除く
=UNIQUE(A2:C)のように複数列を指定すると、指定した列の値の組み合わせが同じ行が1行にまとまります。基準にしたい列だけを指定すれば、その列の組み合わせの一覧になります。
UNIQUE関数を使うときの注意
- 結果が広がる先のセルに値があると、エラーになって結果が表示されません。結果の下と右は空けておく
- 元データを変えると結果も変わります。その時点の一覧として残したい場合は、結果をコピーし、「値のみ貼り付け」(Ctrl+Shift+V)で別の場所に貼る
- 結果は元データの並び順のままです。並べ替えたい場合は
=SORT(UNIQUE(B2:B))のように囲む
件数で結果を確かめる
重複削除の前後で、件数が合っているかを確かめます。
| 確認すること | 数式の例 |
|---|---|
| 削除前のデータ件数 | =COUNTA(A2:A) |
| 1列の重複を除いた件数 | =COUNTA(UNIQUE(FILTER(B2:B, B2:B<>""))) |
| 複数列の組み合わせで重複を除いた件数 | =ROWS(UNIQUE(A2:C100)) |
「重複を削除」を使う場合は、実行前にUNIQUE関数で残るはずの件数を出しておきます。実行後の結果に表示された残りの行数がそれと一致すれば、意図した基準で削除できています。
例:削除前500件、UNIQUEで数えた件数470件 → 実行後の結果が「30行を削除、470行が残った」なら一致
同じに見えて重複と判定されないとき
値が少しでも違うと、別の値として扱われます。
- 前後の空白:「データ」→「データクリーンアップ」→「空白文字を削除」で、余分な空白を取り除いてから判定する
- 全角と半角:「ABC」と「ABC」は別の値になる
- 数値と文字列:見た目が同じ「100」でも、数値と文字列では一致しない場合がある
- 大文字と小文字:区別するかどうかを小さな表で確かめてから判断する
「株式会社」と「(株)」のような表記ゆれは、どちらの方法でもまとまりません。表記をそろえる作業(名寄せ)を先に行う必要があります。
作業後のチェックリスト
- 元のシートのコピーが残っている
- 見出し行が残っていて、データとして扱われていない
- 基準にした列と、その列を選んだ理由を説明できる
- 削除前の件数・削除件数・残った件数を記録した
- 残った件数が、UNIQUE関数で数えた件数と一致している
- UNIQUE関数の結果を固定したい場合は、値として貼り付けた
