Power Query 基本の4ステップを解説します

みなさんは、Excelに搭載されているPower Queryという機能をご存じでしょうか。

  • 名前は聞いたことあるけど使ったことがない。
  • そもそも名前すら聞いたことがない。

そういう方は、ぜひとも最後まで読んでいってください。
※この記事では基本的な内容を解説していますので、既に使いこなしている方には物足りない内容になっているかと思います。

Power Queryは、データの読み込みや加工を簡単に行うことができる機能です。
複数ファイルに分かれているデータをひとつのファイルに集約したり、また、元データに対して計算した結果を追加したりといったことができます。

従来、複数のファイルをひとつに集計しようとすると、ひとつひとつのファイルを手動で開いてコピー&ペーストを繰り返したり、あるいは、自動化するためにVBAのプログラムを書く必要がありました。

しかし、Power Queryを使用することで、煩雑な手順を踏まなくても、半自動的にデータの集計ができるようになりました。

この記事では、Power Queryを使用したデータの集計や加工の流れを、順を追って解説していきます。
Power Queryにはいろいろな機能があるため、すべてを理解するのは難しいですが、この記事で解説する基本的な部分を抑えるだけでも、データ集計や加工の作業をかなり効率化できると思います。

作業イメージ

この記事では、具体的な作業を進めながら、Power Query の使い方を解説します。
まずは、事前に準備するものと完成イメージを確認しましょう。

準備するもの①:集計対象のファイル

今回の手順では、以下の3つの売上表を集計します。

集計対象のファイル(売上表)

4月~6月の売上表が、各月ごと1ファイルずつに分かれて格納されています。
また、それぞれのファイルは、以下のようなレイアウトになっています。

売上表のレイアウト

「日付」「商品コード」「数量」の3つの列がある表形式のデータです。
表の部分は、テーブルとして書式設定されています。
※”テーブルとして書式設定”の方法については、「補足|テーブルとして書式設定」を参照してください。

準備するもの②:商品マスタ表

売上表にある商品コードについて、商品名と単価を表形式にまとめたものを、商品マスタとして準備します。

こちらも、売上表と同様に、テーブルとして書式設定をしてあります。

完成イメージ

最終的な完成イメージは以下のようになります。

完成イメージ

4月から6月までの売上表がひとつにまとめられています。
また、商品マスタにあった「商品名」と「単価」の列が追加されており、単価×数量で求めた「金額」列も追加されています。

補足:テーブルとして書式設定とは?

テーブルとして書式設定は、「ホーム」タブにあるスタイルを設定する方法のひとつです。

クリックすると、いろいろなスタイルが表示され、その中からひとつ選ぶことで、書式設定をすることができます。

テーブルとして書式設定で選べるスタイル

ここまでだと、書式を設定できるだけの機能のように思えるかもしれませんが、「テーブルとして書式設定」にはもうひとつの役割があります。
それは、指定した範囲がひとつのテーブルである、とExcelに認識させることです。

Excelにテーブルと認識させるメリットは、テーブルを活用した機能を使えるようになることです。

テーブルをインプットにピボットテーブルを作成したり、後述のようにPower Queryでデータソースとして扱ったり、あるいは、関数の中でテーブル名で参照したりといったように、Excelにはテーブルを活用した機能があります。
テーブルとして書式設定をすることで、それらの機能を有効に活用できるようになるのです。

Power Query 基本の4ステップ

では、実際の手順の解説に入っていきます。

Power Queryの作業は以下の4ステップで進めていきます。

ステップ1|データソースの指定
ステップ2|ファイル結合
ステップ3|データ変換
ステップ4|読み込み

それぞれのステップについて詳しく見ていきましょう。

ステップ1|データソースの指定

最初に行うのは、データソースの指定です。
これは、集計するデータが入っているファイルやフォルダーを指定することです。

では、具体的な方法を見ていきましょう。

①「データ」タブ→「データの取得」→「ファイルから(F)」→「フォルダーから(F)」を選択します。

②表示されたウィンドウで、集計対象のファイルが格納されたフォルダーを選択し、「開く(O)」ボタンを押下します。

これで、売上表フォルダーの中にある3つのファイル(4月売上表.xlsx、5月売上表.xlsx、6月売上表.xlsx)をデータソースとして指定することができました。

