前回に引き続き、今回も「クエリのマージ」の使い方を紹介していこう。今回は、本テーマの主題ともいえる「2つのデータ表を結合するときの操作手順」について解説する。VLOOKUPやXLOOKUPと同様の処理を実現できるので、ぜひ使い方を覚えておこう。

結合するクエリの準備

前回は、2つのデータ表をそれぞれ「クエリ」として取得するところまで解説した。今回は、その続編として、実際にデータ表を結合するときの操作手順を解説していこう。

  • データ表の結合手順 クエリのマージ(2)

まずは、これまでの処理内容を“おさらい”しておこう。以下の図は、ある24時間ジムの「4月1日の利用状況」を記録したデータ表だ。ただし、このままでは「誰が利用したのか?」を把握できない。

  • 4月1日の利用状況を記録したExcelファイル

「誰が利用したのか?」を把握するには、会員情報をまとめた別のExcelファイルを参照して、それぞれのIDをもとに氏名などの情報を照らし合わせる必要がある。

  • 会員情報を記録したExcelファイル

このような場合は、2つのExcelファイルを組み合わせたデータ表を作成すると、内容を理解しやすい表に仕上げることができる。これをパワークエリで実現するために、それぞれのデータ表を「クエリ」として取得した。

「会員情報」のクエリには、会員情報をまとめたデータ表が取得されている。ちなみに、こちらは「接続専用のクエリ」として扱われている。

  • 「会員情報」のクエリ

一方、「4月1日の記録」のクエリには、4月1日の利用状況を記録したデータ表が取得されている。こちらは「通常のクエリ」として扱われている。

  • 「4月1日の記録」のクエリ

ここまでが前回の連載で紹介した内容となる。よくわからない方は、先に第46回の連載を一読してから本稿を読み進めていくとよいだろう。

「クエリのマージ」の実行手順

それでは、「クエリのマージ」を使って2つのデータ表を結合するときの操作手順を解説していこう。「4月1日の記録」のクエリを選択し、「ホーム」タブにある「クエリのマージ」をクリックする。

  • 「クエリのマージ」の開始

以下の図のような設定画面が表示されるので、最初に「どのクエリからデータをピックアップするか?」を指定する。今回の例の場合、会員情報をまとめた表からデータをピックアップするので「会員情報」のクエリを選択すればよい。

  • 結合するクエリの選択

選択したクエリ(データ表)のプレビューが表示される。続いて、「どの列を基準にデータを照合するか?」を指定する。今回の例では、それぞれの「ID」の列を基準にデータを照合すればよい。上部に表示されているデータ表にある「ID」の列を選択する。

  • 基準とする列の選択(1)

同様に、下部に表示されているデータ表でも「ID」の列を選択する。

  • 基準とする列の選択(2)

なお、今回の例では両者とも「ID」という列名になっているが、これらの列名は同じでなくても構わない。対応するデータが入力されている列であれば、列名が異なっていても問題なく「クエリのマージ」を実行できる。

続いて「結合の種類」を指定する。今回の例の場合、この設定は「左外部」のままで構わない。すべて指定できたら「OK」ボタンをクリックする。

  • 「結合の種類」の指定

「4月1日の記録」のデータ表に「会員情報」のデータが追加される。ただし、現時点ではデータがTableとして1列に集約されている。

  • Tableとして結合された「会員情報」のクエリ

結合されたデータ表(Table)の展開

続いては、Tableとして集約されている「会員情報」のデータから必要なデータだけをピックアップする作業を進めていこう。この作業は「展開」と呼ばれている。

「会員情報」の列の右端に表示されているボタンをクリックし、展開する列にチェックを入れる。今回は「氏名」と「性別」の列を展開するように指定した。必要な列をすべてチェックできたら「OK」ボタンをクリックする。

  • 展開する列の指定

データ表の右端に「氏名」と「性別」の列が展開される。これで各IDに対応する「氏名」と「性別」をピックアップできたことになる。

  • 展開された列

展開された列の名前は「取得元のクエリ名.列名」という形になっている。このままでも構わないが、もっとシンプルな名前に変更しておこう。ここでは「氏名」と「性別」という列名に変更した。

  • 列名の変更

続いて、「氏名」と「性別」の列を適当な位置へ並べ替える。この操作は、各列を左右にドラッグ&ドロップすると実行できる。

  • 列の並べ替え

Tableとして取得したデータを展開した際に、データの並び順が変更されてしまうケースもある。今回の例では、「入館時刻」の小さい順(早い順)に並んでいたデータがランダムな順番に並べ替えられてしまっている。

  • 結合後のデータの並び順

これを元の並び順に戻しておこう。「入館時刻」の列を選択し、「昇順で並べ替え」をクリックする。これでデータを「入館時刻」の昇順に並べ替えることができる。

  • 「入館時刻」の昇順に並べ替え

  • 「入館時刻」の昇順に並べ替えたデータ表

以上で「列のマージ」を使ったデータ表の結合は完了となる。VLOOKUPやXLOOKUPと同様の処理を、パワークエリでも実現できることを確認できたと思う。

むしろ、「パワークエリの方が簡単かも……」と感じた方も多いのではないだろうか? VLOOKUPやXLOOKUPといった関数は特に難しいものではないが、使用するには「引数の指定方法」を覚えておく必要がある。さらに「別のExcelファイルからデータをピックアップする方法」も学んでおかなければならない。これらを、そのつど調べながら作業しているようでは、とても「スムーズに作業を進められる」とは言えない。

一方、パワークエリの場合は、それぞれのデータ表をクエリとして読み込み、「クエリのマージ」を実行するだけ。XLOOKUPなどの関数と比べて、より直感的に作業を進めることができる。オートフィルを使って関数をコピーする手間も必要ない。「何も知らなくても実行できる」というほど簡単ではないが、ひとつの選択肢として覚えておく価値は十分にあるはずだ。

データ表をExcelに出力

念のため、先ほどのデータ表をExcelに出力した例も紹介しておこう。出力方法はいつもと同じで、「閉じて読み込む」のアイコンをクリックするだけ。

  • データ表をExcelに出力

データ表がExcelに出力(すでに出力されている場合は更新)される。これで「誰がジムを利用したのか?」を即座に把握できるようになる。

  • Excelに出力されたデータ表

ちなみに、このデータ表には「ID」が同じデータが2回登場している。つまり、同じ日に2回、ジムを利用した会員(岸 剛さん)がいる訳だ。このように同じデータが何回も登場する場合でも、問題なくデータを取得できるようになっている。

  • IDが重複しているデータ

以上が「クエリのマージ」の基本的な使い方となる。なお、今回の連載では「結合の種類」について詳しく説明しなかったが、この設定を変更することにより「どのようにデータを結合するか?」を指定することも可能となっている。ということで、次回は2つのデータ表から「重複しているデータ」だけをピックアップする方法を紹介していこう。