エクセルで面グラフ(量率グラフorモザイク図)を作成してみた。(PowerQuery編 その3~列の名称変更および増減への対応~)
さてPowerQueryは便利ですよね。
(前回までの課題では)行のデータが追加されれば、データタブ>すべて更新でデータ書き換わるのでとっても便利です。
ただし、列の変更(追加、削除、名称変更)には、エラーがでて対応できません。
エラーの内容を見ていくと、どうやら列の名称が見つからないとかなんとか。。。
ということは、列の名称を明示しないでクエリを記述すれば、列の変更に対応できるのか?ということで今回は、列の名称を暗示的に記述する方法に取り組んでみたいと思います。
ここでデータ構造の確認をしておきます。
・一行と一列の項目が並びそのほかは、数値が入っているデータ
→テーブルとしては、左から1列目がテキスト形式で2列目以後は、数値形式となっている。
↓
さてさっそく上記のような表を選択(ctl+shift+*)してテーブルに変換(ctl+T)してPowerQueryへ送ります。
①名称を「元データ」に変更します。
②右クリック>複製で名前を「修飾データ」とします。
↓
2個のクエリができました。
ここで新しいソース>その他のソースから空のクエリを追加します。
↓
①「全列名」へ名称変更
②「= Table.ColumnNames(元データ)」と記入
以下のようになります。
(ずべての列名がリストに並んでいることが確認できます。)
↓
同様に空のクエリから
名前:「列1名」とし
関数バー:「= List.FirstN(前列名,1)」とします。
(一番左の列の名称は「地域」と確認できます。)
↓
続いてまたまた空のクエリから
①名前を「全列数」として
②関数バーに「= List.Count(全列名)」とします。
(列数は全部で4つであることが確認できます。)
↓
さらに空のクエリーを作成して
名前を「他列名」として
関数バーに「= List.LastN(全列名,全列数-1)」と記入します。
(2番目から最後までの列の名前が確認できます。)
↓
次からは、「修飾データ」のクエリを作業します。
左端「地域」の列を選択して変換タブ>その他のピボット解除を選択します。
↓
①グループ化を選択して
②合計を選んで
③「値」の列を選んで
④「合計」とタイプしてOKします。
↓
中略)過去ログを参考にして 総計、比率、累計、座標の列を作成します。
↓
次は新しいソース>その他のソース>空のクエリから100行のリストを作成し(
「={1..100}」とタイプして)テーブルに変換します。
続いてクエリのマージより
①Column1を選択
②修飾データを選択
③座標を選択
④デフォルトのままで
OKをクリック
↓
カラムの展開は赤丸のボタンをクリックして
①「地域」と「比率」を選択
②チェックボックスをはずしてOKをクリック
↓
ふたたびクエリのマージから
①地域の列を選択
②元データを選択
③地域を選択
④デフォルトのままでOKをクリック
↓
①ボタンをクリック
②石油、石炭、ガスを選択
③チェックボックスをはずす
OKをクリック
↓
「{"石油","石炭","ガス"}」を2か所とも「他列名」へ書き換えます。
↓
石油、石炭、ガスまでの列を選択して変換タブ>下にフィルを選びます。
↓
「{"石油","石炭","ガス"}」を「他列名」に書き換えます。
↓
完成です。これで列の名称を変更しても列を増減しても「すべて更新」でPowerQueryが最新データに書き換えてくれます。
としたかったのですが、一部ミスがありました。
「修飾データ」などのクエリの適用したステップの二行目の(エクセルが勝手に追加した)「変更した型」を選択して右クリックから削除してください。
このクリーンアップ作業で完成です。
※さらにクエリ1の「詳細エディター」の内容を以下に示します。
バージョン:
エクセル2010
PowerQuery 2.26