いきなり答える備忘録

Google Workspace(旧G Suite)・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)UNIQUE関数を使ったグループ化と集計

 Googleスプレッドシートで関数によるグループ化や集計を行う場合は、QUERY関数を使うのが基本です。
 しかし、UNIQUE関数等を使っても同じようなことができます。

  • UNIQUE関数とCOUNTIF関数やSUMIF関数を組み合わせてデータのグループ化や集計ができます。

手順

f:id:accs2014:20201212102701p:plain:right:w500

 画像ではD3セルに式を入力し、B列に並んでいる各メニューの出現回数をカウントしています。
 D3セルに入力されている式は次のとおりです。

 D3セル

={UNIQUE(B3:B11),ARRAYFORMULA(COUNTIF(B3:B11,UNIQUE(B3:B11)))}

 2つの別々の式で得た結果を左右に連結する構成となっています。
 まず「UNIQUE(B3:B11)」でメニューの重複を取り除いた結果を得ています。
 また、「ARRAYFORMULA(COUNTIF(B3:B11,UNIQUE(B3:B11)))」でそれぞれの出現回数をカウントしています。
 そして最後に波カッコとカンマを使って2つの結果を左右に連結しています。
 結果としてはD3セルとE3セルにそれぞれ式を入力しても同じですが、このように波カッコとカンマで1つの式にまとめることができます。
 

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

 こちらは数量を集計した例です。
 D3セルに式を入力し、B列に並んでいる各メニューごとに、C列の数量を集計しています。

={UNIQUE(B3:B11),ARRAYFORMULA(SUMIF(B3:B11,UNIQUE(B3:B11),C3:C11))}

 式がやや長くなっていますが、やっていることは上記の例と同様です。

 この他にもAVERAGEIFやMAXIFなどと組み合わせてさまざまな結果を得ることができます。
 複数の集計列を設ける場合に式が長くなりすぎるのが難点ですが、QUERY関数のクエリ言語(≒SQL)の記述が苦手だったり見出しの処理が面倒な場合はそれなりに使えるかもしれません。