Excelでの消耗に、終止符を。 QOL向上とDX化の実現は、あなたのExcelスキルの向上から。

【パワークエリ】「クエリのマージ」の「結合の種類」とは?全6パターンの意味と使い分け

【パワークエリ】「クエリのマージ」の「結合の種類」とは?全6パターンの意味と使い分け
Aさん
Aさん
商品マスタを年度ごとにバージョン管理していますが、削除あるいは追加された商品を把握したいです。
パワークエリでこういった作業も自動化できますか?
森田
森田
はい、できますよ!
その場合、「クエリのマージ」コマンドの「結合の種類」を設定すれば、2つの表の一致や差異のレコードを特定できますよ!
では、詳細を解説していきますね。
目次[閉じる]

はじめに

この記事はパワークエリの「クエリのマージ」コマンドの使い方を把握していることが前提です。

「クエリのマージ」コマンドの詳細は、以下の記事をご参照ください。

「結合の種類」とは、Power Queryエディター上で2つの表のマージ方法を指定する設定項目

「結合の種類」とは、「クエリのマージ」コマンドで起動される「マージ」ダイアログ上の設定項目の1つです。
 以降、ワークシート上の「マージ」コマンドも同様。

通常、「クエリのマージ」コマンドは、Power Queryエディターでデータ転記を行うことが一般的ですが、この「結合の種類」の設定を変更することで、2つの表の一致や差異のレコードを特定することも可能です。

「マージ」ダイアログの「結合の種類」の使いどころ

なお、この場合もデータ転記と同様、主キーを基準に一致しているか否かを判定することが基本です。
 主キーとは、そのレコードが一意(重複していない)であることを示すためのコードや番号のこと(代表例として、社員番号や商品コードなど)。

この「マージ」ダイアログの「結合の種類」ボックスで設定できる内容は、以下の6パターンです。

「マージ」ダイアログの「結合の種類」の6パターン
  1. 左外部(デフォルト)
  2. 右外部
  3. 完全外部
  4. 内部
  5. 左反
  6. 右反

「左」や「右」といった表現が多いですが、「左」は「マージ」ダイアログの上側に設定したクエリ、「右」は「マージ」ダイアログの下側に設定したクエリをそれぞれ示します。

個人的には、「右」が付くものは指定するクエリを間違えてしまう恐れがあるため、パターン②⑥は覚えなくて良いと思います。

「結合の種類」各パターンの意味と使い分け

「マージ」ダイアログの「結合の種類」ボックスの6パターンそれぞれの意味と使い分けを順番に解説します。

解説に際し、「マージ」ダイアログの上側のクエリを「表A」、下側のクエリを「表B」とします。

本記事の前提

本記事は、主キーで管理されたマスタ同士の比較を前提に解説しています。

主キー以外の列を基準としたマージとも可能ですが、キーの重複状況等によってはマージ結果が異なる場合があるため、ご注意ください。

【パターン①】左外部

パターン①の「左外部」は、デフォルトのパターンとなり、表Aのレコードに対し、主キーを基準に表Bから任意の列をマージします。

「マージ」ダイアログの「結合の種類」の使用イメージ(左外部)

表Aのすべてのレコードは残りますが、表B側は表Aに存在しない主キーのレコードは残りません。

また、表Aの主キーに一致する表B側のデータがない列は「null」になります。

パターン①はデータ転記をしたい場合に使います。

【パターン②】右外部

パターン②の「右外部」は、表Bのレコードに対し、主キーを基準に表Aから任意の列をマージします。

「マージ」ダイアログの「結合の種類」の使用イメージ(右外部)

こちらもデータ転記をしたい場合に使いますが、「マージ」ダイアログの上下が逆のパターンになります。

あえてパターン①と使い分けを行う理由はないので、実務でパターン②は使わないで良いと思います。

「マージ」ダイアログで上下のクエリの指定に気を付ければ充分でしょう。

【パターン③】完全外部

パターン③の「完全外部」は、主キーを基準に表A・Bのすべてのレコードを1つの表へマージします。
 一方の表にしかデータがない列は「null」となる。

