エクセル入門
UNIQUE関数(一意の値)

Excelの初心者向け入門解説
最終更新日:2020-03-20

数式.UNIQUE関数(一意の値)


エクセル入門 > 数式 > UNIQUE関数(一意の値)


UNIQUE関数は、範囲または配列から一意(ユニーク)な値を返します。
範囲または配列から重複を削除して一意化した配列を返します。

UNIQUE関数はスピルで登場した新しい関数です。
2019年にOffice365のExcelに実装された革新的な機能としてスピルがあります。数式を入力したセルから結果があふれて隣接したセルにも出力されるのがスピルです。今までは数式を入れたセルにしか結果を出せませんでしたが、スピルでは隣接するセルにまで結果が表示されます。

UNIQUE関数の書式

=UNIQUE(配列,[列の比較],[回数指定])

配列
必須です。
並べ替え処理する元データを指定します。
セル範囲または配列です。

列の比較
省略可能。
TRUE : 一意の列を返す
FALSE : 一意の行を返す
省略するとFALSE(一意の行)になります。

そもそも引数名がとても分かりづらいです。
これは、
横(列)方向のデータを一意にする。
縦(行)方向のデータを一意にする。
ということです。
つまり、通常の縦に連なるデータに対して使う時は、
FALSE : 一意の行を返す
これを使う事になります。
従って、ほとんどの場合この引数は省略して使えば良いです。

回数指定
省略可能。
TRUE : 1回だけ出現するアイテムを返す
FALSE : 個別のアイテムをすべて返す
省略するとFALSE(個別のアイテム)になります。

この引数も分かりづらいです。
FALSEが普通の一意化、重複を無くす処理になります。
従って、通常はこの引数は省略して使います。

TRUEの1回だけ出現が分かりづらいのですが、
元データに1回しか出現しないデータのみを対象とするという事です。
つまり、
そもそも一意になっているデータのみ出力する、重複しているデータは出力しないということです。
実際の使い道については、かなり限られると思います。

ワークシートでの一意化(ユニーク化)

ワークシート上で、データを一意化(ユニーク化)する方法としては、

・COUNTIF関数で重複を判定して削除
・ピボットテーブルで重複を削除
・重複の削除で重複を削除
・フィルタの詳細設定(フィルターオプションの設定)で重複を削除


どれも一長一短はあります。
詳しくは、以下で解説しています。

重複削除しユニークデータ作成(フィルターオプションの設定)
エクセル作業においては、データの重複を排除して、ユニークなデータを作成する必要がある場合は多々あります。そのような時の操作として、以下の方法があります。・COUNTIF関数で重複を判定して削除 ・ピボットテーブルで重複を削除 ・重複の削除で重複を削除 ・フィルタの詳細設定(フィルターオプションの設定)で重複を削除 どれも一長一短はありますが、

UNIQUE関数の使用例

1列だけの単純な例

=UNIQUE(A1:A15)

エクセル Excel スピル UNIQUE

A列だけで一意化(ユニーク化)しています。
単純にA列のデータで重複を無くした状態で出力されます。

複数列の場合

=UNIQUE(A1:B15)

エクセル Excel スピル UNIQUE

A列とB列で一意化(ユニーク化)しています。
A列とB列を合わせたデータで重複を無くした状態で出力されます。
出力の仕方は違いますが、これは以下と同じことになります。

=UNIQUE(A1:A15&B1:B15)

エクセル Excel スピル UNIQUE


横(列)方向の一意化

=UNIQUE(A1:O2,TRUE)

エクセル Excel スピル UNIQUE

引数の「列の比較」という言葉がわかりづらいですが、
単純に、横(列)方向なら第2引数をTRUEにすれば良いと覚えれば良いでしょう。

1回だけ出現するアイテム

=UNIQUE(A1:A15,FALSE,TRUE)

エクセル Excel スピル UNIQUE

A列で一回しか出てこないデータのみ出力されます。
複数列でも理屈は同じです。

=UNIQUE(A1:B15,FALSE,TRUE)

エクセル Excel スピル UNIQUE

例えば、A社A商品やA社C商品は2回出てきているので出力されていません。

UNIQUE関数の応用例

全自動の集計表を作成します。
データ行数、集計項目値の増減にも対応できます。

エクセル Excel スピル UNIQUE

元表(A:E)のデータ変更に全自動で対応しています。
データ行数はもちろん、取引先や商品の増減にも対応できます。

G2=SORT(SORT(UNIQUE(FILTER(FILTER(A:E,ISNUMBER(C:C)),{1,1,0,0,0})),2),1)
以下の順に処理するように数式を組み立てています。
・内側のFILTER関数でデータのある行だけに絞り、外側のFILTER関数で2列に減らしています。
FILTER関数は、定義した条件に基づいてデータ範囲をフィルター処理した結果を返します。FILTER関数はスピルで登場した新しい関数です。最後の方では、表示する列を選択する方法も掲載しています。FILTER関数の書式 =FILTER(配列,含む,[空の場合]) 配列 必須です。
・UNIQUE関数で一意化
・内側のSORT関数で商品順、外側SORT関数で取引先順に並べ替えています。
SORT関数は、範囲または配列の内容を並べ替えます。SORTBY関数は、範囲または配列を対応する範囲または配列の値に基づいて並べ替えます。SORT関数とSORTBY関数は範囲を並べ替える関数ですが、同じこともできますが、れぞれの関数でなければできないこともあります。

