いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)グループごとに文字列を連結する

 Googleスプレッドシートで、ある列の値によってグループを分け、グループごとに文字列を連結した結果を得る方法です。グループ化集計の文字列版と言えばわかりやすいかもしれません。

  • MAP/LAMBDA関数やUNIQUE関数等を使って、グループごとの文字列連結を行うことができます。

手順

 B列に都県名が、C列には各都県に属する市名が記録されています。
 E3セルに式を入力し、重複を除いた都県名と、各都県に属する市名を(・を挿んで)連結した文字列を表示しています。

 E3セル

=MAP(UNIQUE(B3:B10),
LAMBDA(x,{x,JOIN("・",FILTER(C3:C10,B3:B10=x))})
)

 「UNIQUE(B3:B10)」で都県名の重複を除き、その配列にMAP/LAMBDA関数でxと名付けています。
 あとはMAP関数のはたらきにより、xの1つごとにFILTER関数を実行し、抽出した市名をJOIN関数で連結し、最後に{ }演算子でxと横並びに表示しています。単にFILTER関数の条件を「B3:B10=UNIQUE(B3:B10)」とするのではうまくいかず、MAP関数により解決しています。
 なお、ソートには全く手を付けていませんので都県名、市名ともに初出順になります。
 区切り文字(・)が要らない場合はJOINの第1引数を空文字列にするかCONCATENATEに代えるかすればOKです。