パワークエリの「クエリのマージ」・「マージ」コマンドのサムネイル
AさんAさん

社員マスタへ別表の部署マスタの「部署名」列を転記したいです。
Power Queryエディター上で列を転記したい場合、どうしたら良いですか?

森田森田

その場合、Power Queryエディター上の「クエリのマージ」コマンドワークシート上の「マージ」コマンドを使えば良いですよ!
では、詳細を解説していきますね。

Excelステップ講座

解説動画:【パワークエリ#7】データ転記・連結テクニック – 複数の表データを結合し、一つに集約する作業を自動化する(クエリのマージ/クエリの追加)

この記事の内容は下記の動画でも解説しています。

コメント欄の「データ転記(クエリのマージ)」の部分をクリックすると該当の解説へジャンプできますよ!

はじめに

この記事はパワークエリの概要を把握していることが前提です。

参考記事

パワークエリの概要については、以下の記事をご参照ください。

「クエリのマージ」・「マージ」の使いどころ

「クエリのマージ」・「マージ」コマンドは、クエリの新規作成ステップのうち、STEP2の「取得データを整形/加工(Transform)」に該当する機能です。

「クエリのマージ」・「マージ」のスコープ

機能自体は、ワークシート上の関数の「VLOOKUP」と似ています。

一連の整形作業の中で、別表の列データを転記したい場合に「クエリのマージ」・「マージ」コマンドを使いましょう。

パワークエリの「クエリのマージ」・「マージ」コマンドの使いどころ

「クエリのマージ」・「マージ」コマンドを活用することで、主キーを基準に別表の列データの転記を自動化できます。
主キーとは、そのレコードが一意(重複していない)であることを示すためのコードや番号のこと(代表例として、社員番号や商品コードなど)。

参考記事

ワークシート上の関数の「VLOOKUP」の詳細は、以下の記事をご参照ください。

使用イメージ

「クエリのマージ」コマンドで社員マスタへ部署マスタの「部署名」列を転記したイメージが以下です。

パワークエリの「クエリのマージ」・「マージ」コマンドの使用イメージ

Power Queryエディター上で別表の列データを転記したステップを登録できました。
「クエリのマージ」コマンドの場合、デフォルトのステップ名は「マージされたクエリ数」と「展開された{クエリ名}」(ステップが2つ登録され、クエリ内で同じステップ名が複数ある場合は連番が付加)。
「マージ」コマンドの場合、デフォルトのステップ名は「ソース」と「展開された{クエリ名}」になる。

後は、クエリ新規作成ステップのSTEP2で必要な他ステップを登録したら、STEP3を行いましょう。
「クエリのマージ」・「マージ」コマンドのステップの結果、意図せずレコードが順不同になる場合あり(必要に応じて並べ替え)。

これにより、クエリに記録した「クエリのマージ」・「マージ」コマンドのステップを自動化できます。
「クエリのマージ」・「マージ」コマンドのステップ登録後、転記対象のテーブル名や列名を変更すると、別表側のクエリがエラーになり、それと連動して「クエリのマージ」・「マージ」コマンドのステップもエラーになるため注意(別表側のクエリのエラー解消が必要)。

参考記事

クエリの新規作成ステップのSTEP2に役立つ各種コマンドの詳細は「パワークエリ(Power Query)の記事一覧」を、STEP3の手順はパワークエリの概要記事をご参照ください。


ステップ登録手順

「クエリのマージ」・「マージ」コマンドのステップ登録手順は同じ要領ですが、データ転記をクエリ内で行うか、新しいクエリで行うかで使い分けます。

なお、それぞれのステップ登録の前に、以下の準備が必要です。

  • クエリのマージ:転記したい列データがある別表のクエリを準備
  • マージ:上記クエリに加え、転記結果を反映するベースとなる表のクエリも準備

上記の対象の表がデータ整形不要な場合、クエリの新規作成ステップのSTEP1・3のみ登録しておく(詳細はパワークエリ概要記事を参照)。

「クエリのマージ」・「マージ」コマンドのステップ登録手順の詳細を順番に解説します。

「クエリのマージ」コマンド

クエリ内でデータ転記したい場合、「クエリのマージ」コマンドを使います。
ベースのクエリ(A)の1ステップとして、別表のクエリ(B)を転記するケース。

「クエリのマージ」コマンドを登録したい場合は、以下の手順となります。

