見出し画像

【エクセル パワークエリ】 列が多段のマトリクス形式の表をリスト形式に変換する方法【Excel PowerQuery】【ピボット解除】



Excelで縦横に展開されてたクロス集計表と呼ばれたりするピボット形式の表は、見る分にはいいのですが、ピボットテーブル等で集計するための元データとしては、このままでは使えません。

項目がすべて縦に並ぶ、いわゆるリスト形式に変換する必要があります。

画像3


手作業でこういった変換をやるのは非常に大変です。

マクロを使えば自動化はできますが、そもそもマクロ自体、慣れていない人にとっては敷居が高いです。


そこで、今回はこういった表を、PowerQueryをつかい、マウス操作だけでフォーマットを変換する方法について解説します。



以下の動画でも同じ内容を解説しています。
記事をご購入いただくと、記事の最下部から動画の解説で実際に使用しているExcelファイルをダウンロードすることができます。



=== ストアカで開催中のオンライン講座 ===

画像23

https://bit.ly/3cA0UQO

===============================




やりたいこと


Excelで、列項目がセル結合されて多階層になっているクロス集計形式の表があったとき

画像1


すべての項目が縦に並ぶ、リスト形式に表を変換したい。

画像2


手順1:表をテーブルにする


対象となるクロス集計表をテーブルに設定します。

その際、『先頭行をテーブルの見出しとして使用する』のチェックは外しておきます。

画像4
画像5
画像6



手順2:テーブルをクエリに取得


テーブルにしたクロス集計表をクエリに取り込みます。

画像7
画像8



手順3:表の行列を入れ替える


『変換』タブの『入れ替え』で、テーブルの行列を入れ替える。

画像9
画像10



手順4:1行目をヘッダーにする


『変換』タブの『1行目をヘッダーとして使用』で、データ行の1行目をヘッダーにする。

画像12
画像12



手順5:フィルで空欄を埋める


行項目になっている列のうち、nullがある列(元々のクロス集計表のヘッダーでセル結合されていた部分。今回の場合はColumn1~2)を選択して、『変換』タブの『フィル』>『下』をつかって空欄を埋める。

画像13
画像14



手順6:ピボット解除


元々のクロス集計表の列項目だった部分(今回の場合はColumn1~3)を選択して、『変換』タブの『列のピボット解除』>『その他の列のピボット解除』。

画像15
画像16



手順7:フィールド名の設定


正しいフィールド名を設定する。
(加えて、必要であればデータ型の変換等も行い、データを整える)

画像17
画像18



手順8:テーブルとしてシートに読み込む


※注
この時点でフォーマットの変換は完了しているので、クエリで作成したデータテーブルをシートに読み込む必要がない場合は、手順8は行わなくても構いません。


『ホーム』タブの『閉じて読み込む』で、PowerQueryエディターを閉じる。

画像19



『クエリと接続』のサイドバーに先ほど作成したクエリが表示されるので、右クリックして『読み込み先』をクリック。

画像20


データのインポートで読み込み方法を『テーブル』、データを返す先を『新規ワークシート』を選択してOK。

画像21
画像22


これで、表のフォーマットの変換が完了しました。


最後の手順8では、クエリでフォーマットを変換したデータを、シートにテーブルとして読み込む手順を解説しましたが、フォーマット変換後のデータをクエリでそのまま利用する場合や、ピボットテーブルとしてテーブルとして読み込みたい場合など、ケースによってやり方は変えてください。



さいごに


PowerQueryをつかうと、手作業でやるには非常に大変な表フォーマットの変換を、何回かのマウスクリックだけで簡単に行うことができます。

マクロで変換を自動化するものいいですが、せっかく簡単な操作で可能になる方法があるので、ぜひこちらの方法を試してみてください。


PowerQueryには、他にもデータを集計しやすくクリーニングする機能がいっぱいありますので、今までExcel業務でPowerQueryをつかったことがなかった方も、ぜひPowerQueryにチャレンジしてみてください。



おしまい。



サンプルファイルダウンロード

動画で使用しているファイルはこちらからダウンロードできます。

ここから先は

0字
この記事のみ ¥ 500

よければサポートしていただけると嬉しいです😀 有用な記事や動画を制作していけるように頑張ります❗️