I2=SUMIFS(D:D,$A:$A,OFFSET($G1,1,0,COUNTA($G:$G)-1),$B:$B,OFFSET($H1,1,0,COUNTA($H:$H)-1))
J2=SUMIFS(E:E,$A:$A,OFFSET($G1,1,0,COUNTA($G:$G)-1),$B:$B,OFFSET($H1,1,0,COUNTA($H:$H)-1))
行数自動対応でスピルさせている為、数式が複雑になっています。
SUMIFS関数を集計結果の行数変更に自動対応させた上でスピルさせています。
SUMIFS関数は、SUMIF関数の条件が複数指定できるようになったものです。COUNTIFS関数は、COUNTIF関数の条件が複数指定できるようになったものです。範囲の中で、指定した条件を満たすセルの個数を数えます。
難解に見えるのはOFFSET関数があるからです。
基準のセルまたはセル範囲から指定された行数と列数だけシフトした位置にある、指定の高さと幅のセル範囲の参照を返します。つまり、基準セルから、指定数だけ移動したセルを起点として、指定の大きさのセル範囲を取得出来ます。書式 OFFSET(基準,行数,列数,[高さ],[幅]) 基準 基準となるセル範囲の参照を指定します。
OFFSET関数を固定のセル範囲に置き換えてしまえば、単なるスピルさせているSUMIFS関数だけになります。

これは、以下のようにテーブル+ピボットテーブルで作成するものとほぼ同じことになります、
※データ行数に自動対応させるためにテーブルにしています。

エクセル Excel スピル UNIQUE

どちらが良いという事ではなく、適宜使い分けすれば良いでしょう。

スピルによって新しく追加された関数

関数名 説明
FILTER フィルターは定義した条件に基づいたデータ範囲です。
SORT 範囲または配列の内容を並べ替えます。
SORTBY 範囲または配列の内容を、対応する範囲または配列の値に基づいて並べ替えます。
UNIQUE 一覧表または範囲内から重複データを削除した一覧を返します。
RANDARRAY 0から1までのランダムな数値の配列を返します。
SEQUENCE 1、2、3、4など、配列内の連続した数値の一覧を生成します。
XLOOKUP 範囲または配列を検索し、見つかった最初の一致に対応する項目を返します。
一致が存在しない場合、XLOOKUP は最も近い (概算) 一致を返すことができます。
XMATCH 配列またはセル範囲内の項目の相対的な位置を返します。


ワークシート関数一覧

Excelワークシート関数の一覧と解説です、詳細解説ページへのリンクもあります。Excel2007までの関数です。2010以降追加の関数一覧 ワークシート関数の一覧(2010以降) 引数、関数構文については Excelシートの複雑な計算式を解析するVBAの関数構文 文字列関数…27 日付と時刻の関数…21 情報関数…17 論理関数…7 検索/行列関数…1…

ワークシート関数の一覧(2010以降)
Excelワークシート関数の一覧と解説です。Excel2010以降に追加された関数一覧になります。2007までのワークシート関数一覧ワークシート関数の一覧 引数、関数構文については Excelシートの複雑な計算式を解析するVBAの関数構文 Excel2010で追加されたワークシート関数 Excel2013で追加されたワークシート関数 関数名 種類と説明 …



同じテーマ「エクセル入門」の記事

IFS関数(複数条件)
SWITCH関数(複数値での切替)
スピルについて
FILTER関数(範囲をフィルター処理)
SORT関数、SORTBY関数(範囲を並べ替え)
UNIQUE関数(一意の値)
RANDARRAY関数(ランダム数値)
SEQUENCE関数(連続数値)
XLOOKUP関数(範囲を検索し一致する対応項目を返す)
XMATCH関数(範囲から値を検索し一致する相対位置)
LET関数(数式で変数を使う)


新着記事NEW ・・・新着記事一覧を見る

ユーザーに絶対に停止させたくない場合のVBA設定|VBA技術解説(4月1日)
CharactersプロパティとCharactersオブジェクト|VBA技術解説(3月31日)
指数近似/対数近似/累乗近似(掲載順位とCTR)|エクセル関数超技(3月31日)
練習問題32(連続数値部分を取り出し記号で連結)|VBA練習問題(3月24日)
連続数値部分を取り出し記号で連結|エクセル関数超技(3月24日)
数式バーの高さを数式の行数で自動設定|VBAサンプル集(3月21日)
LET関数(数式で変数を使う)|エクセル入門(3月21日)
スピルに対応したXSPLITユーザー定義関数(文字区切り)|VBAサンプル集(3月15日)
XMATCH関数(範囲から値を検索し一致する相対位置)|エクセル入門(3月14日)
XLOOKUP関数(範囲を検索し一致する対応項目を返す)|エクセル入門(3月14日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ひらがな⇔カタカナの変換|エクセル基本操作
8.繰り返し処理(For Next)|VBA入門
9.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
10.セルに文字を入れるとは(Range,Value)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