今回はデータの結合に関して紹介します!
データ同士をくっつけたり
他のデータを引っ張ってきたりとか
Excel作業をしていると
データを複数扱たい時があると思います!
そんな中でもデータを
「横」に結合させる方法を紹介します!
Excel関数で言うところの
VLOOKUP関数やMATCH関数を使った処理に近いですね!
別ファイルからの転記などに有効です!
マージ(横に結合)の種類
かじむー
左外部結合
まず左ってなんやねん!と思いますよね。
これはデータを結合させるときに
データを並べる位置として
左に置くか、右に置くかという意味合いです!
上の図で説明します!
●左:123というNo列に、ABCという英語列のデータ
●右:123というNo列に、あいう という日本語列のデータ
ここで左の表に対して、右の表を
「Noが一致するもの同士を結合」させてみます。
ちなみにNoが一致するのは 2 と 4 だけです。
左外部という方法で結合させると
このイコールにある緑の表の状態になります。
Noが2と4については日本語列に
「あ」と「い」が結合してますね。
それ以外は左と右で一致するNoが無いので
日本語列には何も結合されないままになっています。
ここでのポイントは
左側のデータが全て残っている事です。
右の表に一致するデータが無くても
必ず左側のデータが必ず残る仕組みです。
内部結合
先程と同じ表が左と右に在ります。
これも先ほどと同じ様に
「Noが一致するもの同士を結合」させてみます。
内部という方法で結合させると
このイコールにある緑の表の状態になります。
確かにNoが一致する 2 と 4 には
日本語列に「あ」「い」が結合してますが
左外部と違って
右の表に一致するものが無ければ
左のデータも消えてしまいます。
つまり一致するものだけが残る仕組みです。
データをマージ(横に結合)させる
かじむー
今回扱うファイルについて
今回扱うファイルは大きく2種類
①賞味期限ファイル1つ(赤枠)
┗ 食品に関する日別の売上データ
┗ 1月~9月を1つのファイルで管理
②売り上げファイル9つ(青枠)
┗ 食品に関する日別の賞味期限データ
┗ 1月~9月を9つのファイルに分けて管理
これらがTESTフォルダに格納されております。
そして今回やりたい事は
1月~9月の売上ファイルの「売上」列の右に
賞味期限ファイルから「賞味期限」を持ってきたい!
Excel関数なら
VLOOKUP関数やXLOOKUP関数、
MATCH関数などを使うかもしれませんが・・・
別ファイルからのデータ取得なら
PowerQueryがおすすめです!
それでは「マージ」を使ってやってみましょう!
左外部結合でマージしてみた!
まずは1月~9月の売上ファイルを
縦に結合させて1つにまとめます!
※こちらの前回の記事を参考下さい
ではPowerQueryで
売上げ・賞味期限ファイルへ接続が済んだら
「クエリのマージ」からマージを行いましょう!
「クエリのマージ」の中にある
「クエリのマージ」はステップの続きにマージした状態を作ります。
そして「クエリのマージ」の中にある
「新規としてクエリをマージ」は
新しいクエリとしてマージした状態を作ります。
では前者の「クエリのマージ」でマージさせてみます!
「上」にあるデータが図で説明した「左」
「下」にあるデータが図で説明した「右」
にあたります。
ここでまず2つのデータを紐づける
キーとなる列を選ぶ必要があります!
キーというのはその列を特定できるものでなけれなりません。
いま「日付」列と「販売日」列を選択しています(緑色)が
販売日の赤枠を見ると既に「2022/01/05」が2行存在します。
これを一意じゃないと言います!
なので販売日だけではキーとしては不十分です。
ここでは
売り上げファイル:「日付」「商品名」
賞味期限ファイル:「販売日」「商品名」
をキー列として選定します。
なぜなら両ファイルこの2列の組み合わせで
1行を特定することができるからです!
それでは「結合の種類」を「左外部」にして「OK」
「売上」列の右に賞味期限ファイルが結合されます。
展開したい列に「賞味期限」を選ぶと・・・
はい!賞味期限を持ってくることが出来ました!
キーが一致しなかった部分には
何もないという「null」値が入っております!
そしてその左側(売上ファイル)のデータは
消えずにそのまま残っていますね!
内部結合でマージしてみた!
次は「結合の種類」を「内部」にしてマージしてみます!
いまデータは186行存在するのですが・・・
93行だけが残りました!
実は左外部の時に「null」と出ていた行が
消えてしまったのです!
内部結合の特徴どおり
キーが一致するものだけが残ったという事になります!
何を残したいのか?何を消したいのか?
を整理して 是非使い分けてみて下さい!
かじむー