結合先にない項目も、元の一覧から消さずに残すには
基準表を左に置いて左側の全行を保持し、未登録の補足情報を空欄として確認します。
基準表のすべての項目に補足情報があるとは限りません。JOIN SHEETの画面左側に基準表を置いて「左のシートの全行を保持」を選ぶと、情報のない項目も残ります。
ここでは基準表の項目を残すための設定を説明します。出典の質問にある、Power Queryで完全外部結合を使っても行が消える問題の原因診断は扱いません。
架空の入力と必要な出力
架空のMaster表にはT1、T2、T3があります。Details表にはT1、T2、T9があり、T2のRateは0です。Masterの3件をすべて残して、T3がDetailsにないことも確認できる一覧を作ります。
表中の∅は空欄を示す説明用の記号で、入力する文字ではありません。
Master
| ItemID | Name |
|---|---|
| T1 | Alpha |
| T2 | Beta |
| T3 | Gamma |
Details
| LookupID | Rate |
|---|---|
| T1 | 12 |
| T2 | 0 |
| T9 | 25 |
接続と条件の設定
- Masterを左、Detailsを右に置きます。結合の向きは読み込み順ではなく現在の画面配置で確認してください。
- ItemIDとLookupIDを結び、「左のシートの全行を保持」を選びます。
- 「結果のプレビュー」でItemIDとLookupIDの両方を表示して一致を確認します。補足側のキーを見ると、実際の0と未登録を区別できます。
- T3が消えた場合は線上の結合方法と結果フィルターを確認します。Rateが0以上という結果フィルターでは、空欄のT3が除かれることがあります。
結果で確認する点
結果は3行です。T2にはLookupIDのT2とRateの0があり、T3のLookupIDとRateは空欄です。DetailsにしかないT9は含まれません。
| ItemID | Name | LookupID | Rate |
|---|---|---|---|
| T1 | Alpha | T1 | 12 |
| T2 | Beta | T2 | 0 |
| T3 | Gamma | ∅ | ∅ |
適用範囲と注意点
Detailsの同じキーに複数の行があると、Masterの1行に何件も対応し、結果の行数が増えることがあります。Masterと同じ件数にしたい場合は、Detailsをキーごとに最大1行にしておきます。T3の空欄は0に置き換えず、未登録だと分かるように残してください。
自分のファイルで始めましょう
JOIN SHEETを使ってみる ↗Excel・CSVの作業はPCでご利用ください。
新しいタブで開くため、作業中のデータは置き換わりません。
サンプルの検証日:
出典
why is merge query deleting unmatched rows? (Reddit r/excel)
原文の質問者は、すでに完全外部結合(FullOuter)を使っているのに、結合結果を展開すると行が減ると説明しています。結合方法を変えるだけで解決したと確認できた事例ではありません。
上の表は、JOIN SHEETで基準表の全項目を残す方法を示す独立した架空例です。結果フィルターの注意点もこの例の説明であり、原文で行が減った原因を特定したものではありません。