データラングリングで、以下のような例に出くわすことがある。

- 事業本部と部署名をまとめた表がある。
- 事業本部と複数の部署名を一対一で紐付けた「縦持ち」の表
- これを事業本部と部署名を1対nで紐付けた表にしたい
- 新しい表では、事業本部はユニークとなる
Excelで実行する方法
これをExcel(PowerQueryなし)で処理するには、以下のようにする。

- 事業本部をユニーク化した列を作る
- その事業本部名をFILTER関数で参照し、部署名の列から合致する列の値を取得する(戻り値は配列)
- 配列の要素をTEXTJOIN関数で「,」でくっつけ、セルに入れる
- このセルを下に事業本部の数だけコピーする
事業本部の数が少なく、あらかじめわかっているような場合はこれでもよいが、処理の前にいちいちユニーク数を確認するのも面倒だし、ユニーク数が膨大な場合は操作ミスもありうる。
そもそも、FILTER関数、TEXTJOIN関数は比較的新しいバージョンで導入された関数なので、古いExcel限定の環境では使えない。
FILTER関数、TEXTJOIN関数なしでこなす方法も探せばあるかもしれないが、ちょっとしんどそうだ。
いずれにしろそこそこ面倒な作業なので、わかっていたとしても、所要時間は20分以上はかかるのではないか。
Power Queryで実行する方法
Power Queryを使う場合は、グループ化した上で「カスタム列を追加」で、M言語で変換する。


生成AIがやり方を教えてくれるので、多少行きつ戻りつはあるが、処理はできる。
こちらも、生成AIと相談しながらで、所要時間は10分〜30分といったところか。
Python
Pythonの場合は、いくらでも情報はみつかると思うので割愛する。
たとえば下記。Pythonで処理する場合は、直接生成AIにやらせた方が早そうだ(ただし、それが正しいかどうかを別途検証する必要がある)。
R言語
Rの場合はとても簡単。これも、生成AIがやってくれると思う(検証が必要なのは前項と同じ)。
data %>% group_by("事業本部") %>% summarise(sumtxt = paste0("部署", collapse = “,”))
Tableau Prep
今回意外だったのは、Tableau Prepでのフローが結構ややこしいこと。詳しくは下記に譲るが、ここまでやるならExcelかPower Queryの方がまだましではないだろうか……。
Exploratory
Exploratoryではどうやるか。Exploratoryには、今回と逆の作業については、見やすいところにメニューが置かれており、手軽に試すことができる。下記の矢印の作業だ。

一つのセルに、同じ「事業本部」に属する「部署名」の値が入っており、これを行方向にコンマでばらしたいとき、分割>…で行に分割>コンマ(,)により、簡単に実行できる。


他のソフトであれば、生成AIの力添えがあったとしても10分くらいはかかる作業が、Exploratoryだと一瞬で終わってしまうのには感動してしまう。
ところがこの逆(今回やりたいこと)をやろうとすると、ちょっとわかりにくい。「分割」の反対だから「統合」というメニューでもあるのかな、と考えてしまうが、ない。