いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)1つしかない値だけを抽出する

 Googleスプレッドシートで、表の中に1つしかない値だけを抽出する方法についてです。
 UNIQUE関数の仕様(引数)が拡張されExcelと同様になったため、UNIQUE関数で実現できます。

  • UNIQUE関数の第3引数を「TRUE」とすることにより、1つしかない値を抽出することができます。

手順

f:id:accs2014:20210519072424p:plain:right:w450

 画像では、B3:B14に抽出対象データが並んでいます。値の重複のあるもの(「まぐろ」や「いか」など)もありますし、値が1つしかないもの(「こはだ」など)もあります。
 そこでD3セルに式を入力し、値が1つしかないものだけを抽出しています。
 その式は次のとおりです。

=UNIQUE(B3:B14,,TRUE)

 通常、UNIQUE関数により表中の値の重複を除いた結果が得られます(重複がある場合は1つにまとめられる)が、第3引数を「TRUE」とすることで、もともと1つしかない値だけを抽出することができます。
 なお第2引数は「行方向に重複を除くか列方向に重複を除くかを指定する」というもので、こちらもTRUE(列方向)かFALSE(行方向。既定値)で指定できます。この例では行方向ですので指定自体を省略しています。

 

f:id:accs2014:20210519072428p:plain:right:w600

 こちらでは、縦横に値が並んでいる中で値が1つしかないものを抽出しています。
 基本的にUNIQUE関数は行単位で(つまり横方向に並ぶ複数のセル全体で)重複を判定・削除しますので、単純に「=UNIQUE(B3:D6)」とすると元の表がそのまま返ってしまいます。そこでFLATTEN関数を使用することで値を縦1列に並べ替え、結果的にセル単位で重複を判定しています。

 D3セル

=UNIQUE(FLATTEN(B3:D6),,TRUE)

 なお、抽出された値が並ぶ順序が最初の例と異なりますが、合わせる場合はさらにTRANSPOSE関数を併用して次のようにします。

=UNIQUE(FLATTEN(TRANSPOSE(B3:D6)),,TRUE)