【Excel】UNIQUE関数で重複のない一覧を作る方法

この記事は約6分で読めます。

今回は、ExcelのUNIQUE関数を使い、元データから重複のない一覧を作成して更新しやすくする方法を紹介します。

UNIQUE関数とは

UNIQUE関数は、指定した範囲や配列から重複する項目をまとめ、固有の値だけを返す関数です。顧客名、商品コード、担当者、部署など、同じ値が繰り返し登場するデータから一覧を作るときに役立ちます。
「重複の削除」機能でも固有値を作れますが、実行時点の結果として確定します。元データへ新しい項目を追加しても、自動では一覧へ反映されません。UNIQUE関数は数式なので、参照範囲の変化に応じて結果を更新できます。
返された複数の値は、入力したセルから周囲へ展開されます。この動作はスピルと呼ばれます。一つの数式で可変長の一覧を作れることがUNIQUE関数の特徴です。

UNIQUE関数の基本的な使い方

一覧を表示したいセルへUNIQUE関数を入力し、重複を除きたい範囲を指定します。たとえばA列に担当者名が並んでいる場合、そのデータ範囲を関数へ渡すと、担当者ごとに一つの値が返されます。
見出しを範囲へ含めると、見出しも固有値の一つとして結果へ表示されます。通常はデータ部分だけを指定します。Excelテーブルを使っている場合は、列名による構造化参照を利用すると、行の追加に合わせて参照範囲を広げられます。
結果が表示される範囲には、別の値や結合セルを置かないようにします。展開先が塞がれていると、スピルに関するエラーが表示されます。

縦方向と横方向の重複を整理する

UNIQUE関数は通常、行単位でデータを比較します。一列のリストなら、各行の値を比べて固有項目を返します。複数列をまとめて指定した場合は、列の組み合わせが同じ行を重複として扱います。
たとえば「部署」と「担当者」の二列を指定すると、部署と担当者の組み合わせが同じ行だけがまとめられます。同じ担当者名でも所属部署が異なれば、別の組み合わせとして残ります。
横方向に並んだ項目を列単位で比較したい場合は、比較方向を指定する引数を使用します。普段の一覧は縦方向が多いため、横方向の指定を使う際は、どの単位で重複判定されるかを小さなサンプルで確認します。

一度だけ登場する値を抽出する

UNIQUE関数には、重複をまとめた一覧ではなく、元データ内に一度だけ登場する値だけを返す指定があります。重複しているものを一件へまとめる処理とは結果が異なります。
たとえば「A、A、B、C、C」というデータでは、通常の固有値一覧は「A、B、C」になります。一度だけ登場する値に限定すると「B」だけが返ります。
この指定は、照合漏れの候補、片方の一覧にだけあるコード、重複登録されていない項目などを調べるときに使えます。ただし、一度だけ登場することが正常か異常かはデータの目的によって異なります。抽出後に元データと照合できるよう、行番号や関連項目も確認します。

SORT関数と組み合わせて並べ替える

UNIQUE関数が返す値は、基本的に元データで登場する順序に沿います。五十音順、数値順、日付順などで表示したい場合は、SORT関数と組み合わせます。
まずUNIQUE関数で固有値を作り、その結果全体をSORT関数へ渡します。数式を入れ子にすると一つのセルで処理できます。処理の流れは「重複を除く」「並べ替える」の順です。
降順へしたい場合や、複数列のうち特定列を基準にしたい場合は、SORT関数の引数を調整します。抽出、重複整理、並べ替えをそれぞれ別の役割として考えると数式を組み立てやすくなります。

FILTER関数と組み合わせて条件を付ける

特定部署、期間、状態などの条件に合うデータだけから固有値を作る場合は、FILTER関数と組み合わせます。先にFILTER関数で対象行を絞り、その結果をUNIQUE関数へ渡します。
たとえば、状態が「対応中」の案件だけから担当者一覧を作る場合、状態列を条件に担当者列を抽出し、その抽出結果から重複を除きます。条件を変えると一覧も更新されるため、確認用の集計表や入力候補の作成に利用できます。
該当データがない場合、FILTER関数の結果がエラーになることがあります。該当なしのときに空欄や案内文を返す設定を加え、UNIQUE関数へ渡した後の表示も確認します。

