Excelで条件に基づいてユニークなリストを作成する9つの方法【初心者向け完全ガイド】
Microsoft Excelには、複数の条件を満たすユニーク(一意)なリストを作成するためのさまざまな方法が用意されています。ユニークなリストは一般的に、表から重複データを取り除く目的で作成されます。この記事では、複数の条件に基づいてユニークなリストを生成するための実践的なテクニックを、具体例とともに詳しく解説します。
条件に基づいてExcelでユニークなリストを作成する9つの方法
方法1:複数列の条件でユニークな行のリストを作成する
下の画像では、左側の表にスポーツ名・参加者名・年齢のランダムなデータが入力されています。右側の表は出力用の表で、ここにユニークな値だけを抽出していきます。例えば、参加者の一意な名前とその年齢を知りたい場合を考えてみましょう。

ここでは、範囲や配列から一意の値を返すUNIQUE関数を使用します。この関数の基本構文は以下の通りです。
=UNIQUE(array, [by_col], [exactly_once])
UNIQUE関数はExcel 365でのみ使用可能ですが、記事の後半では従来の関数を組み合わせた代替方法も3つご紹介します。
まず、セルF5に入力する必要のある数式は次の通りです。
=UNIQUE(B5:C13,FALSE,FALSE)
Enterキーを押すと、参加者のユニークな名前とそれに対応する年齢を含む配列が返されます。

方法2:アルファベット順に並べ替えたユニークな値のリストを取得する
SORT関数を使えば、ユニークな値をアルファベット順に並べ替えることも可能です。昇順(A〜Z)または降順(Z〜A)の並べ替え基準を指定することで、参加者名を頭文字に基づいて並べ替えることができます。
出力先のセルE5に入力する、SORT関数とUNIQUE関数を組み合わせた数式は以下の通りです。
=SORT(UNIQUE(B5:C13,FALSE,FALSE),,1)
Enterキーを押すと、A〜Zのアルファベット順に並べ替えられた配列が返されます。

方法3:ユニークな値を1つのセルに連結してリスト化する
2つの列からユニークなデータを抽出し、それらを結合して1つの列に表示したい場合もあります。下の画像の例では、区切り文字としてカンマ(,)を使用し、ユニークな名前と対応する年齢を1つの列にまとめて表示します。異なる2つの列の値を連結するために、アンパサンド(&)を使用します。
出力先のセルF5に入力する必要のある数式は次の通りです。
=UNIQUE(B5:B13&", "&C5:C13)
この数式は、ユニークな行の配列を1つの列として返します。

方法4:条件付きでユニークな値のリストを作成する(UNIQUE-FILTER数式)
i. 複数のAND条件でユニークな値を特定する
このセクションでは、いくつかの条件を追加し、それらの条件に基づいてユニークなデータを抽出します。例えば、「水泳のみに参加した25歳未満の参加者」のユニークな名前を知りたい場合です。このような場合は、UNIQUE関数とFILTER関数を組み合わせて、指定した条件でデータを絞り込みます。

出力先のセルF5に入力する必要のある数式は以下の通りです。
=UNIQUE(FILTER(B5:C13,(D5:D13=G9)*(C5:C13<G10)))

Enterキーを押すと、選択した条件に基づいたユニークな名前と対応する年齢の配列が返されます。

ii. 複数のOR条件でユニークな値を検索する
今度は、屋外スポーツである「水泳」と「サイクリング」の両方に参加した参加者のユニークな名前を知りたいとしましょう。条件を1つの列から指定する場合は、FILTER関数内で2つの条件を数値の加算(+)でつなぐだけでOKです。
セルF5に入力する必要のある数式は次のようになります。
=UNIQUE(FILTER(B5:C13,(D5:D13=F11)+(D5:D13=F12)))

Enterキーを押せば、以下のスクリーンショットのように、抽出されたユニークなデータがすぐに表示されます。

iii. 空白セルを無視してユニークな値のリストを取得する
データセットには空白のセルや行が含まれていることがあります。空白行をスキップして表からユニークなデータを抽出したい場合は、数式内で比較演算子「<>」(等しくない)を使用します。
出力先のセルF5に入力する必要のある数式は以下の通りです。
=UNIQUE(FILTER(B5:C13,D5:D13<>""))

Enterキーを押すと、空白でないユニークな行のみが出力テーブルに表示されます。