「マージ」ダイアログの「結合の種類」の使用イメージ(完全外部)

表Bの列は通常のデータ転記(パターン①)と同様に、選択した列のみが展開されます。

マージする2つの表が同じ列構成の場合、列の展開時にプレフィックスのチェックをONにし、表Bのものを区別できるようにすると良いですね。
 表Bのクエリ名が「商品マスタ_2022」の場合、列名の頭に「商品マスタ_2022.」が付加。

2つの表の不一致(「null」があるレコード)を特定できる以外にも、2つの表で共通する列(「単価」等)のデータの相違も確認できます。

パターン③は2つの表の全レコードを残し、一致と差異をまとめて整理したい場合に使いましょう。

ちなみに、うまく「条件列」コマンドを活用し、一致・差異のフラグ立てを行い、そのフラグをフィルターで任意のレコードを絞込むと便利です。
 表A・Bの主キー列のいずれか一方が「null」ならTRUE等。

「条件列」コマンド・フィルターの詳細は、以下の記事をご参照ください。
 【パワークエリ】表へ条件分岐の結果となる列を自動で追加できる「条件列」の使い方
 【パワークエリ】「フィルター」の使い方|条件に一致したレコード(行)以外を削除する方法【動画あり】

【パターン④】内部

パターン④の「内部」は、表A・Bで主キーを基準に一致するレコードのみを1つの表に残します。

「マージ」ダイアログの「結合の種類」の使用イメージ(内部)

パターン③と違い、表A・Bの一方にしか存在しないレコードはマージ対象外になるため、「null」の部分は発生しません(もともと「null」のデータ除く)。

パターン④は2つの表の一致レコードだけ必要な場合に使いましょう。

2つの表で共通する列(「単価」等)のデータの相違を中心に確認したい場合に便利です。

【パターン⑤】左反

パターン⑤の「左反」は、主キーを基準に表Aのみ存在するレコードを1つの表に残します。

マージ」ダイアログの「結合の種類」の使用イメージ(左反)

当然ながら、表B側の列はすべて「null」となります。

そのため、表B側の列はわざわざ展開せず、表Bのテーブル列自体を削除しても問題ないですね。

パターン⑤は一方の表の差異レコードだけ必要な場合に使いましょう。

【パターン⑥】右反

パターン⑥の「右反」は、主キーを基準に表Bのみ存在するレコードを1つの表に残します。

「マージ」ダイアログの「結合の種類」の使用イメージ(右反)

パターン⑤の「マージ」ダイアログの上下が逆のパターンとなり、表A側の列はすべて「null」となります。

あえてパターン⑤と使い分けを行う理由はないので、実務でパターン⑥は使わないで良いと思います。

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

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

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

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

ブックを開いたら、「マージ」ダイアログの「結合の種類」の6パターンを実際に試してみてください。

「クエリのマージ」コマンドの使用手順は、以下の記事をご参照ください。
 【パワークエリ】「クエリのマージ」の使い方|別表の列データを転記する方法【動画あり】

さいごに

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

「マージ」ダイアログの「結合の種類」ボックスを活用することで、主キーを基準に2つの表の一致・差異レコードを特定できます。

特に、同じ列構成でバージョン管理しているマスタ等のメンテナンスで役立ちますので、実務で機会のある方は活用してみてください。

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

created by Rinker
¥2,970 (2026/11/08 08:15:54時点 楽天市場調べ-詳細)

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

森田
森田
「クエリのマージ」コマンドは、マウス操作中心で設定できる上に、ワークシート上のVLOOKUP等よりも多機能で便利です。
他にも、別表の行データを追加できる「クエリの追加」・「追加」コマンドも併用すると、複数の表を自由自在に集約できますね。
表の集約作業は、業界や業種を問わず実務での頻度が高いので、パワークエリをうまく活用していきましょう!

この記事をシェアする

記事一覧へ戻る

コメント Comments

コメント一覧

コメントはありません。

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックURL

https://excel-master.net/data-utilization/data-shaping/data-transcription/power-query-query-merge-join-kind/trackback/