パワークエリを使ってみる3(クエリのマージ)

PowerQuery

はじめに

 以下のように重複した項目のデータを片方のデータに反映させたい(マージしたい)場合を想定してテーブルを作ってみたいと思います。

 今回は、売上マスタ(右側)に 社員マスタ(左側)のデータを反映させてみたいと思います。

結果から申し上げますと、2つのデータソースがあるため2つのシートが必要になってきます。(それぞれがデータソールとリンクするためです。)

 今回もすぐに試せるようにデータを用意しましたので以下からダウンロードしてお使いください。
 フォルダ内に 売上マスタ.xlsx 社員マスタ.xlsx が展開されます。

データのインポート

 新しいブックを開いて、「データ」>「データの取得」>「ファイルから」>「Excelブックから」と選択して、売上マスタ.xlsxを開いてください。

 ナビゲーターで売上マスタを選択して、プレビューで確認して「データの変換」を押して読み込みます。

新しいソース

 売上データが読み込めたら、メニューの右側にある「新しいソース」からExcelブックを選択し、今度は社員マスタ.xlsx を読み込みます。

 同じようにナビゲーターで社員マスタを選択してプレビューを確認したら、OKを押します。

 社員マスタを読み込むと、1行目が項目名に設定されていませんのでこれを変更します。

 「ホーム」タブにある「1行目をヘッダーとして使用」をクリックします。

 これで1行目が項目名に変更されました。「新しいソース」での挿入では、「データの変換」がないので読み込まれる時のデータ型が文字列になっている場合があるかもしれないので確認しておきましょう。

 一旦、売上マスタを選択しておきます。

クエリのマージ

 読み込んだ2つのクエリを 社員ID でマージします。クエリのマージをクリックします。

 マージでは、選択されていたクエリが上に表示されているはずです上にあるクエリに項目がマージされる事になります。

 下のドロップボックスを社員マスタに設定します。

 2つのクエリで共通の社員ID両方とも選択しておきます。

 結合の種類は、左外部を選択してください。これを選択するとVLOOKUPのような動作となります。
売上マスタの社員IDを社員マスタから見つけて氏名と担当エリアを取得してくるようなイメージです。

読み込まれたマスタを展開する

 売上マスタに読み込まれた社員マスタのデータはマスタのままですので、必要な項目を展開する必要があります。
社員マスタの右にあるアイコンをクリックします。

 社員IDのチェックを外し氏名担当エリアにチェックが入った状態にしてOKを押します。

 項目名が 社員マスタ.氏名 となっていますので 氏名 に変更しておきます。同じように 担当エリア も変更しましょう。

 新たに追加された 氏名 担当エリア社員ID の隣に移動しておきます。

データ出力

 データを出力します。メニューの「データを閉じて読み込む」から「データを閉じて次に読み込む」を選択します。

 今回は、「既存のワークシート」が選択できません。2つのデータソースがあるため、複数のワークシートが必要になるためです。

 売上マスタのシートに氏名と担当エリアの列が追加されているのが確認できると思います。

まとめ

 今回はクエリのマージを試してみました。個人的は以下の点に注意すれば良いかと思います。

 ・データソースが2つになるのでシートが2つ必要になる
 ・2つ目のデータソースを読み込む際、1行目をヘッダにさせる必要がある
 ・クエリのマージでは、マージさせたいクエリを選択しておく(上にくるようにする)
 ・読みこまれたクエリは展開する必要がある(展開したら項目名を変更する)

 尚、ピボットテーブルに出力する場合でも、社員マスタは新規シートにテーブルとして展開されるようです。

 参考にしてみてください。

コメント

タイトルとURLをコピーしました