エクセル tips メモ

エクセルのちょっとした工夫でとくにPowerQueryに関する事を掲載していく予定です。

エクセルで面グラフ(量率グラフorモザイク図)を作成してみた。(PowerQuery編 その3~列の名称変更および増減への対応~)

さてPowerQueryは便利ですよね。

(前回までの課題では)行のデータが追加されれば、データタブ>すべて更新でデータ書き換わるのでとっても便利です。

 ただし、列の変更(追加、削除、名称変更)には、エラーがでて対応できません。

エラーの内容を見ていくと、どうやら列の名称が見つからないとかなんとか。。。

ということは、列の名称を明示しないでクエリを記述すれば、列の変更に対応できるのか?ということで今回は、列の名称を暗示的に記述する方法に取り組んでみたいと思います。

 ここでデータ構造の確認をしておきます。

・一行と一列の項目が並びそのほかは、数値が入っているデータ

 →テーブルとしては、左から1列目がテキスト形式で2列目以後は、数値形式となっている。

f:id:gohany:20151109222825j:plain

 

さてさっそく上記のような表を選択(ctl+shift+*)してテーブルに変換(ctl+T)してPowerQueryへ送ります。

f:id:gohany:20151109223604j:plain

 

①名称を「元データ」に変更します。

②右クリック>複製で名前を「修飾データ」とします。

2個のクエリができました。

f:id:gohany:20151109223933j:plain

ここで新しいソース>その他のソースから空のクエリを追加します。

 

 

f:id:gohany:20151109224516j:plain

①「全列名」へ名称変更

②「= Table.ColumnNames(元データ)」と記入

以下のようになります。

f:id:gohany:20151109225646j:plain

(ずべての列名がリストに並んでいることが確認できます。)

 

同様に空のクエリから

f:id:gohany:20151109225723j:plain

名前:「列1名」とし

関数バー:「= List.FirstN(前列名,1)」とします。
(一番左の列の名称は「地域」と確認できます。)

 

 

続いてまたまた空のクエリから

f:id:gohany:20151109230104j:plain

①名前を「全列数」として

②関数バーに「= List.Count(全列名)」とします。

(列数は全部で4つであることが確認できます。)

 

 

さらに空のクエリーを作成して

f:id:gohany:20151109230552j:plain

名前を「他列名」として

関数バーに「= List.LastN(全列名,全列数-1)」と記入します。

(2番目から最後までの列の名前が確認できます。)

 

次からは、「修飾データ」のクエリを作業します。

f:id:gohany:20151109231551j:plain

左端「地域」の列を選択して変換タブ>その他のピボット解除を選択します。

 

f:id:gohany:20151109232026j:plain

①グループ化を選択して

②合計を選んで

③「値」の列を選んで

④「合計」とタイプしてOKします。

 

 

中略)過去ログを参考にして 総計、比率、累計、座標の列を作成します。

f:id:gohany:20151109232747j:plain

次は新しいソース>その他のソース>空のクエリから100行のリストを作成し(

「={1..100}」とタイプして)テーブルに変換します。

f:id:gohany:20151109233134j:plain

続いてクエリのマージより

f:id:gohany:20151109233431j:plain

①Column1を選択

②修飾データを選択

③座標を選択

④デフォルトのままで

OKをクリック

f:id:gohany:20151109234149j:plain

カラムの展開は赤丸のボタンをクリックして

f:id:gohany:20151109234533j:plain

①「地域」と「比率」を選択

チェックボックスをはずしてOKをクリック

 

ふたたびクエリのマージから

f:id:gohany:20151109235014j:plain

①地域の列を選択

②元データを選択

③地域を選択

④デフォルトのままでOKをクリック

 

f:id:gohany:20151109235521j:plain

①ボタンをクリック

②石油、石炭、ガスを選択

チェックボックスをはずす

OKをクリック

 

f:id:gohany:20151109235902j:plain

「{"石油","石炭","ガス"}」を2か所とも「他列名」へ書き換えます。

 

f:id:gohany:20151110000208j:plain

石油、石炭、ガスまでの列を選択して変換タブ>下にフィルを選びます。

 

f:id:gohany:20151110000428j:plain

「{"石油","石炭","ガス"}」を「他列名」に書き換えます。

 

完成です。これで列の名称を変更しても列を増減しても「すべて更新」でPowerQueryが最新データに書き換えてくれます。

としたかったのですが、一部ミスがありました。

「修飾データ」などのクエリの適用したステップの二行目の(エクセルが勝手に追加した)「変更した型」を選択して右クリックから削除してください。

このクリーンアップ作業で完成です。

 

※さらにクエリ1の「詳細エディター」の内容を以下に示します。 

f:id:gohany:20151110002958j:plain

 

バージョン:

エクセル2010

PowerQuery 2.26