PowerBI

【Excel講座】Power Queryの使い方を簡単に解説!~データ変換作業を簡単に自動化~

ミムチ
ミムチ
ミムチの会社では、毎月のシステムから出力したExcelを、手動でデータ変換する作業があるのですが、どうにか自動化できないですかな?

パワ実
パワ実
それならExcelの「Power Query」を使うと、データの取り込み・結合・変換操作を簡単に自動化できるよ!

この記事では、Excelで使えるPower Queryという機能で、データを自動で読込・整形するための、基本的な使い方を解説します。

Power Queryを使うと、Excelで列を追加したり、複数Fileを結合する等のデータ変換が簡単に自動化でき非常に有用なので、是非見てください!

この記事でわかること

  1. Power Queryでどんなことができるのか?
  2. Power Queryを使うメリット
  3. Power Queryの基本的な使い方

Youtube動画で見たい方は、こちらからどうぞ!

Power Queryで何ができる?

Power Queryは、ExcelやPower BIで使える機能で、ExcelやCSV、Web等のデータを取り込み、分析用にデータを整形することができます。

例えば以下のように、Power Queryでデータ変換が可能です。

参考:総務省統計局「世界の国民総所得(GNI)

パワ実
パワ実
データ変換した後に、グラフ等を作成して可視化化したい場合は、是非Power BIを使ってください!

Power BIでできることは?データに基づく意思決定に役立つ! Power BIの実際の使い方のデモは、こちらの動画を参考にしてください! https://youtu.be/tFr...

Power Queryの主な機能は、以下の4つがあります。

Power Queryの主な機能

  1. データ変換の自動化
  2. 複数ファイルや複数シートの結合
  3. 異なるテーブルのマージ
  4. 列の計算や列の追加

それぞれの機能について簡単に紹介します。

データ変換の自動化

Power Queryを使う大きなメリットの1つは、データ変換の自動化ができる点です。

Power Queryで行ったデータ変換操作は、「適用したステップ」にクエリ(処理の命令文)として保存されています。

そのため、新たなデータが追加される等、データの更新があった際、Power Queryを使えば、更新ボタンを押すだけで、保存したデータ変換の処理を実施してくれます。

ミムチ
ミムチ
例えば毎月の支出や売上データ等を帳票で出力して、データ整形したい場合は、毎回同じ操作でデータ変換をする必要はないということですかな?

パワ実
パワ実
その通り!

一旦Power Queryを作成すれば、あとは更新ボタン一つで同じデータ整形ができるから、同じデータ変換操作を繰り返しする作業の自動化に向いているよ。 

複数ファイルや複数シートの結合

複数ファイルや、シートを1つに結合できる機能もPower Queryの大きなメリットです。

例えば、同じフォーマットの売上データを毎月出力する場合、同じフォルダーに、ExcelやCSVを格納しておけば、Power Queryでこれらのファイルを全て結合できます。

Excelの複数シートに分かれたデータについても、同じように結合することができます。

異なるテーブルのマージ

Power Queryでは、異なるテーブルをマージすることもできます。

例えば左の表のような、売り上げデータ一覧と、仕入れデータ一覧があるとします。

PowerQueryでは、簡単な操作で売上データ一覧に、仕入れで第一覧の仕入れ額の列を追加することなどができます。

別々に管理されているデータをマージし、一つのテーブルにする操作は、Power Queryを使えば簡単にできます。

列の計算や列

Power Queryは、列の計算や、列の追加も簡単にできます。

例えば、売り上げデータ一覧の売上額から、仕入れ額を引いて、利益額という列を追加することなどができます。

その他にも、日付データから現在までの期間を計算したり、17歳以下なら子供、18歳以上ならば大人など、条件を設定して列を追加する等もできます。

ミムチ
ミムチ
列の計算はExcelの関数等でもできますが、データ読込~データ統合・変換等の一連の操作を記録し、自動実行できるのが、Power Queryの良いところなのですな!

パワ実
パワ実
今回紹介した4つ以外にも、Power Queryを使えば、色々なデータ変換操作ができるよ。

Power Queryの使い方

次にPower Queryの基本的な使い方を解説します。

操作方法は、データ取り込み、データ変換、変換を適用の3ステップになります。

今回実現する内容

今回は実際に以下の、総務省統計局:世界の統計2022「国民経済計算」のデータを読み込み、変換してみます。

<読み込むデータ>

総務省統計局:世界の統計2022「国民経済計算

Excelを開くと、国民総所得(GNI)のデータは、3ー8(1)のシートと、3ー8(2)のシートの2シートに分かれています。