「クエリのマージ」コマンドのステップ登録手順

  1. リボン「ホーム」タブをクリック
  2. 「クエリのマージ」をクリック
  3. 別表のクエリの主キー列を選択
    ※今回は「部署コード」列
  4. 別表のクエリを選択
    ※今回は「部署マスタ」クエリ
  5. 主キー列(手順③と同じ列)を選択
    ※今回は「部署コード」列
  6. 「OK」をクリック
  7. テーブル列(別表のクエリ名の列)のボタンをクリック
    ※今回は「部署マスタ」列
  8. 転記したい列を選択
    ※今回は「部署名」列のみ
  9. 「元の列名をプレフィックスとして使用します」のチェックをOFF
  10. 「OK」をクリック

手順⑧は、最低限主キーの列のチェックをOFFにする(ベースの表に元からあるため)。
手順⑨のチェックがONの場合、列名の頭に別表のクエリ名が付加されるが、原則不要。
※例:「部署マスタ」列の「部署名」列の場合、プレフィックスを使用した列名の「部署名.部署名」となる。

「マージ」コマンド

新しいクエリでデータ転記したい場合、「マージ」コマンドを使います。
新しいクエリ(C)で、ベースのクエリ(A)へ別表のクエリ(B)を転記するケース(クエリAに転記結果は反映されない)。

「マージ」コマンドを登録したい場合は、以下の手順となります。

「マージ」コマンドのステップ登録手順(1/2)

「マージ」コマンドのステップ登録手順(2/2)

  1. ワークシート上のリボン「データ」タブ
  2. 「データの取得」をクリック
  3. 「クエリの結合」をクリック
  4. 「マージ」をクリック
  5. ベースのクエリを選択
    ※今回は「社員マスタ」クエリ
  6. 別表のクエリの主キー列を選択
    ※今回は「部署コード」列
  7. 別表のクエリを選択
    ※今回は「部署マスタ」クエリ
  8. 主キー列(手順⑥と同じ列)を選択
    ※今回は「部署コード」列
  9. 「OK」をクリック
  10. テーブル列(別表のクエリ名の列)のボタンをクリック
    ※今回は「部署マスタ」列
  11. 転記したい列を選択
    ※今回は「部署名」列のみ
  12. 「元の列名をプレフィックスとして使用します」のチェックをOFF
  13. 「OK」をクリック

手順⑪は、最低限主キーの列のチェックをOFFにする(ベースの表に元からあるため)。
手順⑫のチェックがONの場合、列名の頭に別表のクエリ名が付加されるが、原則不要。
※例:「部署マスタ」列の「部署名」列の場合、プレフィックスを使用した列名の「部署名.部署名」となる。

【参考】結合の種類

「マージ」ダイアログの「結合の種類」は以下の6種類あります。

  1. 左外部(デフォルト)
  2. 右外部
  3. 完全外部
  4. 内部
  5. 左反
  6. 右反

本記事では、デフォルトの「左外部」のままでした。

これは、データ転記の際に指定する種類です。

他の種類を選択することで、2つの表の一致や差異のレコードを残すといったことも可能です。

参考記事

「マージ」ダイアログの「結合の種類」の詳細は、以下の記事をご参照ください。

【参考】あいまい一致オプション

「クエリのマージ」・「マージ」コマンドでの転記含む各種結合は、2つの表のデータが完全一致したもので実行されることが基本です。

ただし、「マージ」ダイアログの「あいまい一致を使用してマージを実行する」のチェックをONにすることで、あいまい一致に変更することも可能です。

あいまい一致の精度が不明のため、実務で積極的に使用するのはリスクがありますが、気になる方は調べてみてください。

参考記事

「マージ」ダイアログのあいまい一致オプションの詳細は、Microsoft公式サポートの記事をご参照ください。

【応用】別表のレコード数のカウントも可能

「クエリのマージ」・「マージ」コマンドでのステップ登録手順のうち、テーブル列(別表のクエリ名の列)のボタンをクリック(「クエリのマージ」は手順⑦、「マージ」は手順⑩)以降、「展開」のままで後工程を進めることが基本です。

ただし、「集計」へ変更することで、別表のレコード数をカウントすることも可能です。

一例として、転記とは逆に、ベースのクエリを「部署マスタ」、別表のクエリを「社員マスタ」にし、各部署コードに該当する社員マスタのレコード数をカウントする場合、以下の手順となります。

パワークエリの「クエリのマージ」・「マージ」コマンドのステップ登録手順(集計時)

  1. 「集計」を選択
  2. 集計したい列を選択
  3. 「元の列名をプレフィックスとして使用します」のチェックをOFF
  4. 「OK」をクリック

