別表の列データの転記を自動化する方法[Power Query(パワークエリ)基礎]
AさんAさん

別々の表で管理している「社員」の情報と「部署」の情報を紐づけたいです。

こうした作業もPower Queryで自動化できますか?

森田森田

その場合、Power Queryエディター上の「クエリのマージ」というコマンドが有効ですよ!

具体的な使い方について解説していきますね。

はじめに

本題に入る前に、この記事がおすすめな方を挙げてみます。

  • 別表の列データの転記作業を自動化したい方
  • データ整形・加工の工程が複数あり、かつその作業が定期的に発生する方
  • Power Query(パワークエリ)の使い方を習得したい方

前提条件

この記事のテクニックを使うためには、以下の条件を満たす必要があります。

  • ExcelのバージョンはExcel2010以降(Microsoft365含む)が必須
  • Excel2010/2013ユーザーの場合、事前にMicrosoft社公式HPよりPower Query(パワークエリ)のダウンロードが必要(Excel2016以降は標準機能)
  • Power Query(パワークエリ)の概要を理解していること
    →まず、以下の記事で概要を把握することをおすすめします。

別表の列データを転記したい場合に「クエリのマージ」が有効

以下のように、ベースとなる表へ別の表の列データを転記したいケースがあります。

こうした場合、従来のワークシートではVLOOKUP関数での転記が一般的でした。

しかし、Power Query(パワークエリ)なら、関数を使わずにこうしたデータ転記を自動化できます。

しかも、他のデータの整形・加工作業が複数工程あるなら、なおさら便利ですよ!

では、Power Query(パワークエリ)でのクエリのマージ手順を確認していきましょう。

Power Query(パワークエリ)でのクエリのマージ手順

今回の前提として、クエリのマージを行う対象テーブルは2種類ともブック内にあり、それぞれ事前にPower Queryエディターに取り込んでいる状態からスタートするとします。(ブック内のデータ取得について復習したい方は下記記事を参照)

クエリのマージは以下の3ステップとなります。

STEP1】ワークシート上のリボン「データ」タブから「マージ」ダイアログを起動

まず、ワークシート上のリボン「データ」タブをクリック(①)し、「データの取得」をクリック(②)します。

続いて、「クエリの結合」をクリック(③)すると表示される「マージ」をクリック(④)してください。

STEP2】「マージ」ダイアログで転記元・転記先のクエリを指定

「マージ」ダイアログが起動します。

まず、転記先の表データを取得しているクエリを選択(⑤)してください。

今回は社員情報へ部署情報を紐づけるので、「社員マスタ」が該当します。

次に、転記元の表の主キーに該当する列を選択(⑥)していきます。

今回は転記元の表が「部署マスタ」となり、その主キーは「部署コード」です。

続いて、転記元の表データを取得しているクエリを選択(⑦)し、転記元の表の主キーの列を選択(⑧)してください。

最後に、OK」をクリック(⑨)して完了です。

主キーとは、そのレコードが一意(重複していない)であることを示すためのコードや番号のことです。(代表例として、社員番号や商品コードなど)

STEP3Power Queryエディター上で任意の列を展開

ここでPower Queryエディターが起動します。

すると、転記先の表データが表示され、右端に転記元に選択したクエリ名の列が追加されたことが確認可能です。

この転記元のクエリ名の列のボタンをクリック(⑩)すると、転記元の表から展開(転記)する列を選択できます。

あとは、転記したい列を選択(⑪)し、「元の列名をプレフィックスとして使用します」のチェックを外す(⑫)ことまで完了したらOK」ボタンをクリック(⑬)してください。

これでクエリのマージ作業は完了です。

手順⑪は、主キーの列は原則不要です。

手順⑫のチェックを付けておくと、列名の頭に転記元のクエリ名が付加されてしまいます。
例)「部署コード」をプレフィックスとして使用した場合:「部署名.部署コード」

「プレビュー」ウィンドウ上でクエリのマージが確認できたらOK

「プレビュー」ウィンドウを見ると、無事設定どおりに別表の列データが転記されていますね!

あとは、その他の処理を行い、任意の方法でデータを出力すれば完了です。

【参考】既存のクエリ内で別表のデータ転記を行いたい場合は

ちなみに、上記の方法では「マージ1」という新たなクエリが生成されてしまいます。

もし、クエリを増やさずに転記先の「社員マスタ」クエリの中で転記したい場合は、「社員マスタ」クエリをPower Queryエディター上で開き、以下のコマンドを使えばOKです。

リボン「ホーム」タブにある「クエリのマージ」コマンドを実行すると、上記STEP2の「マージ」ダイアログが起動します。(手順⑤はセットされた状態)

あとは、上記の手順⑥以降と同じ流れで操作を進めてください。

ケースバイケースで使い分けましょう!

【参考】クエリのマージ内容を変更したい場合は

もし、あとでクエリのマージ条件を変更したい場合は、「クエリの設定」ウィンドウの任意のステップをダブルクリック、もしくは歯車マークをクリックしましょう。

ちなみにSTEP2の内容を変更したい場合は「ソース」、STEP3の内容を変更したい場合は「展開された(転記元のクエリ名)」のステップが対象となります。

サンプルファイルで練習しよう!

可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。

サンプルファイル_PowerQueryデータ整形_クエリのマージ.xlsx

※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)

サンプルファイルを開いたら、次の手順を実施してください。(今までの解説のまとめです)

  1. ワークシート上のリボン「データ」タブをクリック
  2. 「データの取得」をクリック
  3. 「クエリの結合」をクリック
  4. 「マージ」をクリック
  5. 転記先の表データを取得しているクエリを選択
  6. 転記元の表の主キーに該当する列を選択
  7. 転記元の表データを取得しているクエリを選択
  8. 転記元の表の主キーの列を選択
  9. OK」をクリック
  10. 転記元のクエリ名の列のボタンをクリック
  11. 転記したい列を選択
  12. 「元の列名をプレフィックスとして使用します」のチェックを外す
  13. OK」ボタンをクリック

本記事の解説と同じ結果になればOKです!

さいごに

いかがでしたでしょうか?

クエリのマージはPower Query(パワークエリ)を便利に使うためには、覚えておくべき基本テクニックです。

特に、複数の表から1つの表へ集約する際など、このクエリのマージが大活躍しますよ!

なお、Power Query(パワークエリ)の各種テクニックは、私の拙著でも体系的に解説していますので、こちらも参考にしてみてください。

ご参考になれば幸いですm(_ _)m

森田森田

データ転記はVLOOKUP関数が自動化できて便利ですが、難点なのは転記量が増えると、その分VLOOKUP関数の数式も比例して増えるためにExcelブックの容量が重くなってしまうことです。

しかし、Power Queryなら数式のセットが不要な分、Excelブックの容量増加を抑制しながらデータ転記を自動化できます。

この恩恵を受けるだけでも、Power Query(パワークエリ)を使う価値はあると思いますので、ぜひまだ使ったことがない方はチャレンジしてみてくださいね!