この2つのシートを一緒に取り込み、国ごと、年ごとのGNIと、一人あたりのGNI、そして国ごとの人口を計算して列を追加してみます。

<Power Queryでデータ変換後>

パワ実
パワ実
実際にExcelデータをダウンロードして、Power Queryで読込・データ変換してみましょう!

データ取り込み

データ取り込みのステップでは、共有フォルダや、SharePoint、Web等からExcelやCSVファイルのデータを取り込みます。

1.総務省統計局から取得した世界の国民総所得(GNI)のデータ」をダウンロードし、Excelファイルを、フォルダーに格納します。

2.新しいExcelを開き、データタブ>新しいクエリ>ファイルから>フォルダからをクリックします。

  • 取り込むことのできる外部データは色々あり、例えばExcel、CSV等のファイル、複数ファイルを取り込む場合はフォルダを選択できます。
  • その他SQLServerや、MySQLなどのデータベース、Azure、Webや、SharePoint等からもデータを取り込むことができます。

3.GNIデータのExcelを格納したフォルダーパスを指定し、「開く」をクリックします。

「データの変換」をクリックすると、Power Queryエディターの画面が新しく開きます。

4.これでデータの読み込みができました。

このPower Queryエディターの画面で、データ変換操作を行います。

Power Queryエディタの画面は以下のような構成になっています。

  • クエリ(テーブル)一覧
    • Power Queryエディタで読み込み・データ変換したテーブルの一覧
  • 現在選択しているクエリ(テーブル)の出力
    • クエリ一覧で選択しているテーブルの出力(保存されたステップで選択されている時点)
  • 保存されたステップ(操作)の一覧
    • 選択しているクエリに対して行った操作の記録

Power Queryエディタ上で行ったデータ読込・データ変換の操作は、「適用したステップ」に記録されます。

そして、Excelのデータタブから、更新ボタンを押すだけで、同じ操作を実行することができます。

データ変換

Power Queryの操作は、このデータ変換のステップがメインになります。

今回取り込んだ世界のGNIのデータを、以下のように変換するのがゴールです。

今回のデータ変換のゴール

読み込んだデータを最終的に、国、年、GNI、1人あたりのGNI、人口の列を持つテーブルに変換します。

データ分析用に使うデータは、変換後のデータのように、1列に1種類のデータを持つように整形しなければいけません。

このデータ整形作業を、PowerQueryで実施していきます。

Step0:データを整える

最初にデータ変換操作を使って、テーブルのフォーマットを整えます。

1.一番左に「クエリの一覧」が表示されますが、これはテーブル名と考えて良いです。

クエリの名前は最初に分かりやすく変えておきます。

2.ファイルのGNIデータのシート、3ー8(1)、3ー8(2)を一緒に取り込み、結合します。

Content列の右の「ファイルの結合」アイコンをクリックし、「パラメーター」を選択し、「OK」をクリックします。

  • ファイルの結合で取り込むデータの候補が、シート名で表示されます。
  • 1シートだけ取り込みたい場合は、シート名を選択しますが、複数シートを取り込みたい場合は、一番上の「パラメーター」を選択して、OKをクリックします。

3.先ほど表示されていたすべてのシートが取り込まれるので、ここから対象となる3ー8(1)、3ー8(2)に絞ります。

やり方は色々ありますが、今回はName列の右にある▽のアイコンをクリックし、「テキストフィルター」>「指定の値を含む」を選択します。

4.値に、3-8と入力してOKをクリックすると、対象のシートに絞り込まれます。

直接フィルターで3ー8(1)と3ー8(2)にチェックを入れて絞り込んでもいいのですが、その場合もし3ー8(3)というシートが出てきた時に、取り込めません。

Power Queryの操作のコツとして、データが追加される等の、変動する要素の影響を受けないように操作することが大事です。

5.対象のシートに絞り込んだため、Data列の右の「展開」アイコンをクリックします。

これにより、選択されたテーブルの各列のデータを展開します。

取り込む対象の列名は、全てにチェックを入れ「元の列名をプレフィックスとして使用します」のチェックを外し、「OK」をクリックします。

「元の列名をプレフィックスとして使用します」にチェックを入れると、元の列名(今回の場合「Data」)がすべての列の頭につき、Data_Column1などの列名になります。

6.これで、対象の2シートのデータを取り込むことができました。

ここまでPower Queryの操作はすべて右側の「適用したステップ」に記録されています。

各ステップで実行されている関数は、上の関数式に表示されます。

※もし関数式が表示されていない場合、「表示」タブ>「数式バー」にチェックを入れると表示されます