①のウィンドウを見ていただくとわかる通り、データソースとして指定できるのは、フォルダーだけではありません。
個別のExcelブックやテキストファイル、CSVファイルなども指定することができます。
また、AccessやSQL Serverなど、一部のデータベースシステムなどを指定することも可能です。

本記事ではフォルダーを指定する方法を取り上げていますが、Power Queryには他にもいろいろな使い方がありますので、応用範囲の広い機能であるということが言えると思います。

ステップ2|ファイル結合

続いて、ファイル結合を行います。

これは、先ほど指定したフォルダーに格納された3つのファイルを、ひとつのデータにまとめる作業です。
複数のファイルを取り込む場合に必要な作業になりますので、個別のファイル(ExcelブックやCSVファイルなど)を取り込む場合にはファイル結合は必要ありません。

具体的な手順を見ていきましょう。

①「結合 ▼」ボタンを押下し、「データの結合と変換」を選択します。

「データの結合の変換」を選択する。

②「File の結合」ウィンドウが表示されたら、左の表示オプションの中から「売上表」を選択し、「OK」ボタンを押下します。

Fileの結合ウィンドウの操作

これで、ファイルの結合は完了です。

上の手順で選択した「売上表」は、事前準備のときにテーブルとして書式設定をしたことで選択できるようになったものです。
テーブルとして書式設定をすることによって、Excelが、表というひとつのオブジェクトとして認識しています。
それによって、「File の結合」ウィンドウで選択肢のひとつとして表示されているのです。

ステップ3|データ変換

次に、データ変換を行います。

「File の結合」ウィンドウで「OK」ボタンを押下すると、以下のような画面が表示されます。
これは「Power Query エディター」と呼ばれるもので、Power Queryに関する操作は基本的にこのウィンドウで行われます。

Power Query エディターの表示

それでは、実際に「Power Query エディター」を使用して作業していきましょう。

画面中央に、取り込んだデータのプレビューが表示されていますが、元のExcelファイルの内容とは異なる部分が2箇所あります。

  • 商品コードの冒頭の「00」が消えている。
  • 余計な「Source.Name」列が付与されている。

まずは、この2点を解消していきます。

型の変換

商品コードの冒頭「00」が消えているのは、商品コードが数値型で扱われているためです。
列名の「商品コード」の左側に「123」と表示されていますが、これが数値型で扱われていることを表しています。
冒頭の「00」を維持するには、数値ではなく文字列として扱う必要があるので、テキスト型に変換していきます。

①型を変換するには、商品コード列の列名部分を右クリックし、「型の変換」からどの型に変換するのかを選択します。

商品コード列の変換

②テキスト型を選択すると、「列タイプの変更」ウィンドウが表示されます。ここで「現在のものを置換」をクリックします。

「列タイプの変更」ウィンドウで「現在のものを変換」を選択

これで、型の変換は完了です。

商品コードの型変換完了後
「列タイプの変更」にある「現在のものを置換」と「新規手順の追加」とは何か?

「列タイプの変更」ウィンドウには、以下のような記載があります。

選択された列には、既存の型変換があります。既存の変換を置き換
えますか?または、既存の変換を保持して、別の手順で新しい変換を
追加しますか?

ここに記載されている「既存の型変換」というのは、画面右側の「適用したステップ」欄に表示されている「変更された型」の行のことです。
では、「適用したステップ」とは何かというと、これは、データの読み込み・変換の一連の処理の流れを指しています。

Power Query というのはQuery(クエリ)を作成する機能です。クエリというのは、問い合わせという意味です。
クエリを作るといことは、

  • どのようなデータを
  • どのような条件で
  • どの部分を
  • どのように加工して

データを取得するのか、という一連の手順・流れを作成していることを意味しています。
そして、この一連の流れが「適用したステップ」欄に表示されているのです。

「適用したステップ」欄にある「変換された型」という行は、文字通り、データ型を変換する手順です。

Power Queryの機能として、データソースを指定した時点で、すでに各列に対して適当なデータ型への変換がなされています。
「商品コード」については、Power Queryが数値型が適当と判断し、自動的に数値型に変換されていたということです。

そして、「商品コード」の型をテキストに変換しようとしたときに、

  • 「現在のものを置換」 … Power Queryが自動で行った数値型への変換を取り消し、テキスト型に変換する。
  • 「新規手順の追加」 … Power Queryが自動で行った数値型への変換を取り消さず、その後にテキスト型に変換する手順を追加する。

のいずれかから選ぶことになります。

列の削除

