【中級編】【PowerQuery】エクセルで行と列を簡単に入れ替える方法!

横(よこ)から縦(たて)に変換する方法

動画で見たい方はコチラ

かじむー

先ほど横並びにしたデータを元の縦並びに戻してみよう!

特定の列以外を縦に転置させよう!

まずは月別売上について行列を入れ替えていきます!
左の状態から右の状態に変換します!
左の商品名を縦に並び替えます!

月別売上のファイルに接続が出来たら…

この変換タブの「列のピボット解除」を使います!
この様に3種類あります。
どれも使ってもできます!
ポイントはどの列を選択するか?です。

列のピボット解除

では通常の「列のピボット解除」を使って見ます。
まずピボット解除対象の列を選択します。
そのまま「列のピボット解除」を押すと…

はい!一瞬で出来ましたね!めちゃくちゃ凄いですよね!
原理としては「値」の横に列名が入ってきた感じですね!

「カツオ」だけに絞って見ると
動きが分かり易く見えます!

カツオという「列名」が
売上という「値」に対して割り振られた
新しい列が生成されましたね!

その他の列のピボット解除

じゃあ元に戻して「その他の列のピボット解除」を使って見ます。
これはピボット解除対象以外の列を選択します。
この場合は「月」列ですね。
そして「その他の列のピボット解除」を押すと…

はい!同じ結果が得られましたね!

実は
列のピボット解除
その他の列のピボット解除
この2つ、全く同じことなんです!

どちらも以下の同じ数式になっているんです!

数式
Table.UnpivotOtherColumns(月別売上_Table, {"月"}, …

どちらもUnpivotOtherColumns関数を使っています!
「月」列以外をピボット解除するという中身になっています。

この2種類のピボット解除は
選択する列が真逆になるけど
特定の列”以外“をピボット解除するというものでした!

「月」列以外をピボット解除するので
メリットとしては
商品の列が今後増えていったとしても
このままの作りで自動でピボット解除してくれます。

デメリットとしては
ピボット解除したくない列が増えた場合は修正が必要です。
例えば「月」列に加えて「日付」列が新しく追加された場合
「月」と「日付」列以外をピボット解除するという修正が発生します。

特定の列だけを縦に転置させよう!

次に勤怠表について行列を入れ替えていきます!
左の状態から右の状態に変換します!
左の名前を縦に並び替えます!

勤怠表のファイルに接続が出来たら…

選択した列のみをピボット解除

最後3つ目の「選択した列のみをピボット解除」を使って見ます。
ピボット解除対象の列を選択して
「選択した列のみをピボット解除」すると…

はい!これも一瞬で出来ましたね!

数式を見てみると

HTML
Table.Unpivot(変更された型, {"山田", "鈴木", "佐藤", "田中"}, "属性", "値")

「山田」「鈴木」「佐藤」「田中」の列を
ピボット解除します!
という感じで直接列を指定してますよね?

これは先ほどの
特定の列以外をピボット解除する処理とは
真逆ですね!

直接列を指定しているので
メリットとしては
ピボット解除対象外の列、例えば曜日列等が今後増えていったとしても
このままの作りで自動でピボット解除してくれます。

デメリットとしては
名前の列が今後増えた場合は修正が必要です。
例えば「前田」という列が増えたら
「前田」もピボット解除する列として指定する修正が発生します。

まとめ

▼行データを縦に転置させる方法

 ①列のピボット解除
 ②その他の列のピボット解除
 ┗ 特定の列以外を縦に並び替える
 ③選択した列のみをピボット解除
 ┗ 特定の列だけを縦に並び替える

かじむー

業務改善のご相談お気軽にどうぞ~!
1 2