【Googleスプレッドシート】UNIQUE関数で重複を除いた一覧を作る!列・行両方への対応

【Googleスプレッドシート】UNIQUE関数で重複を除いた一覧を作る!列・行両方への対応
🛡️ 超解決

顧客リストや商品データを管理していて、同じ値が何度も登場する重複を1つに絞り込みたい場面は頻繁に発生します。手作業で行を削除する方法ではミスが起きやすく、データが追加されるたびにやり直しが必要です。UNIQUE関数を使えば、元データを変えずに重複を除いた一覧を別の場所に動的に表示でき、データ追加時も自動的に反映されます。

UNIQUE関数はGoogleスプレッドシート独自の便利な関数で、引数に範囲を渡すだけで重複削除済みの結果を返します。1列のリストはもちろん、複数列のテーブルから重複行を除く使い方や、行方向のデータに対して列単位で重複を除く応用も可能です。

この記事では、UNIQUE関数の基本構文、列方向と行方向それぞれの使い方、複数列での重複判定の手順、よくある失敗パターンとその対処までをまとめて解説します。

【要点】UNIQUE関数で重複を除いた一覧を作る3つのポイント

  • =UNIQUE(範囲) で列方向の重複を除去: 1列のリストから重複を除き、ユニークな値だけを縦方向に並べた結果を返します。
  • =UNIQUE(範囲, FALSE, FALSE) で複数列の行重複を除去: 第2引数で列単位の比較に切り替え、第3引数で1回だけ出現する値の抽出を切り替えられます。
  • =TRANSPOSE(UNIQUE(TRANSPOSE(範囲))) で行方向に対応: 横並びデータを転置してUNIQUEを通すことで、行方向の重複も除去できます。

ADVERTISEMENT

UNIQUE関数の仕組みと引数の使い分け

UNIQUE関数は指定した範囲から重複を除いた一意な値の配列を返す関数です。基本構文は =UNIQUE(範囲, by_column, exactly_once) の3引数で、第2と第3の引数は省略可能です。第2引数の by_column はFALSE(既定)で行単位、TRUEで列単位の比較を行います。第3引数の exactly_once はFALSE(既定)で重複を1つに集約、TRUEで「1回しか登場しない値」だけを抽出します。

最も多い使い方は1列のデータから重複を除くケースで、=UNIQUE(A2:A100) のように指定するだけで結果が縦に展開されます。元データに値が追加されると自動的に結果も拡張されるため、メンテナンスフリーで動的なリスト管理が可能です。

列方向と行方向の違い

列方向のデータ(A2:A100のように縦に並ぶデータ)は標準のUNIQUE関数で素直に処理できます。一方、行方向のデータ(A1:Z1のように横に並ぶデータ)には第2引数のTRUE指定が必要で、=UNIQUE(A1:Z1, TRUE) のように書くと横方向の重複を除いた結果が同じく横方向に返されます。

複数列での重複判定

複数列のテーブル(例えば氏名と部署が並ぶ表)から「氏名と部署の組み合わせ」が重複する行を除くには、=UNIQUE(A2:B100) のように2列の範囲を指定します。両方の列の値が一致する行だけが重複として扱われ、片方でも違えば別行として残ります。

列方向のリストから重複を除く基本手順

  1. UNIQUEを表示したい先頭セルを選択します
    結果が縦方向に展開されるため、結果が広がる範囲が空になるよう余裕のある位置を選んでください。
  2. =UNIQUE(対象範囲) を入力します
    例えばA2からA100の重複を除く場合は =UNIQUE(A2:A100) と入力してEnterを押します。
  3. 結果が縦に展開されたことを確認します
    重複していたデータが1つに集約され、登場順に並んだユニークな値が表示されます。
  4. 元データを更新したときに結果が自動拡張されるかを確認します
    A2:A100の範囲内に新しい値を追加すると、UNIQUEの結果にも自動的に反映されます。範囲をA2:A1000のように広めに指定しておくと将来追加分にも対応できます。

行方向のデータに対応するTRANSPOSE併用の手順

  1. 結果を表示したい先頭セルを選択します
    行方向に展開される結果のため、横方向に十分なスペースを確保してください。
  2. =TRANSPOSE(UNIQUE(TRANSPOSE(範囲))) と入力します
    外側のTRANSPOSEで結果を横向きに戻すことで、元データと同じ向きの結果が得られます。
  3. または =UNIQUE(範囲, TRUE) を試します
    第2引数にTRUEを指定すると列単位の比較になり、横方向のデータをそのまま処理できます。
  4. 結果が横方向に展開されたことを確認します
    元データと同じ行方向にユニークな値が並びます。

ADVERTISEMENT

複数列の組み合わせから重複行を除く手順

  1. 結果を表示するセルに =UNIQUE(複数列範囲) を入力します
    2列の場合は =UNIQUE(A2:B100)、3列の場合は =UNIQUE(A2:C100) のように指定します。
  2. 結果が複数列に展開されたことを確認します
    すべての列の値が一致する行は1つに集約され、結果も同じ列数で表示されます。
  3. 1回だけ登場する組み合わせを抽出する場合は第3引数にTRUE
    =UNIQUE(A2:B100, FALSE, TRUE) と書くと、2回以上登場するデータが除外され、1回しか出ない組み合わせだけが残ります。
  4. 並び順は登場順なので必要に応じてSORTと併用します
    =SORT(UNIQUE(A2:B100)) のように外側にSORTを掛けると、五十音順や昇順での整然とした表示にできます。

UNIQUEで起きやすい失敗パターンと対処

結果が #REF! エラーになる

UNIQUEの結果が展開される範囲に既存の値が入っているとエラーになります。結果が広がる先のセルを空にしてください。複数列のUNIQUEは右方向にも結果が広がるため、隣接する列もチェックします。

同じ値なのに別物として扱われる

表面上は同じ値でも、末尾に半角スペースが付いていたり全角と半角が混在していると別の値として認識されます。TRIM関数で前後の空白を除去し、ASC関数やJIS関数で全角半角を統一してからUNIQUEを掛けると整います。

大文字と小文字が区別される

UNIQUEはアルファベットの大文字小文字を区別します。「Apple」と「apple」は別の値として残ります。区別したくない場合はLOWER関数やUPPER関数で統一してから処理してください。

計算が遅い

範囲を A:A のように列全体に指定すると、空セルまで計算対象になるため処理が重くなります。実際にデータがある範囲(例:A2:A10000)に絞ると速度が改善します。

UNIQUE関連関数の使い分け比較

関数 用途 戻り値の方向
UNIQUE(範囲) 行単位で重複除去 縦方向
UNIQUE(範囲, TRUE) 列単位で重複除去 横方向
UNIQUE(範囲, FALSE, TRUE) 1回だけ登場する値の抽出 縦方向
SORT(UNIQUE(範囲)) 重複除去+並べ替え 縦方向
COUNTUNIQUE(範囲) ユニークな値の個数のみ 単一の数値

まとめ

UNIQUE関数は重複削除の基本ツールで、=UNIQUE(範囲) で列方向、第2引数TRUEで列単位の比較、TRANSPOSE併用で行方向と、用途に応じて使い分けられます。複数列を範囲指定すれば組み合わせの重複も判定でき、第3引数のTRUEを使えば1回だけ登場する値の抽出も可能です。元データに対する破壊的な操作なしで動的にユニークな一覧を生成できるため、データ追加に強くメンテナンス工数が大きく減ります。SORTやCOUNTUNIQUEと組み合わせれば、整理された分析テーブルを数式1つで構築できます。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。