次に「Source.Name」列を削除しましょう。

①「Source.Name」列の見出しを右クリックし、「削除」を選択します。

「Source.Name」列の削除

これで完了です。

「Source.Name」列の削除後

別の表とマージする。

次は、商品コードに紐づく商品名と単価の列を追加しましょう。

商品コードごとの商品名と単価は、商品マスタとして表にまとめてありました。(※事前準備参照)
この商品マスタをPower Queryを使用して取り込み、売上表と紐づけていきます。

①「ホーム」タブ → 「新しいソース」 → 「ファイル」 → 「Excelブック」を選択します。

新しいソースメニューを選択

②商品マスタのファイルを選択し、「インポート(M)」を押下します。

商品マスタのファイルを選択

③「ナビゲーター」ウィンドウで、商品マスタ表を選択します。※事前準備で、「テーブルとして書式設定」で作成した表オブジェクトです。

「ナビゲーター「ウィンドウの操作

これで、表の取り込みができました。

商品コードの取り込み完了後

商品コードが数値型になっているので、テキスト型に変換しました。

商品コードの型変換完了後

次に、売上表と商品マスタをマージします。商品コードという共通の項目を利用して、売上表に対し、対応する商品マスタの情報を付与していきます。

①「ホーム」タブ → 「クエリのマージ」 → 「新規としてクエリをマージ」を選択します。

クエリのマージ

表示された「マージ」ウィンドウでは、上の段で売上表が選択され、下の段が空白になっています。

②下の段のプルダウンを表示し、商品マスタを選択します。

マージ対象となる表の選択

③下の段に商品マスタが表示されたら、上下の段それぞれの商品コードをクリックします。

紐付けに使用する項目として商品コードを選択

これで、商品コードを使用して情報を関連付けることを指定できました。

④「OK」ボタンを押下します。

「マージ」ウィンドウで「OK」ボタンを押下

数量列の右側に、商品マスタの列が追加されました。

商品マスタ列追加後

この時点では、商品マスタの情報はTableとして一列にまとめられています。
なので、これを商品名・単価など個別の情報に分けていきましょう。

⑤商品マスタ列の右側にあるボタンを押下します。展開する列を指定する欄が表示されますので、商品名と単価のみにチェックがついた状態にします。
「元の列名をプレフィックスとして使用します」のチェックを外し、「OK」ボタンを押下します。

商品マスタ列の展開

これで、商品名と単価の列を追加することができました。

商品マスタの列展開後

列の追加

最後に、単価×数量で計算した金額の列を追加しましょう。

①「列の追加」タブ→「カスタム列」を選択します。

「カスタム列」の選択

②「新しい列名」欄と「カスタム式の列」欄を入力し、「OK」ボタンを押下します。
※「カスタム式の列」欄の「単価」と「数量」は、右側の「使用できる列」欄の該当する箇所を選択してから「<<挿入」ボタンを押すと入力できます。

「カスタム列」ウィンドウに入力

金額列を追加することができました。列名を右クリックして、「整数」型に変更しましょう。

「金額」列の型を変換

これで、データ変換が完了しました。

データ変換完了後

ステップ4|読み込み

最後に、読み込みを行います。

読み込みとは、Power Queryエディターで作成したクエリを実行し、結果をワークシートに反映することです。

①「ホーム」タブ→「閉じて読み込む」→「閉じて次に読み込む...」を選択します。

「閉じて読み込む」メニューを選択

②「データのインポート」ウィンドウが表示されるので、表示形式とインポート先を選択し、「OK」ボタンを押下します。
※今回は、表示形式を「テーブル(T)」、インポート先を「新規ワークシート(N)」とします。

「データのインポート」ウィンドウでの操作

これで、一連の作業が完了です。

読み込み完了後

データを更新する方法

Power Query で作成された表は、元のデータに対する変更を簡単に反映できます。

例として、「商品コード001:鉛筆」の単価を60円→70円に変更してみましょう。

商品マスタの更新

元データの変更を反映するには、表の中のセルを右クリックし、「更新」を選択します。

表の中のセルを右クリック

これで、変更が反映されました。

更新後

おわりに

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

これまで、複雑な関数やマクロ・VBAを使わないとできなかった作業が、Power Queryを使用することで簡単にできるようになりました。

定型的なデータの集計や加工作業については、Power Queryを使いこなせるかどうかで作業効率が大きく変わってきます。

ぜひ、活用してみてください。