空白を一覧から除外する

参照範囲に空白セルがあると、UNIQUE関数の結果へ空白に相当する項目が含まれる場合があります。一覧を入力候補や集計条件として使うときは、空白を除外したほうが扱いやすくなります。
FILTER関数で「空白ではない」という条件を指定し、その結果をUNIQUE関数へ渡します。空白に見えるセルでも、数式が空文字を返している場合や空白文字が入力されている場合があるため、結果が残るときは元データを確認します。
前後に余計な空白がある文字列は、見た目が同じでも別の値として扱われることがあります。TRIM関数やデータ整形機能を使い、重複判定の前に表記を揃えます。

複数列の一覧を作るときの考え方

商品コードと商品名、部署コードと部署名など、関連する複数列を一緒に一覧化したい場合は、対象列をまとめてUNIQUE関数へ指定します。
コードは同じなのに名称が異なる行があると、組み合わせが別のため両方が残ります。この結果は、名称の表記揺れやマスター不整合を見つける手掛かりになります。一方、コードだけを基準に一件へまとめたい場合は、コード列だけで固有値を作り、XLOOKUP関数などで名称を取得する方法があります。
どの列を重複判定のキーにするかを先に決めます。見た目の行全体ではなく、業務上同じデータと判断する項目を基準にすることが重要です。

スピル範囲をほかの数式で使う

UNIQUE関数の結果は、先頭セルに付けたスピル範囲演算子を使って参照できます。結果の件数が増減しても、展開された範囲全体を別の数式やグラフの元データとして扱えます。
たとえば、固有値一覧の件数を数える、一覧を別の関数へ渡すといった処理が可能です。固定範囲を指定するより、結果の長さへ追随しやすくなります。
ただし、入力規則のリストなど、機能によっては別シートのスピル範囲を直接指定しにくい場合があります。その場合は名前の定義を介するなど、利用先に合う方法を選びます。

エラーが出たときの確認項目

スピルエラーが表示された場合は、結果が展開される予定の範囲に値、数式、結合セルがないか確認します。エラーセルを選ぶと、妨げている位置が示されることがあります。
Excelテーブル内では、動的配列数式を列方向へ展開できないことがあります。UNIQUE関数の結果はテーブルの外へ配置し、参照元だけをテーブルにする構成が扱いやすくなります。
関数名が認識されない場合は、利用中のExcelがUNIQUE関数へ対応しているか確認します。対応していない環境と共有する場合は、重複の削除、詳細設定フィルター、ピボットテーブルなどの代替手段を検討します。

実務で使う際のポイント

  • 元データをExcelテーブルにして追加行を参照へ含める
  • 空白や前後のスペースを除いてから重複を判定する
  • 複数列では、業務上の重複判定キーを明確にする
  • 並べ替えが必要ならSORT関数を組み合わせる
  • 共有先のExcelが動的配列関数へ対応しているか確認する

UNIQUE関数で作った一覧をマスターとして使う場合は注意が必要です。元データの削除によって一覧項目も消えるため、正式なマスターを管理する用途では、別途確定した一覧を用意するほうが安全です。UNIQUE関数は、現時点のデータから確認用一覧を作る用途に適しています。

まとめ

ExcelのUNIQUE関数は、指定範囲から重複を除いた固有値を動的に返します。元データの追加や変更へ追随するため、担当者一覧、商品一覧、条件別の入力候補などを作るときに便利です。
SORT関数で並べ替え、FILTER関数で条件指定や空白除外を加えると、目的に合う一覧を作れます。複数列を使う場合は、どの組み合わせを同じデータと判断するかを決めます。元データを整え、重複判定の基準と一覧の用途を明確にすることが、UNIQUE関数を安定して使うポイントです。