これを「予定」と「実績」の2列にしたいですが、何か良い方法ありますか?
では、詳細を解説していきますね。
目次[閉じる]
解説動画
この記事の内容は下記の動画「【パワークエリ#8】レイアウト変更テクニック3選 – 使いにくい表レイアウトを使いやすく整形・加工する作業を自動化する(列のピボット解除、列のピボット、入れ替え)」でも解説しています。
コメント欄の目次の時間部分をクリックすると該当の解説へジャンプできますよ!
はじめに
この記事はパワークエリの概要を把握していることが前提です。
パワークエリの概要は以下の記事をご参照ください。
「列のピボット」コマンドとは、Power Queryエディター上で1列の数値データを複数列に変換する機能
「列のピボット」コマンドは、クエリの新規作成ステップのうち、Step 2の「取得データを整形/加工(Transform)」に該当する機能です。

「列のピボット解除」・「その他の列のピボット解除」コマンドと対になる機能と言えます。
クエリ内の一連の整形作業の中で、1列の数値データを複数列に変換したい場合に「列のピボット」コマンドを使いましょう。

「列のピボット」コマンドを活用することで、Power Queryエディター上で属性列のデータ(アイテム)を列名にし、1列の数値データを複数列に変換できます。
一例として、「列のピボット」コマンドを使用し、「予実」列を列名にし、「残業時間」列を2列に変換したものが以下です。
「予実」列が属性列、「残業時間」列が値列。

この通り、Power Queryエディター上で列をピボットしたステップを記録できました。
「列のピボット」コマンドの場合、デフォルトのステップ名は「ピボットされた列」になる(クエリ内で2つ目以降の「ピボットされた列」ステップは連番が付加)。
後は、クエリ新規作成ステップのStep 2とStep 3を行いましょう。
これにより、クエリに記録した「列のピボット」コマンドのステップを自動化できます。
「列のピボット」ステップを記録後、対象の列名を変更すると、クエリ更新時にエラーになるため注意(対処法は後述)。
クエリの新規作成ステップのStep 2に役立つ各種コマンドや、Step 3の手順の詳細を知りたい方は、パワークエリの概要記事をご参照ください。
【Excel】パワークエリ(Power Query)とは?できることや使い方入門【動画あり】
「列のピボット」コマンドの使用手順
「列のピボット」コマンドは、以下の手順で使用します。

- ピボットしたい属性列と値列を選択
※今回は「予実」・「残業時間」列 - リボン「変換」タブをクリック
- 「列のピボット」をクリック
- 「OK」をクリック
手順①は、連続する列は「Shift」キーを押しながら「←」・「→」キー、離れた列は「Ctrl」キーを押しながら別の列名をクリックで複数列を選択すると効率的。
手順①は、属性列(変換後の列名)→値列の順番に選択すること。
【参考】詳細設定オプション
「列のピボット」ダイアログに用意されている「詳細設定オプション」をクリックすると、「値の集計関数」ボックスで任意の集計関数を設定することが可能です。
今回は属性列に「月」列、値列に「売上」列を指定し、月ごとの売上を複数列に変換するケースを例に、各集計関数を解説します。
カウント(すべて)
集計関数を「カウント(すべて)」にした場合、変換後のレコードと属性列のアイテムの組み合わせごとに、空白(null)を含めたデータの個数がカウントされます。

使用手順①で選択した値列のデータ型が数値関連以外の場合、「カウント(すべて)」がデフォルトの集計方法になります。
それ以外では、レイアウト変更というよりも集計機能になるため、実務での利用機会は少ないです。
パワークエリで集計するより、処理結果のテーブルを使い、ピボットテーブル等で集計した方が良いため。
カウント(空白なし)
集計関数を「カウント(空白なし)」にした場合、変換後のレコードと属性列のアイテムの組み合わせごとに、空白(null)を除いたデータの個数がカウントされます。

こちらも集計機能になるため、実務での利用機会は少ないと思います。
最小値
集計関数を「最小値」にした場合、変換後のレコードと属性列のアイテムの組み合わせごとに最小値が計算されます。

使用手順①で選択した値列のデータ型が数値関連でないと、集計関数の選択肢に表示されません。
こちらも集計機能になるため、実務での利用機会は少ないと思います。
最大値
集計関数を「最大値」にした場合、変換後のレコードと属性列のアイテムの組み合わせごとに最大値が計算されます。

