更新日:、 作成日:

エクセル UNIQUE 関数:セルの範囲から一意の値を取得する

はじめに

エクセルの UNIQUE 関数の使い方を紹介します。

UNIQUE 関数はセルの範囲から一意な行や列を取得します。

=UNIQUE(A1:A3,FALSE) のようにして、行単位に値が重複しているか判定して一意な行を取得できます。

=UNIQUE(A1:C1,TRUE) のようにして、列単位に値が重複しているか判定して一意な列を取得できます。

=UNIQUE(A1:A3,FALSE,TRUE) のようにして、行単位に値が重複しているか判定して、重複している値をすべて除外した行を取得できます。

重複している値だけ取得したり、離れた列が一意か判定して好きな列の値を取得できます。

セルの範囲を抽出するには「FILTER 関数」を使用します。
重複を削除するには「重複データを削除する」をご覧ください。
この関数は 365 または 2021 から使用できます。

UNIQUE 関数の引数

UNIQUE(範囲)
範囲の値を行単位で比較して一意な行を配列で取得します。

UNIQUE(範囲, 列の比較, 回数指定)
列の比較範囲の値を列単位で比較して一意な列を取得するかを指定できます。回数指定で重複していないデータのみを取得するか指定できます。

引数「範囲」セルの範囲や配列を指定します。
引数「列の比較」省略できます。
FALSE または省略:引数「範囲」を行単位で比較して一意な行を取得します。
TRUE:引数「範囲」を列単位で比較して一意な列を取得します。
スピル化
引数「回数指定」省略できます。
FALSE または省略:重複している値を 1 つにして取得します。
TRUE:重複している値をすべて除外します。
スピル化

スピル化:セルの範囲や配列を指定すると結果が「スピル」します。

結果が最初から配列のため、セルの範囲や配列を指定してもその通りにはスピルされません。

使い方

UNIQUE 関数の使い方を紹介します。

結果は配列になり複数のセルに表示されます。これはスピルという機能によるものです。詳しくは「スピル、動的配列数式の使い方」をご覧ください。

1 列の中で行単位に一意な値を取得する

1 列の中で一意な値を取得します。重複している値は 1 つだけ取得します。

=UNIQUE(B3:B8)
=UNIQUE(B3:B8,FALSE,FALSE)
9

複数列の中で行単位に一意な値を取得する

複数列の中で一意な値の範囲を取得します。重複している値は 1 つだけ取得します。

=UNIQUE(B3:C8)
=UNIQUE(B3:C8,FALSE,FALSE)
10

1 行の中で列単位に一意な値を取得する

1 行の中で一意な値を取得します。重複している値は 1 つだけ取得します。

=UNIQUE(B3:G3,TRUE)
=UNIQUE(B3:G3,TRUE,FALSE)
11

複数行の中で列単位に一意な値を取得する

複数行の中で一意な値の範囲を取得します。重複している値は 1 つだけ取得します。

=UNIQUE(B3:G4,TRUE)
=UNIQUE(B3:G4,TRUE,FALSE)
12

重複している値をすべて除いて取得する

1 列の中で一意な値を取得して、重複している値をすべて除きます。

=UNIQUE(B3:B8,FALSE,TRUE)
13

高度な使い方

次の数式を入力して、重複判定する値と別の行や列の値を取得できます。「LET 関数」を使用して、何度も同じ数式を入力しないようにできます。最後に「FILTER 関数」を使用して、好きな値を抽出できます。

=LET(
判定,B3:B7,
一意値,UNIQUE(判定,FALSE,TRUE),
一意,IFERROR(XMATCH(判定,一意値),FALSE),
FILTER(B3:D7,一意))

重複しているか判定する範囲を 判定,B3:B7, の部分に入力します。

一意の値を抽出する範囲を FILTER(B3:D7,一意)) の部分に入力します。

この 2 箇所を変更するだけで、好きな列の値が重複しているか判定して、好きな範囲の値を抽出できます。

名前が一意なバージョンと値を取得する

名前が一意なときにバージョンと値も取得します。

=LET(
判定,B3:B7,
一意値,UNIQUE(判定,FALSE,TRUE),
一意,IFERROR(XMATCH(判定,一意値),FALSE),
FILTER(B3:D7,一意))

判定する名前を 判定,B3:B7, のように入力します。

抽出する範囲を FILTER(B3:D7,一意)) のように入力します。

14

名前が重複しているバージョンと値を取得する

名前が重複しているときにバージョンと値も取得します。「NOT 関数」を使用して重複している値だけを抽出できます。

=LET(
判定,B3:B7,
一意値,UNIQUE(判定,FALSE,TRUE),
一意,IFERROR(XMATCH(判定,一意値),FALSE),
FILTER(B3:D7,NOT(一意)))

判定する名前を 判定,B3:B7, のように入力します。

抽出する範囲を FILTER(B3:D7,NOT(一意))) のように入力します。

15

離れた列の一意な値を取得する

名前とバージョンが一意なときに値だけを取得します。複数の列で判定するには、その列を区切り文字を付けて結合します。

=LET(
判定,B3:B7&","&C3:C7,
一意値,UNIQUE(判定,FALSE,TRUE),
一意,IFERROR(XMATCH(判定,一意値),FALSE),
FILTER(D3:D7,一意))

判定する名前とバージョンを 判定,B3:B7&","&C3:C7, のように入力します。

抽出する値を FILTER(D3:D7,一意)) のように入力します。

16

一意な件数を取得する

名前が一意な件数を取得します。「COUNTA 関数」を使用して件数を数えられます。

=LET(
判定,B3:B7,
一意値,UNIQUE(判定,FALSE,TRUE),
COUNTA(一意値))

判定する名前を 判定,B3:B7, のように入力します。

一意値に対して「COUNTA 関数」を使用します。

17

重複している件数を取得する

名前が重複している件数を取得します。全体の件数から一意の件数を引いて重複している件数を取得できます。

=LET(
判定,B3:B7,
一意値,UNIQUE(判定,FALSE,TRUE),
COUNTA(判定)-COUNTA(一意値))
18

解説

引数「範囲」の中の空のセルは結果として 0 が表示されます。空のセルと、セルに入力された 0 は別の値として扱われます。空, 空, 0 の値なら 0 (空), 0 を取得します。

引数「範囲」の大文字と小文字は区別しません。 "ABC""abc" は同じものとして重複します。

引数「列の比較」が FALSE なら、引数「範囲」を行単位に比較して一意な行を取得します。

引数「列の比較」が TRUE なら、引数「範囲」を列単位に比較して一意な列を取得します。

引数「回数指定」が FALSE のときに 1, 1, 2 の値なら 1, 2 を取得します。重複している値は最初の値だけ取得されます。

引数「回数指定」が TRUE のときに 1, 1, 2 の値なら 2 を取得します。重複している 1 はすべて取り除かれます。

引数「回数指定」が TRUE のときに、取得する値が一つもないときはエラー #CALC! になります。