=UNIQUE(B2:B8)は、B2:B8の各値を最初に出てきた順に1回ずつ返します。下のシートではNorthが3回、Southが2回出てきますが、結果では各地域が1回だけ並びます。結果はE2から下にスピルし、データを変えると更新されます。B5にWestと入力すると、Eastの行はCaraだけだったので、結果からEastが消えます。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Regions | |
| 2 | Ann | North | 120 | North | |
| 3 | Ben | South | 80 | South | |
| 4 | Ann | North | 90 | East | |
| 5 | Cara | East | 150 | West | |
| 6 | Ben | South | 80 | ||
| 7 | Dan | North | 60 | ||
| 8 | Eve | West | 95 |
UNIQUEは元のリストを変えません。表そのものから重複する行を削除するには、データタブの「重複の削除」ボタンを使います(両方の方法は重複の削除で紹介しています)。
UNIQUE関数の構文
=UNIQUE(array, [by_col], [exactly_once])
array(配列)は値を取り出す範囲か配列です。by_col(列の比較)は、行を比べるならFALSE(既定)、列を比べるならTRUEです。exactly_once(回数指定)は、重複を除いたすべての値を返すならFALSE(既定)、1回だけ出てくる値だけを返すならTRUEです。
UNIQUEにはExcel 2021、Excel 2024、Microsoft 365のいずれかが必要です。それより古いバージョンでは#NAME?になります。Googleスプレッドシートにも、同じ3つの引数を持つUNIQUEがあります。
列を下に並ぶリストではなく行を横に並ぶリストなら、by_colをTRUEにします。=UNIQUE(B1:H1,TRUE)は、その行の重複を除いた値を行として返します。
複数の列で重複しない行を出す
UNIQUEに2つ以上の列を渡すと、行全体を比べます。すべての列がほかの行と一致するときだけ、その行は重複になります。ここでは担当者と地域の組み合わせです:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Rep | Region | |
| 2 | Ann | North | 120 | Ann | North | |
| 3 | Ben | South | 80 | Ben | South | |
| 4 | Ann | North | 90 | Cara | East | |
| 5 | Cara | East | 150 | Dan | North | |
| 6 | Ben | South | 80 | Eve | West | |
| 7 | Dan | North | 60 | |||
| 8 | Eve | West | 95 |
AnnとNorth、BenとSouthがそれぞれ2回出てくるので、7行が5行になります。DanもNorthですが、DanとNorthは別の組み合わせなので残ります。3列すべてを指定した=UNIQUE(A2:C8)では、Annの2行は(120と90が違うので)両方残り、2つ目のBen、South、80の行だけが除かれます。
ちょうど1回だけ出てくる値
3つ目の引数を指定すると、問いが「どんな値があるか」から「どの値が繰り返されていないか」に変わります:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Distinct | Exactly once | |
| 2 | Ann | North | 120 | Ann | Cara | |
| 3 | Ben | South | 80 | Ben | Dan | |
| 4 | Ann | North | 90 | Cara | Eve | |
| 5 | Cara | East | 150 | Dan | ||
| 6 | Ben | South | 80 | Eve | ||
| 7 | Dan | North | 60 | |||
| 8 | Eve | West | 95 |
E2は5人の担当者を全員並べます。AnnとBenはそれぞれ2回出てくるので、F2はCara、Dan、Eveだけを並べます。2つのカンマでby_colを飛ばしていて、既定のままです。
並べ替えた重複のない一覧
UNIQUEは最初に出てきた順を保ちます。アルファベット順の一覧にするにはSORTで囲みます。隣ではCOUNTAで重複を除いた値の数を数えています:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Regions A to Z | Count | |
| 2 | Ann | North | 120 | East | 4 | |
| 3 | Ben | South | 80 | North | ||
| 4 | Ann | North | 90 | South | ||
| 5 | Cara | East | 150 | West | ||
| 6 | Ben | South | 80 | |||
| 7 | Dan | North | 60 | |||
| 8 | Eve | West | 95 |
E2はEast、North、South、Westを返し、F2は4を表示します。ZからAにするには=SORT(UNIQUE(B2:B8),,-1)を使います。一覧にせずに数えるなら、=ROWS(UNIQUE(B2:B8))でも同じ4になります。UNIQUEのないバージョンのExcel向けの数式は重複を除いた件数を数えるで説明しています。
条件付きのUNIQUE
条件を満たす行からだけ重複を除いた値を取り出すには、先に抽出してから結果をUNIQUEに渡します。90以上の売上が1件でもある担当者です:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Reps | |
| 2 | Ann | North | 120 | Ann | |
| 3 | Ben | South | 80 | Cara | |
| 4 | Ann | North | 90 | Eve | |
| 5 | Cara | East | 150 | ||
| 6 | Ben | South | 80 | ||
| 7 | Dan | North | 60 | ||
| 8 | Eve | West | 95 |
Annにはそうした売上が2件(120と90)ありますが、1回だけ表示されます。結果はAnn、Cara、Eveです。C3を100に変えると、Benがリストに加わります。複数の条件を掛け合わせるものも含め、FILTERのどの条件でもここで使えます。
UNIQUEをプルダウンリストの元にする
UNIQUEから作ったプルダウンリストは、同じ項目を2回表示することがなく、リストを編集しなくても新しい値を取り込みます。F1をクリックしてリストを開いてください。項目はE列のUNIQUEの結果から来ています。B6にCentralと入力すると、リストに5つ目の項目が現れます。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Regions | North | |
| 2 | Ann | North | 120 | North | 270 | |
| 3 | Ben | South | 80 | South | ||
| 4 | Ann | North | 90 | East | ||
| 5 | Cara | East | 150 | West | ||
| 6 | Ben | South | 80 | |||
| 7 | Dan | North | 60 | |||
| 8 | Eve | West | 95 |
F2は選んだ地域の売上を合計し、Northなら270です。Excelでは データ > データの入力規則 > リスト で設定し、「元の値」に結果の最初のセルと#を入力します:=$E$2#。#は「スピルした結果全体」という意味なので、リストはUNIQUEと一緒に伸び縮みします。=$E$2:$E$5のような固定の範囲だと、5つ目の地域が漏れます。
練習: 並べ替えた重複のない一覧
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Regions | |
| 2 | Ann | North | 120 | ||
| 3 | Ben | South | 80 | ||
| 4 | Ann | North | 90 | ||
| 5 | Cara | East | 150 | ||
| 6 | Ben | South | 80 | ||
| 7 | Dan | North | 60 | ||
| 8 | Eve | West | 95 |
やってみよう: E2で、各地域を1回ずつ、AからZの順に並べてください。
同じに見える値をUNIQUEが残す理由
UNIQUEは、大文字と小文字以外は値を厳密に比べます。1回だと思っていた値が2回出てくるときは、セルが目に見えない形で違っています:
- 末尾のスペース。 "North "と"North"は別の値です。元のデータをTRIMできれいにするか、数式の中でスペースを取り除きます:
=UNIQUE(TRIM(B2:B8))。 - 文字列として保存された数値。
'101と101は同じように見えますが、片方は文字列なので両方残ります。VALUEか データ > 区切り位置 で列を変換します。 - 大文字と小文字は原因ではない。 UNIQUEは大文字と小文字を区別しないので、appleとAppleは同じ値として数え、結果には最初に出てきた綴りが残ります。
=UNIQUE({"apple";"Apple";"North ";"North"})
Excelではこれが3つの値を返します。apple、末尾にスペースのある"North "、そしてNorthです。
よくある質問
ExcelのUNIQUE関数は何をする関数ですか?
範囲の重複しない値をそれぞれ1回ずつ返します。=UNIQUE(B2:B8)は、B2:B8の地域をそれぞれ最初に出てきた順に1回だけ並べます。結果は数式のセルから下にスピルし、データが変わると更新されます。
Excelで重複を除いた値を並べ替えて表示するには?
UNIQUEをSORTで囲みます。=SORT(UNIQUE(B2:B8))は重複を除いた値をAからZの順に返します。ZからAにするには、SORTの中に,,-1を足します:=SORT(UNIQUE(B2:B8),,-1)。
Excelの「重複を除いた値」と「1回だけの値」の違いは何ですか?
=UNIQUE(A2:A8)は重複を除いた値、つまり繰り返し出てくる値も含めてすべての値を1回ずつ返します。=UNIQUE(A2:A8,,TRUE)はちょうど1回だけ出てくる値を返し、繰り返し出てくる値はすべて除きます。
UNIQUEが#NAME?になるのはなぜですか?
そのバージョンにUNIQUEがないからです。UNIQUEにはExcel 2021、Excel 2024、Microsoft 365のいずれかが必要です。Excel 2019以前では、リストのコピーに データ > 重複の削除 を使うか、データ > 詳細設定 で「重複するレコードは無視する」を使います。