「クエリ」とは、データベースに対してデータを抽出したり、削除したりする命令文のことで、この関数式がクエリの実態になります。

クエリ全体は、「ホーム」タブ>「詳細エディタ」から見ることができ、ここでクエリを直接記述したり、修正したりすることもできます。

この後は列名を変更したいです。

現在はColumn1、Column2…などとなってい ますが、Column1は国(地域)列、Column2は2016の列にしたいです。

7.「ホーム」タブ>「行の削除」>「上位の行を削除」を選択します。

この操作で、上位の何行を削除しますと、行数を指定して削除することができます。

8.「行数」に3を指定して「OK」をクリックすると、上位3行が削除されます。

これでColumn2以降の、一番上の行に、2016、2017…というデータが来ました。

9.「ホーム」タブ>「1行目をヘッダーとして使用」をクリックすると、年の列がヘッダー列になります。

同じテーブルで、同じ列名を2つ以上使うことはできないため、1人あたりのGNIの方は、2016_1というように、自動的に列名が変更されてしまいます。

ミムチ
ミムチ
おや?これではまだ、国名の列が「Column3」となっていますぞ!

パワ実
パワ実
これを解消するため、ステップを戻って操作を追加してみるよ!

10.「適用したステップ」の「削除された最初の行」を選択すると、上位3行を削除したステップに戻ります。

Column3列を選択し、「ホーム」タブ>「値の置換」をクリックします。

11.ステップの挿入で「挿入」をクリックし、途中にステップを追加します。

12.「検索する値」を「null」、「置換後」の値を「国(地域)」と設定し、「OK」をクリックすると、nullの値が、国(地域)に変更されました。

12.「変更された型1」のステップに戻ると、エラーとなっていますが、これは元々Column3だった列名が、国(地域)となってしまったためです。

このステップを削除してしまっても良いですが、変更する箇所が1カ所だけなので、今回は関数式の、「Column3」の箇所を、「国(地域)」に修正します。

これで、ヘッダー列が適切になりました。

13.データの中身を見てみると、アジアや、北アフリカ等の地域の列はnullになっています。

「2017」の列のフィルター>「空の削除」をクリックし、nullのデータ行を削除します。

14.まだ世界のデータや、国(地域)や年が入っている不要な行があるため、「国(地域)」の列のフィルター>「テキストフィルター」>「指定の値を含まない」を選択します。

15.「値に」「世界」、もう一つ「指定の値を含まない」を選択し、「地域」と入力して、「OK」をクリックします。

16.また不要な列も削除するため、「ホーム」タブ>「列の選択」>「列の選択」をクリックします。

17.必要な列にチェックを入れ「OK」をクリックすると、不要な列は削除されます。

ミムチ
ミムチ
ようやくデータが整いましたな!

パワ実
パワ実
ここからが本格的なデータ変換作業になるよ!

Step1:テーブルを2つに分割

Step0で変換したテーブルを、GNIと、一人当たりのGNIの2つのテーブルに分割します。

パワ実
パワ実
GNIと、一人当たりのGNIは別のデータになるため、一旦2つに分けてそれぞれでデータを整形し、最後に2つのテーブルを再びマージして一つにします。

左の「2016」~「2019」までの列は「国民総所得(GNI)」データで、右側の「2016_1」~「2019_4」は「1人あたりのGNI」データとなるため、これら2つのテーブルを分けて扱います。

1.「GNI」のクエリを右クリック>「参照」を選択します。

同じ操作をもう1回行い、3つのテーブルを増やします。

  • 参照テーブルを選択し、「適用したステップ」の「ソース」を見ると、「GNI」データ(元のテーブル)になっています。
  • 参照テーブルは、参照元のテーブルを変更したら、参照先のテーブルの変更が反映されます。

2.参照したテーブルの一つを「GNIデータ」、もう一つを「一人当たりのGNI」と、ダブルクリックして名前を変更します。

3.それぞれのテーブルで、GNI、データ1人当たりのGNIのデータの列を残し、「ホーム」タブ>「列の選択」で、不要な列を削除します。

4.一人当たりのGNIデータの年の列は、アンダーバー以降を削除し、2016~2019の列に変更します。

Step2:2つのテーブルそれぞれをピボット解除

次に、2つに分けたテーブルそれぞれで、「年」の列と「GNI」の列、「年」の列と「1人あたりのGNI」の列ができるように変換します。

  • 元々縦に「国」、横に「年」のデータが表示されたマトリックス表ですが、これを「国」列、「年」列、「GNI」列と、1列1種類のデータフォーマットに整形することを、ピボット解除と言います。
  • データ分析用には、このようにピボット解除したフォーマットとする必要があるため、それぞれのテーブルでピボット解除の操作を行います。

