UNIQUE関数は、範囲または配列から一意な値を返します。
範囲または配列から重複を削除して一意化した配列を返します。
UNIQUE関数はスピルで登場した新しい関数です。
◆UNIQUE関数の書式
=UNIQUE(配列,[列の比較],[回数指定])
配列
必須です。
並べ替え処理する元データを指定します。
セル範囲または配列です。
列の比較
省略可能。
TRUE : 一意の列を返す
FALSE : 一意の行を返す
省略するとFALSE(一意の行)になります。
そもそも引数名がとても分かりづらいです。
これは、
横(列)方向のデータを一意にする。
縦(行)方向のデータを一意にする。
ということです。
つまり、通常の縦に連なるデータに対して使う時は、
FALSE : 一意の行を返す
これを使う事になります。
従って、ほとんどの場合この引数は省略して使えば良いです。
回数指定
省略可能。
TRUE : 1回だけ出現するアイテムを返す
FALSE : 個別のアイテムをすべて返す
省略するとFALSE(個別のアイテム)になります。
この引数も分かりづらいです。
FALSEが普通の一意化、重複を無くす処理になります。
従って、通常はこの引数は省略して使います。
TRUEの1回だけ出現が分かりづらいのですが、
元データに1回しか出現しないデータのみを
対象とするという事です。
つまり、
そもそも一意になっているデータのみ出力する、
重複しているデータは出力しないということです。
実際の使い道については、かなり限られると思います。
◆ワークシートでの一意化
ワークシート上で、データを一意化する方法として
・COUNTIF関数で重複を判定して削除
・ピボットテーブルで重複を削除
・重複の削除で重複を削除
・フィルタの詳細設定(フィルターオプションの設定)で重複を削除
どれも一長一短はあります。
◆UNIQUE関数の使用例
1列だけの単純な例
=UNIQUE(A1:A15)
A列だけで一意化しています。
単純にA列のデータで重複を無くした状態で出力されます。
◆複数列の場合
=UNIQUE(A1:B15)
A列とB列で一意化しています。
A列とB列を合わせたデータで重複を無くした状態で出力されます。
出力の仕方は違いますが、これは以下と同じことになります。
=UNIQUE(A1:A15&B1:B15)
◆横(列)方向の一意化
=UNIQUE(A1:O2,TRUE)
引数の「列の比較」という言葉がわかりづらいですが、
単純に、横(列)方向なら第2引数をTRUEにすれば
良いと覚えれば良いでしょう。
◆1回だけ出現するアイテム
=UNIQUE(A1:A15,FALSE,TRUE)
A列で一回しか出てこないデータのみ出力されます。
複数列でも理屈は同じです。
=UNIQUE(A1:B15,FALSE,TRUE)
例えば、A社A商品やA社C商品は
2回出てきているので出力されていません。
◆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(基準,行数,列数,[高さ],[幅]) 基準
OFFSET関数を固定のセル範囲に置き換えてしまえば、
単なるスピルさせているSUMIFS関数だけになります。
これは、以下のようにテーブル+ピボットテーブルで
作成するものとほぼ同じことになります
※データ行数に自動対応させるためにテーブルにしています。
どちらが良いという事ではなく、適宜使い分けすれば良いでしょう。