ExcelのPower Queryで複数のテーブルを結合する

はじめに

先日、XLOOKUPで複数のテーブルを結合する方法のメモを書いたのですが、せっかくなのでPower Queryを使った方法についても書いておこうと思います。

blog.jbs.co.jp

元のデータ

以前の記事と同じなのですが、再掲します。

Usersテーブル

例えば、社員番号、名前、UPNのある社員一覧があるとします。

EmpNo Name UPN
1111 User A userA@example.com
2222 User B userB@example.com
3333 User C userC@example.com
4444 User D userD@example.com

Formsテーブル

さらに、Formsのアンケート結果をダウンロードしたものがあるとします。

ID 開始時刻 完了時刻 メール 名前 answer1 answer2 answer3
1 10:00 10:05 userA@example.com User A 1 2 3
2 11:00 11:05 userD@example.com User D 2 3 4
3 12:00 12:05 userB@example.com User B 3 4 1

欲しいデータ

ユーザー一覧にアンケート結果が結合されたものが、今回欲しいデータとします。

EmpNo Name UPN answer1 answer2 answer3
1111 User A userA@example.com 1 2 3
2222 User B userB@example.com 3 4 1
3333 User C userC@example.com #N/A #N/A #N/A
4444 User D userD@example.com 2 3 4

Power Queryでの結合方法

テーブルからクエリの作成

Usersテーブルを選択した状態で、「データ」の「テーブルまたは範囲から」をクリックします。

Power Queryエディタが起動しますので、一旦そのまま閉じて読み込みます。

そうすると、Excel上に、いまのクエリを基にした新しいテーブルが生成されます。

Formsについても同様の操作を行います。

が、こちらのシートは使わないので消してしまいます。消してもクエリは残ります。

クエリの編集

「クエリ」の「編集」から、再度、Power Queryエディタを起動します。

Usersはすべての列が必要なので一旦このままにします。

Formsで欲しいのは、Usersと紐づけるためのUPN(メール)とアンケート結果だけなので他の列は削除します。*1

欲しいデータが残りました。

クエリのマージ

続いて、二つのクエリを結合します。今回は、UsersにFormsのクエリをマージします。Usersを選んで「クエリのマージ」をクリックします。

キーとなるUPN(メール)を指定してマージします。

マージされるのですが、このままだと使えません。

追加された列の右上をクリックすると、Forms側の列が表示されるので、ここから必要な列を選びます。今回はアンケート結果だけチェックを入れます。

列が追加されました。これで欲しいデータがそろいました。

Excelで確認する

Excel上でも列が追記されています。

元データには影響がありません。例えばFormsのクエリで時刻などの列は削除しましたが、元データには残っています。

おわりに

ExcelのPower Queryで複数のテーブルを結合する方法について書きました。

もちろん、Power Queryなので、Power BI Desktopでも同じようにクエリを編集して結合することが出来ます。

「Power Queryはいいとして結局XLOOKUPとどっちでやればいいの?」というところについては、自分なりの考えを次の記事で書きたいと思います。

*1:時刻の型が正しく反映されていないのですが、今回は削除する列なので無視します

執筆担当者プロフィール
舟越 匠

舟越 匠(日本ビジネスシステムズ株式会社)

人材開発部に所属。社内向けの技術研修をメインにしつつ、JBS Tech BlogやMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。好きなサービスはPower Automate / Logic Apps。好きなアーティストはZABADAK。

担当記事一覧