1.「GNIデータ」の「国(地域)」列を選択し、「変換」タブ>「列のピボット解除」>「その他の列のピボット解除」を選択します。

2.すると「属性」と「値」の列に変換されるため、列名を「年」と「GNI」に変更します。

3.「一人当たりのGNI」テーブルの方も、同様の操作でピボット解除を行います。

これでピボット解除ができました!

Step3:2つのテーブルをマージ

次に、2つのテーブルをマージし、再び一つのテーブルにします。

  • 2つのテーブルをマージする際、それぞれのテーブルのどのレコード同士が一致するのかを判断するため、「キー」となる列の設定が必要です
  • 今回の場合、「国」と「年」の2列の組み合わせで、テーブル間で一致するレコードを判断することができます。

※レコード=テーブルの行のこと

1.「GNIデータ」を選択し「ホーム」タブの>「クエリのマージ」をクリックします。

2.ドロップダウンで「一人当たりのGNI」データを選択します。

国(地域)列と、「年」列の2列が結合キーとなっているため、Ctrlキーを押しながら、国(地域)列、年列をそれぞれ選択し、結合の種類は「左外部結合」を選択し、「OK」をクリックします。

3.「一人当たりのGNI」のテーブルが結合されたので、右の「展開」アイコンをクリックし、「1人あたりのGNI」列にチェックを入れて、「OK」をクリックします。

これで2つのテーブルがマージできました。

Step4:計算列の追加で人口を計算

最後に、計算で人口列を追加します。

  • 人口は、GNI÷1人あたりのGNIの計算で出すことができます。
  • 数値同士の計算をする場合、計算に使う列を数値データにしておく必要があります。

1.数値データ同士の計算をするため、データ型を変換しておきます。

パワ実
パワ実
データ型というのはデータの種類のことで、例えば、国(地域)の列は左側に、ABCと付いています。

このABCは、テキストデータを扱っていることを示しています。

ミムチ
ミムチ
123というのは、数値データを扱っていることになるのですな!

2.「GNI」と「一人当たりのGNI」の2列を選択し、「変換」タブ>「データ型」>「整数」を選択します。

3.人口データの列を追加するため、「GNI」列を選択し、Ctrlキーを押しながら「一人当たりのGNI」列を選択します。

「列の追加」タブ>「標準」>「除算」を選択すると、人口を計算して列を追加することができます。

4.列名を「人口」に変えておきます。

除算の計算では、先に選択した列÷後に選択した列の計算がされます。

5.ところで元データは、GNIが100万ドル単位、1人当たりのGNIはドル単位、人口は100万人単位となり、1人あたりのGNIだけが単位が異なるため、100万で除算しておきます。

列を追加しない計算の場合は、「一人当たりのGNI」列を選択した後、「変換」タブ>「標準」>「除算」を選択します。

6.「1000000」と入力して、OKをクリックします。

以上で、Power Queryによるデータ変換の作業は完了です。

データ変換の適用

最後に、データ変換の適用を行います。

データ変換を適用することで、Power Queryで作成されたデータ変換が実行され、Excelシートにデータ変換後のテーブルが表示されます。

1.Power Queryでのデータ変換が終わったら、「ホーム」タブ>「閉じて読み込む」を選択します。

2.するとデータが読み込まれ、今までの操作が適用されます。

3.不要なテーブルのシートは削除し、必要なテーブルのシート名を変更しておきます。

これでPower Queryによるデータ変換の適用も完了しました。

最後に

本日は、Excel Power Queryの基本的な使い方を解説しました。

Excel Power Queryを使えば、データ読込・データ変換を簡単に自動化することができます。

元データを修正、更新した際も、同じデータ変換操作を適用するので、定期的に出力する帳票等のデータ整形に適しています。

分析用に使うデータだけでなく、複数のファイルを結合したりして、Excelのリストを作成したい場合にも有用です。

パワ実
パワ実
Power Queryを使えば、データ整形作業を簡単に効率化できるので、是非使ってみてください! 

ABOUT ME
パワ実
DX推進担当(IT部門) 2021年からPower Platform(Power BI、Power Apps、Power Automate)を勉強中。 Power Platformを使っていく中で、知りえた情報を発信している。 Youtube、Twitterでの情報発信もしています!

ご依頼・ご相談について

Power Platformに関するご相談は、こちらからお願いします!

Power Platform学習におすすめの無料ハンズオンセミナー、参考本は、こちらのページを参考にしてください。