鷹尾祥(アキラ)のExcel BI ブログ

Excelの革新的機能であるパワーピボット/パワークエリ/DAXについて紹介します。

ピボット解除:横に並んだ列を縦に並べかえる

「ピボット解除」とは?

ピボット解除とは、端的に言うと選択した列を縦(行)に並べる機能です。耳慣れない言葉ですが、これは数あるPower Queryの機能の中でも屈指の機能です。

例えば、以下のように横に12か月並んだデータがあるとします。
f:id:modernexcel7:20190623082303p:plain

ここでB列からM列までの12か月を選んでピボット解除すると、選択した列名(12か月)は属性として、予算金額はとして列になります。つまり、元の列名とそのが縦にデータとして並びます。なお、ピボット解除されなかった列(「部門」)は、同じ値がその分だけ繰り返します。今回の例では3部門あるので、3×12=36行のデータに変換されます。

f:id:modernexcel7:20190623082619p:plain

なお、似た機能として入れ替えがありますが、こちらは選択せずに列と行を完全に入れ替えるので、ピボット解除のような値の繰り返しは発生しません。

使い方として、二つのパターンを紹介します。

例1:横に入力された予算データを縦に並べ、数字テーブル(Fact Table)化する

サンプルデータ

予算データとして、横に年月が12列、縦に部門が3行並んだデータを使用します。
f:id:modernexcel7:20190623082303p:plain

手順

「予算データ」テーブルの上にカーソルを置きます。
f:id:modernexcel7:20190623085014p:plain

データの取得と変換のテーブルまたは範囲からをクリックします。
f:id:modernexcel7:20190623085507p:plain

Power Query エディターが開きます。
f:id:modernexcel7:20190623085649p:plain

201901と201912までの列を選択します。
f:id:modernexcel7:20190623090102p:plain

変換メニューから列のピボット解除列のピボット解除を選びます。
f:id:modernexcel7:20190623090713p:plain

ピボット解除され、選択された12列が行に並びます。
f:id:modernexcel7:20190623090835p:plain

閉じて読み込むで、テーブルに読み込みます。
f:id:modernexcel7:20190623091849p:plain

三つのピボット解除について

ピボット解除には列のピボット解除その他の列のピボット解除選択した列のみをピボット解除の三つがあります。それぞれ数式で違いを確認します。

「列のピボット解除」と「その他の列のピボット解除」

= Table.UnpivotOtherColumns(変更された型, {"部門"}, "属性", "値")


列のピボット解除その他の列のピボット解除の二つの数式は同じです。UnpivotOtherColumnsなので、数式の中にある”部門”以外のものをピボット解除する表現です。したがって、データソースの年月に増減があったとしても対応できる数式です。

以下、「その他の列のピボット解除」を使った別解の動画です。


列のピボット解除(1階層)

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

= Table.Unpivot(変更された型, {"201901", "201902", "201903", "201904", "201905", "201906", "201907", "201908", "201909", "201910", "201911", "201912"}, "属性", "値")


それに対して、選択した列のみをピボット解除Unpivotで、"201901", "201902"・・・"201912"といったピボット解除をする個別の列を指定しています。つまり、年月以外の列に増減があったとしても対応ができるという違いになります。

例2:隣に並んだ税抜金額と税額を「勘定科目」として縦に並べる

これは、例えば集計結果をシステムへインポートするファイルに形式に変換するときに便利です。

サンプルデータ

サンプルデータとして、税抜金額と税額が横に並んだデータを用意します。
f:id:modernexcel7:20190623101847p:plain

手順

まず、サンプルデータのテーブルを元にPower Query エディターを開きます。
f:id:modernexcel7:20190623102001p:plain

税抜金額と税額を選択します。
f:id:modernexcel7:20190623102219p:plain

列のピボット解除を行います。
f:id:modernexcel7:20190623102252p:plain

「属性」列を選択して、条件列をクリックします。
f:id:modernexcel7:20190623102414p:plain

以下の条件列を作成します。
f:id:modernexcel7:20190623102432p:plain

f:id:modernexcel7:20190623102552p:plain

不要になった「属性」列を削除します。
f:id:modernexcel7:20190623102621p:plain

閉じて読み込むを実行します。
f:id:modernexcel7:20190623102730p:plain

これで横に並んでいた「税抜金額」と「税額」を縦に「勘定科目」として並べ替えました。