Excelで左結合(LEFT JOIN)をマスター!Power Query・VLOOKUP・INDEX/MATCHを使った3つの実践的手法
この記事では、2つのデータセットを使用します。1つ目のデータセットには「Product ID(製品ID)」と「Name(製品名)」が含まれており、2つ目のデータセットには「Product Name(製品名)」「Sales Person(営業担当者名)」「Sales(売上額)」が含まれています。これら2つのデータを左結合(Left Join)して、1つの表にまとめる方法を3つご紹介します。

方法1:Power Queryエディターを使って左結合を行う
Power Queryを使えば、複雑な数式を書かずに直感的な操作だけでテーブルを結合できます。まずは準備として、Excelでテーブルを作成しましょう。
ステップ1:Excelでテーブルを作成する
- セル範囲 B4:C9 を選択します。
- 挿入タブ → テーブル をクリックします。

- テーブルの作成ダイアログで、セル範囲が自動的に選択されていることを確認します。
- 先頭行をテーブルの見出しとして使用するにチェックを入れます。
- OK をクリックします。

- テーブルデザインタブを開き、テーブル名ボックスに「Product_List」と入力してテーブルに名前を付けます。

- 同じ手順で、セル範囲 E4:G9 にもう1つのテーブルを作成します。
- テーブルデザインタブで、テーブル名を「Sales」に変更します。

ステップ2:Power Queryエディターで接続を作成する
- Product_List テーブル内の任意のセルを選択します。
- データタブ → From Table/Range(テーブルまたは範囲から) をクリックします。

- テーブルがPower Queryエディターで開きます。
- 閉じて読み込む → 閉じて次に読み込む… を選択します。

- インポートダイアログで 接続の作成のみ を選択し、OK をクリックします。
- 同じ手順で Sales テーブルの接続も作成しておきます。

ステップ3:テーブルをマージ(結合)する
- データタブ → データの取得 → クエリの結合 → マージ をクリックします。

- マージダイアログで、1つ目のテーブルとして Product_List を選択し、キーとなる Product 列をクリックします。
- 2つ目のテーブルとして Sales を選択し、こちらも Product 列を選択します。
- 結合の種類で 左外部(すべてを含む) を選択します。
- OK をクリックします。

- Merge1 テーブルがPower Queryエディターで開きます。

- 下の画像に示されているアイコン(展開ボタン)をクリックします。
- Sales Person と Sales の両列にチェックを入れます。
- 元の列名をプレフィックスとして使用するのチェックは外します。
- OK をクリックします。

これで2つの列が正常に結合されました。
- 閉じて読み込む → 閉じて次に読み込む… を選択します。

- インポートダイアログで テーブル を選択します。
- 既存のワークシート を選び、参照ボックスに B11 と入力します。
- OK をクリックします。

これが最終的な出力結果です。元の製品リストを崩さずに、売上情報を結合できました。

方法2:VLOOKUP関数を使って左結合を行う
数式だけで完結させたい場合は、VLOOKUP関数が便利です。配列形式で返すことで、複数列を一度に取得できます。
手順
- セル範囲 B4:C9 を選択し、Ctrl + C でコピーします。

- セル B11 を選択し、Ctrl + V で貼り付けます。

- コピーしたデータセットに、「Sales Person」と「Sales」という見出しの列を追加します。

- セル D12 を選択し、次の数式を入力します。
=VLOOKUP(C12,$E$5:$G$9,{2,3},FALSE)

- Enter キーを押すと、「Sales Person」と「Sales」の両方の値が表示されます。
- フィルハンドルを下方向へドラッグして、数式をオートフィルします。

数式の解説:
- C12 … 検索値(lookup_value)。製品名を指定します。
- $E$5:$G$9 … 検索範囲(table_array)。Salesテーブル全体を絶対参照で指定します。
- {2,3} … 列番号(col_index_num)。2列目と3列目を同時に返すための配列定数です。
- FALSE … 検索方法(range_lookup)。完全一致を指定しています。
これが出力結果です。VLOOKUPひとつで左結合と同じ状態を実現できました。

方法3:INDEX関数とMATCH関数を組み合わせて左結合を行う
VLOOKUPよりも柔軟性が高いのが、INDEX関数とMATCH関数の組み合わせです。検索列が左端になくても対応できるのが大きなメリットです。

手順
- セル D5 に次の数式を入力します。
=INDEX($F$5:$H$9,MATCH($C5,$F$5:$F$9,0),3)
- Enter キーを押したら、フィルハンドルを下方向へドラッグして数式をコピーします。

数式の分解:
- MATCH($C5,$F$5:$F$9,0) … MATCH関数は検索値が範囲内の何番目にあるかを返します。ここでの出力は {1} です。
- INDEX($F$5:$H$9,MATCH($C5,$F$5:$F$9,0),3) … INDEX関数は指定した行・列位置のセル値を返します。数式は INDEX($F$5:$H$9,1,3) となり、出力は {560} です。
- これにより、1つ目のテーブルに Sales 列が追加されました。

練習セクション
実際に手を動かして練習してみましょう。以下の練習用ワークブックを活用すれば、記事の内容をそのまま再現しながら学習できます。

練習用ワークブックのダウンロード
こちらからワークブックをダウンロードしてください。
関連記事
- Excelで内部結合(Inner Join)を行う方法
- Excelで外部結合(Outer Join)を行う方法
- Excelで完全外部結合(Full Outer Join)を作成する方法
- Excelで交差結合(Cross Join)を作成する方法
<< Power Queryの使い方に戻る | Excelをもっと学ぶ
無料の高度なExcel演習問題(解答付き)を受け取ろう!
-
Microsoft Excelで「情報を回復しようとしています」と表示される場合の対処法
通常、「Microsoft Excelは情報を回復しようとしています」というメッセージは、ウイルス対策ソフトがパソコン上のウイルスを検出した際に表示されることがあります。しかし多くの場合、これは誤検出であり、本記事ではその解決方法をご紹介します。その他にもいくつかの原因が考えられますので、順番に見ていきましょう。 「Microsoft Excelは情報を回復しようとしています」エラーの修正方法 作業を始める前に、まずWindowsとOfficeを最新の状態にアップデートし、問題が解決するかどうかを確認することをおすすめします。また、特定のブック(ファイル)でのみ問題が発生しているかも併せて確認
-
Excelのフィルター機能を使いこなそう!基本から応用まで徹底解説
前回、Excelの集計関数を使って大量のデータを簡単にまとめる方法をご紹介しましたが、あの記事ではワークシート上のすべてのデータが対象でした。では、データの一部だけを抽出し、その抽出したデータだけを集計したい場合はどうすればよいのでしょうか? Excelでは、列にフィルターを設定することで、条件に一致しない行を自動的に非表示にできます。さらに、特殊な関数を使えば、フィルターで表示中のデータだけを対象に集計することも可能です。 本記事では、Excelでフィルターを作成する手順と、組み込み関数を使ってフィルター後のデータを集計する方法を、順を追って詳しく解説していきます。 Excelでシンプルなフ