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

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

Power Query:列のピボット その3

引き続き「列のピボット」。前回は縦軸用の番号列の作り方をやったけど、今回はn行一組のデータを、列のピボットを使って組み替えてみたい。

n行(画像だと4行)で一組のデータ(もちろんデタラメ)があるとして、

これを1行ずつのデータに組み換える場合の話。

行数が固定の時は「Table.Splitを使う方法」もあるにはある。そっちでやってももちろんいいんだけど、詳細エディタから M言語で記述しまくることになるので、慣れていない人にはしんどいと思う。なので今回はパス。

まずは上の画像の A:B列を「データ範囲」と名前定義しているものとする。

この状態で

[データ]→[テーブルまたは範囲から]

これでクエリが作成される。


右ペインの最終ステップ(画像だと「変更された型」)を右クリックし [後にステップの挿入]をクリック

すると、数式バーに「= 変更された型」が表示されるので、ここを下記のように書き換える。


数式を「= Table.FirstN(変更された型, each [Column1]<>null)」に

ひとまずここまで。やっていることは「Table.FirstN」で「一番上の行から null以外のデータを保持」しているだけ。


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

ここで前回と同じく、グループ化の数式を書き換え。


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

ここからは通常運行。縦軸用の「連番」列を展開してから列のピボットを実行すればおしまい。


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

「Column1」を選択した状態で[編集]→[列のピボット] 値列:Column2 詳細設定オプションの値の集計関数:集計しない →[OK]

あとは「閉じて読み込む」で完成。

ひとくくりになる行が固定でない時は、別のアプローチが必要になるので、そっちはまた今度。