手順②は、いずれか1列を選択すればOK(空白セルがあってもカウントされ、全列同じ数値になるため)。

ちなみに、「集計」にした場合のステップ名は「集計対象:{クエリ名}」になります。

登録したステップの変更手順

「クエリのマージ」・「マージ」コマンドで登録したステップを後から変更する場合、変更したい内容が「マージ」ダイアログ(転記対象テーブル、主キー、結合の種類等)か、展開内容(展開する列、プレフィックス有無)か展開↔集計かで手順が異なります。

それぞれの手順を順番に解説していきましょう。

「マージ」ダイアログ(転記対象テーブル、主キー、結合の種類等)

「マージ」ダイアログの設定内容のみを後から変更したい場合、以下の手順で変更しましょう。

「クエリのマージ」・「マージ」コマンドのステップ変更手順(「マージ」ダイアログ)

  1. 「マージされたクエリ数」ステップ or「ソース」ステップの歯車マークをクリック
  2. 任意の箇所を修正
  3. 「OK」をクリック

手順①のステップ名は、「クエリのマージ」・「マージ」コマンドのデフォルトの名前(自身でリネームしている場合は別表記)。
手順①はステップ名をダブルクリックでもOK。
手順①で起動した「マージ」ダイアログは、ステップに設定した内容がセットされた状態。

展開内容(展開する列、プレフィックス有無)

展開内容(展開する列、プレフィックス有無)を後から変更したい場合、以下の手順で変更しましょう。

「クエリのマージ」・「マージ」コマンドのステップ変更手順(展開内容)

  1. 「展開された{クエリ名}」ステップの歯車マークをクリック
  2. 修正したい箇所を修正
  3. 「OK」をクリック

手順①のステップ名は、「クエリのマージ」・「マージ」コマンドのデフォルトの名前(自身でリネームしている場合は別表記)。
手順①はステップ名をダブルクリックでもOK。
手順①で起動した「{クエリ名}を展開」ダイアログは、ステップに設定した内容がセットされた状態。

展開↔集計

展開↔集計を後から変更したい場合、以下の手順で変更しましょう。

「クエリのマージ」・「マージ」コマンドのステップ変更手順(展開↔集計)

  1. 「展開された{クエリ名}」 or「集計対象:{クエリ名}」ステップを削除(「×」をクリック)
  2. 再度「クエリのマージ」・「マージ」コマンドのステップ登録手順を実行

手順①のステップ名は、「クエリのマージ」・「マージ」コマンドのデフォルトの名前(自身でリネームしている場合は別表記)。
手順②は、「クエリのマージ」コマンドならステップ登録手順⑦以降、「マージ」コマンドならステップ登録手順⑩以降を実行。

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

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

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

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

ブックを開いたら、「社員マスタ」クエリを編集(Power Queryエディター起動)し、次の手順を実施してください(今までの解説のまとめです)。
ブック起動時、「セキュリティの警告」メッセージが表示された場合は「コンテンツの有効化」をクリック。

  1. リボン「ホーム」タブをクリック
  2. 「クエリのマージ」をクリック
  3. 別表のクエリの主キー列を選択
    ※今回は「部署コード」列
  4. 別表のクエリを選択
    ※今回は「部署マスタ」クエリ
  5. 主キー列(手順③と同じ列)を選択
    ※今回は「部署コード」列
  6. 「OK」をクリック
  7. テーブル列(別表のクエリ名の列)のボタンをクリック
    ※今回は「部署マスタ」列
  8. 転記したい列を選択
    ※今回は「部署名」列のみ
  9. 「元の列名をプレフィックスとして使用します」のチェックをOFF
  10. 「OK」をクリック

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

さいごに

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

「クエリのマージ」・「マージ」コマンドを活用することで、主キーを基準に別表の列データの転記を自動化できます。

データ転記は、実務でも頻出の作業の1つのため、しっかり覚えておきましょう!

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


また、よりコアな情報を発信していくために「公式LINE」を開始しましたので、ご興味があれば以下バナーから友だち追加をお願いします!
特典として、Excelワークシート関数一覧(計22スライド)やExcelショートカットキー一覧(計25スライド)等をプレゼント!

森田貢士の公式LINEへの友だち追加告知用バナー

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

森田森田

「クエリのマージ」・「マージ」コマンドに慣れたら、複数の表の集約に役立つ他のコマンドもセットで覚えることをおすすめします。
具体的には、別表の行データを追加できる「クエリの追加」・「追加」コマンドです。
どちらも実務での利用頻度が高いので、ケースバイケースで使い分けできると効率的ですね。