なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

Power Query:列のピボット その2(縦軸用の列がない場合)

前回の続き。そこでもちらっと書いたけど、列のピボットを実行する時には、必ず縦横方向の軸となる値が必要になる。

この画像の場合だと、テーブル1には横軸となる「班」列はあるものの、テーブル2の「連番」を構成する縦軸用の列がない。このまま列のピボットを実行するとどうなるか。


「班」列を選択した状態で[変換]→[列のピボット]

[値列]に「名前」、[値の集計結果]に「集計しない」を選択して[OK]

すると結果は、

見事に失敗。

こうならないためには、予め班ごとに連番(インデックス)を振っておく必要がある。


「班」列を選択した状態で右クリック[グループ化]

「班」列を指定 新しい列名:テーブル 操作:すべての行 →[OK]

これでひとまずグループ化に成功。この後、テーブル列内のテーブルにインデックス列を追加するのだが、ここだけは手入力が必要。「縦方向のデータを横並びで出力する」にも書いたけど、いっそグループ化の式を数式バーから直接いじったほうが簡単だったりする。


数式バーを広げて黄色部分の「each _」となっているところを 「each Table.AddIndexColumn(_, "連番", 1, 1)」に変更 「type table [……]」の中に「, 連番=number」を追加

こうすることで、グループ化で作られたテーブルの中に連番列が追加される。そして簡単に展開もできる。


テーブル列の右にある小さいアイコンをクリック 「名前」と「連番」にだけチェックを入れる [元の列名をプレフィックスとして使用します]のチェックを外して[OK]

これで班ごとに連番を振ることができた。後は最初にやった「列のピボット」を今度こそ実行。


「班」列を選択した状態で[変換]→[列のピボット] [値列]に「名前」、[値の集計結果]に「集計しない」を選択して[OK]

これで望んでいる形に読み込むことができた。