Googleスプレッドシートで縦持ちを横持ちに変換する

 EXCELでもたまに問題になる縦持ちデータから横持ちデータへの変換ですが、スピル機能があるGoogleスプレッドシートならとても簡単に実現できます。
 なお、使用しているUNIQUE関数、FILTER関数等は近々EXCELにも輸入されるそうですので、そのうち全く同じことができるはずです。

f:id:accs2014:20190122105802p:plain:right:w350

 というわけでこちらが縦持ちデータです。これをE3セル以降に横持ちデータとして展開します。

横持ちデータをセルに並べる場合

 E3セルに次のように入力します。

=unique(B3:B10)

f:id:accs2014:20190122105759p:plain:w600

 これを確定するだけで、氏名の重複を除いたデータが3つのセルに表示されます。便利ですねえ;-o-)
f:id:accs2014:20190122105757p:plain:w600

 次にF3セルに次のように入力します。

=transpose(filter(C$3:C$10,B$3:B$10=E3))

f:id:accs2014:20190122105753p:plain:w600

 確定。
f:id:accs2014:20190122105750p:plain:w600

 F3セルを下方にコピー(フィル)して完成。うわー簡単だー。
f:id:accs2014:20190122105842p:plain:w600
 さらにarrayformula関数と組み合わせてコピーなしで済ませる方法もありそうですが、今のところちょっとうまくいきません;-o-)

横持ちデータをカンマでつなぐ場合

 E列の入力は上記と同じですが、その次にF3セルに次のように入力します。

=textjoin(",",true,(filter(C$3:C$10,B$3:B$10=E3)))

f:id:accs2014:20190122105836p:plain:w600

 確定。
f:id:accs2014:20190122105831p:plain:w600

 コピーして完成です。
f:id:accs2014:20190122105828p:plain:w600