【中級編】【PowerQuery】VLOOKUP不要!クエリのマージを使ってデータを「横」に結合させよう!

今回はデータの結合に関して紹介します!

データ同士をくっつけたり
他のデータを引っ張ってきたりとか
Excel作業をしていると
データ複数扱たい時があると思います!

そんな中でもデータを
」に結合させる方法を紹介します!

Excel関数で言うところの
VLOOKUP関数MATCH関数を使った処理に近いですね!

別ファイルからの転記などに有効です!

動画で見たい方はコチラ

マージ(横に結合)の種類

かじむー

ではまず良く使うであろうマージを2種類の紹介します!

左外部結合

まずってなんやねんと思いますよね。

これはデータを結合させるときに
データを並べる位置として
左に置くか、右に置くかという意味合いです!

上の図で説明します!

:123というNo列に、ABCという英語列のデータ
:123というNo列に、あいう という日本語列のデータ

ここで左の表に対して、右の表を
Noが一致するもの同士を結合」させてみます。
ちなみにNoが一致するのは 2 と 4 だけです。

左外部という方法で結合させると
このイコールにある緑の表の状態になります。

Noが2と4については日本語列に
「あ」と「い」が結合してますね。
それ以外は左と右で一致するNoが無いので
日本語列には何も結合されないままになっています

ここでのポイントは
左側のデータが全て残っている事です。
右の表に一致するデータが無くても
必ず左側のデータが必ず残る仕組みです。

内部結合

先程と同じ表が左と右に在ります。
これも先ほどと同じ様に
Noが一致するもの同士を結合」させてみます。

内部という方法で結合させると
このイコールにある緑の表の状態になります。

確かにNoが一致する 2 と 4 には
日本語列に「あ」「い」が結合してますが
左外部と違って
右の表に一致するものが無ければ
左のデータも消えてしまいます

つまり一致するものだけが残る仕組みです。

データをマージ(横に結合)させる

かじむー

それでは2つを使い分けてマージしてみよう!

今回扱うファイルについて

今回扱うファイルは大きく2種類

賞味期限ファイル1つ(赤枠)
 ┗ 食品に関する日別の売上データ
 ┗ 1月~9月を1つのファイルで管理
売り上げファイル9つ(青枠)
 ┗ 食品に関する日別の賞味期限データ
 ┗ 1月~9月を9つのファイルに分けて管理

これらがTESTフォルダに格納されております。

そして今回やりたい事は

1月~9月の売上ファイルの「売上」列の右
賞味期限ファイルから「賞味期限」を持ってきたい!

Excel関数なら
VLOOKUP関数やXLOOKUP関数、
MATCH関数などを使うかもしれませんが・・・

別ファイルからのデータ取得なら
PowerQueryがおすすめです!

それでは「マージ」を使ってやってみましょう!

左外部結合でマージしてみた!

まずは1月~9月の売上ファイル
縦に結合させて1つにまとめます

【初級編】【PowerQuery】クエリの追加を使ってデータを「縦」に結合させよう!

※こちらの前回の記事を参考下さい

ではPowerQueryで
売上げ・賞味期限ファイルへ接続が済んだら

「クエリのマージ」からマージを行いましょう!

「クエリのマージ」の中にある
クエリのマージ」はステップの続きにマージした状態を作ります。

そして「クエリのマージ」の中にある
新規としてクエリをマージ」は
新しいクエリとしてマージした状態を作ります。

では前者の「クエリのマージ」でマージさせてみます!

」にあるデータが図で説明した「
」にあるデータが図で説明した「
にあたります。

ここでまず2つのデータを紐づける
キーとなる列を選ぶ必要があります!

キーというのはその列を特定できるものでなけれなりません。

いま「日付」列と「販売日」列を選択しています(緑色)が
販売日の赤枠を見ると既に「2022/01/05」が2行存在します。

これを一意じゃないと言います!
なので販売日だけではキーとしては不十分です。

ここでは
売り上げファイル:「日付」「商品名
賞味期限ファイル:「販売日」「商品名
をキー列として選定します。

なぜなら両ファイルこの2列の組み合わせで
1行を特定することができるからです!

それでは「結合の種類」を「左外部」にして「OK」

「売上」列の右に賞味期限ファイルが結合されます。
展開したい列に「賞味期限」を選ぶと・・・

はい!賞味期限を持ってくることが出来ました!

キーが一致しなかった部分には
何もないという「null」値が入っております!

そしてその左側(売上ファイル)のデータは
消えずにそのまま残っていますね!

内部結合でマージしてみた!

次は「結合の種類」を「内部」にしてマージしてみます!
いまデータは186行存在するのですが・・・

93行だけが残りました!

実は左外部の時に「null」と出ていた行が
消えてしまったのです!

内部結合の特徴どおり
キーが一致するものだけが残ったという事になります!

何を残したいのか?何を消したいのか?
を整理して 是非使い分けてみて下さい!

かじむー

だけどマージは注意しないと想定外のものが出来ちゃうよ!
1 2