方法5:指定した列からユニークな値のリストを抽出する
特定の列だけからユニークなデータを抽出したいケースを想定してみましょう。マウスカーソルで離れた複数の列を選択し、そのままUNIQUE関数の引数として入力することはできません。そこで、CHOOSE関数をUNIQUE関数と組み合わせます。CHOOSE関数を使うと、インデックス番号に基づいて任意の数の指定列やセル範囲を選択できます。
今回のデータ表からは、「名前(B列)」と「スポーツ名(D列)」の2つの列から、参加者のユニークな名前を抽出して表示します。
セルF5に入力する必要のある数式は次の通りです。
=UNIQUE(CHOOSE({1,3},B5:B13,C5:C13,D5:D13))

Enterキーを押すと、下の画像のように、離れた2つの列からユニークな名前と対応するスポーツ名が返されます。

CHOOSE関数内のインデックス番号は「1」と「3」であり、これは値のリストから1番目と3番目のセル範囲を選択することを意味します。その後、UNIQUE関数が指定された列のみを考慮し、それらの列からユニークなデータを配列として返します。
方法6:ユニークなリスト作成時にIFERROR関数を使う
UNIQUE関数の外側にIFERROR関数を組み合わせれば、戻り値にエラーが見つかった場合にカスタムメッセージを表示できます。例えば、「21歳未満の参加者」のユニークな名前を知りたいとします。21歳未満の参加者が存在しないため、数式は本来#N/Aエラーを返します。しかし、このエラーをそのまま表示する代わりに、IFERROR関数を使ってカスタムメッセージ「Not Found(見つかりません)」を表示させましょう。
セルF5に入力する必要のある数式は次の通りです。
=IFERROR(UNIQUE(FILTER(B5:C13,C5:C13<=G10)), "Not Found")

Enterキーを押すと、以下のスクリーンショットのように指定したメッセージが返されます。

方法7:条件に基づいてユニークなリストを抽出する(INDEX-MATCH数式)
ここからはUNIQUE関数を使わず、INDEX関数とMATCH関数の組み合わせを適用します。INDEX関数は、指定した行と列の交差位置にあるセルの値または参照を返します。一方、MATCH関数は、指定した範囲内で指定した値と一致する項目の相対的な位置を返します。ここでは、「水泳のみに参加した参加者」のユニークな名前を取得する場合を考えます。
📌 ステップ1:
➤ 出力先のセルF5を選択し、以下を入力します。
=INDEX(B5:B13, MATCH(0, IF($F$12=$D$5:$D$13,COUNTIF($F$4:$F4, $B$5:$B$13), ""), 0))
➤ Enterキーを押します。

最初のユニークな名前が戻り値として表示されます。
📌 ステップ2:
➤ フィルハンドルを使ってセルを右方向へドラッグします。
これで参加者の年齢も表示されます。

📌 ステップ3:
➤ セルG5から、#N/A値が現れるまで列を下方向へオートフィルします。
以上のように、INDEX-MATCH数式を使えば、指定した条件に基づいてユニークなデータを抽出できます。

🔎 数式の仕組みは?
- COUNTIF($F$4:$F4, $B$5:$B$13):ここでのCOUNTIF関数は、範囲B5:B13内のすべてのセルを格納・カウントするために使われており、次のような結果を返します。
{0;0;0;0;0;0;0;0;0}
- IF($F$12=$D$5:$D$13, COUNTIF($F$4:$F4, $B$5:$B$13), ""):IF関数がセル内の指定条件を検索し、次のような結果を返します。
{0;"";0;"";"";0;"";"";""}
- MATCH関数が、前のステップで見つかったセルの行番号を返します。
- 最後に、INDEX関数がその行番号に基づいてデータを抽出します。
方法8:複数の条件に基づいてユニークなリストを作成する
このセクションでは、複数の条件を適用した場合にINDEX-MATCH数式がどのように機能するかを見ていきます。例えば、「水泳に参加しており、かつ25歳未満の参加者」のユニークな名前を知りたい場合です。

出力先のセルF5に入力する必要のある数式は以下の通りです。
=IFERROR(INDEX($B$5:$B$13,MATCH(0,COUNTIF(F4:$F$4,$B$5:$B$13)+IF(D5:D13=$G$9,1,0)+IF(C5:C13<$G$10,1,0),0)),"")

Enterキーを押し、出力列の新しいセルをオートフィルすると、下の画像のようにユニークな名前が表示されます。