使用手順①で選択した値列のデータ型が数値関連でないと、集計関数の選択肢に表示されません。
こちらも集計機能になるため、実務での利用機会は少ないと思います。
中央
集計関数を「中央」にした場合、変換後のレコードと属性列のアイテムの組み合わせごとに中央値が計算されます。

使用手順①で選択した値列のデータ型が数値関連でないと、集計関数の選択肢に表示されません。
こちらも集計機能になるため、実務での利用機会は少ないと思います。
平均
集計関数を「平均」にした場合、変換後のレコードと属性列のアイテムの組み合わせごとに平均値が計算されます。

使用手順①で選択した値列のデータ型が数値関連でないと、集計関数の選択肢に表示されません。
こちらも集計機能になるため、実務での利用機会は少ないと思います。
合計
集計関数を「合計」にした場合、変換後のレコードと属性列のアイテムの組み合わせごとに合計値が計算されます。

使用手順①で選択した値列のデータ型が数値関連でないと、集計関数の選択肢に表示されません。
使用手順①で選択した値列のデータ型が数値関連の場合、「合計」がデフォルトの集計関数になるため、あえて設定することはないですが利用機会は多いです。
集計しない
集計関数を「集計しない」にした場合、属性列のアイテム別の複数列に表レイアウトは変換されますが、集計はされません。

変換後のレコードと属性列のアイテムの組み合わせごとに、該当するデータが複数あると以下のエラーメッセージが表示され、1データのみなら元の値がそのまま表示されます。
Expression.Error: 列挙内の要素が多すぎるため、操作を完了できませんでした。
詳細:
[List]
使用手順①で選択した値列に文字列が混在する場合に活用することがあります。
「ピボットされた列」ステップの変更手順
「列のピボット」コマンドで記録した「ピボットされた列」ステップを後から変更する場合、変更したい内容が属性列か、それ以外かで手順が異なります。
それぞれの手順を順番に解説していきましょう。
属性列
属性列を後から変更したい場合、以下の手順で変更しましょう。

- 「ピボットされた列」ステップを削除(「×」をクリック)
- 再度「ピボットされた列」ステップを記録
手順①のステップ名は、「列のピボット」コマンドのデフォルトの名前(自身でリネームしている場合は別表記)。
その他
属性列以外の内容(値列、詳細設定オプション)を後から変更したい場合、以下の手順で変更しましょう。

- 「ピボットされた列」ステップの歯車マークをクリック
- 任意の箇所を修正
- 「OK」をクリック
手順①のステップ名は「列のピボット」コマンドのデフォルトの名前(自身でリネームしている場合は別表記)。
手順①はステップ名をダブルクリックでもOK。
手順①で起動した「列のピボット」ダイアログは、ステップに設定した内容がセットされた状態。
サンプルファイルで練習しよう!
可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。
サンプルファイル_PowerQueryデータ整形_列のピボット.xlsx
ブックを開いたら、「残業予実管理(列のピボット)」クエリを編集(Power Queryエディター起動)し、次の手順を実施してください(今までの解説のまとめです)。
ブック起動時、「セキュリティの警告」メッセージが表示された場合は「コンテンツの有効化」をクリック。
- ピボットしたい属性列と値列を選択
※今回は「予実」・「残業時間」列 - リボン「変換」タブをクリック
- 「列のピボット」をクリック
- 「OK」をクリック
本記事の解説と同じ結果になればOKです!
さいごに
いかがでしたでしょうか?
「列のピボット」コマンドを活用することで、Power Queryエディター上で属性列のデータ(アイテム)を列名にし、1列の数値データを複数列に変換できます。
データベース形式を維持しつつ、特定の数値列を複数に分けた方が集計しやすい場合に活用しましょう!
なお、パワークエリの各種テクニックは、私の拙著でも体系的に解説していますので、こちらも参考にしてみてください。
ご参考になれば幸いですm(_ _)m
具体的には、表の行列を入れ替える「入れ替え」コマンドや、横軸に展開された複数列を「属性」・「値」の2列に変換する「列のピボット解除」・「その他の列のピボット解除」コマンドです。
データソースの表レイアウトに応じて、これらのコマンドをうまく使い分け、希望通りの表レイアウトへ変更しましょう!

コメント Comments
コメント一覧
コメントはありません。
トラックバックURL
https://excel-master.net/data-utilization/data-shaping/layout-change/power-query-pivot-column/trackback/