この数式では、2つのIF関数で条件を指定し、COUNTIF関数がそれらの条件を考慮しながら出力セルの配列を抽出します。前の方法で説明したように、INDEX-MATCH数式がその配列に基づいて結果を返します。また、IFERROR関数は、エラーが見つかった場合にカスタムメッセージを返すために使用されています。
方法9:条件に基づいて行と列に沿って複数のユニークなリストを作成する
最後の方法では、Excelテーブルを使って複数のユニークなデータリストを抽出します。下の画像では、下部の表にスポーツ種目別の参加者のユニークな名前が表示されています。

テーブル(セル範囲B5:C13)には「Sports」という名前を付けています。列のヘッダー名は「SportsName」と「Name」です。なお、テーブルのヘッダーに空白を含めてはならない点に注意してください。
📌 ステップ1:
➤ 最初の出力先セルB16に入力する必要のある数式は次の通りです。
=IFERROR(INDEX(Sports,SMALL(IF(Sports[SportsName]=B$15,ROW(Sports)-4),ROW(1:1)),2),"")

Enterキーを押すと、最初の出力値がすぐに返されます。
📌 ステップ2:
➤ フィルハンドルを使って、空白セルが現れるまで列を下方向へフィルします。

📌 ステップ3:
➤ 1列目の出力範囲(B16:B20)をコピーします。
➤ セルC16に、数式(F)オプションを選択して貼り付けます。

これで、サイクリングのみに参加した参加者のユニークな名前が2列目に表示されます。
📌 ステップ4:
➤ 同様に、コピーした値を数式としてセルD16とE16にも貼り付けます。
これで、スポーツ種目別のその他の参加者名もすぐに取得できます。ただし、ここで重要な注意点があります。B列の最初の戻り値からフィルハンドルを使って右方向へオートフィルすることはできません。オートフィルを使用するとデータが不正になり、正しい出力を抽出できなくなります。

🔎 数式の仕組みは?
- IF(Sports[SportsName]=B$15, ROW(Sports)-4):数式のこの部分は、セルB15のヘッダーで指定された条件を検索し、次のような結果を返します。
{1;FALSE;FALSE;4;FALSE;FALSE;7;8;FALSE}
- SMALL(IF(Sports[SportsName]=B$15, ROW(Sports)-4), ROW(1:1)):SMALL関数が前の出力から最小の数値を抽出します。セルC16の場合は「1」です。
- INDEX関数が、SMALL関数で指定された行番号に基づいて名前を取り出します。
- IFERROR関数は、エラー出力が見つかった場合に空白セルを表示するために使用されています。
- この組み合わせ数式において、「ROW(Sports)-4」の部分にある数字「4」は、元のデータテーブルのヘッダーの行番号を表しています。
まとめ
本記事で紹介したすべての方法が、データテーブルからユニークな値のリストを作成する際に、皆さんのExcel作業に役立つことを願っています。ご質問やフィードバックがありましたら、コメント欄でお気軽にお知らせください。また、当サイトではExcel関数に関する他の記事も多数掲載していますので、ぜひチェックしてみてください。
あわせて読みたい関連記事
- Excelで箇条書きリストを作成する方法(9つの方法)
- Excelでセル内にリストを作る3つのクイックメソッド
- Excelで価格表を作成する方法(ステップバイステップガイド)
-
Excelでプロジェクトタイムラインを作成する3つの簡単な方法
このチュートリアルでは、Excelを使ってプロジェクトタイムラインを作成する方法を解説します。小規模なプロジェクトを管理している場面を想定し、その進捗管理のためにタイムラインを作成していきます。Excelを活用すれば、プロジェクトタイムラインは誰でも簡単に作れます。ここでは、Microsoft Excelのさまざまな機能を使った作成手順を詳しくご紹介します。 練習用ワークブックはこちらからダウンロードできます。 プロジェクトタイムラインとは? プロジェクトタイムラインとは、プロジェクトの進行中に発生する重要なイベントやマイルストーンを一覧化したものです。一般的には、プロジェクトの一連の
-
Excelでドロップダウンリスト付きのデータ入力フォームを作成する2つの方法
Microsoft Excelでは、データ入力フォームや計算フォームなど、さまざまな種類のフォームを作成できます。こうしたフォームを活用すれば、データ入力が格段に楽になり、作業時間の大幅な節約にもつながります。また、Excelには「ドロップダウンリスト」という便利な機能もあります。限られた値を何度も手入力するのは面倒ですが、ドロップダウンリストを使えば、リストから選ぶだけで簡単に値を入力できます。この記事では、Excelでドロップダウンリスト付きのデータ入力フォームを作成する方法を、具体的な操作画面とともにわかりやすく解説します。 Excelでドロップダウンリスト付きデータ入力フォームを