IDが空欄の行同士を同じ記録として結ばない
IDがどちらも空欄だからといって、同じ記録とは限りません。両方のシートの行を保持し、IDのない記録を別々に残して確認します。
IDが両方とも空欄でも、同じ記録だとは判断できません。JOIN SHEETの通常の結合では、実際の空欄(NULL)同士は一致しません。「両方のシートの全行を保持」を選ぶと、IDが分からない行を別々に残せます。
架空の入力と必要な出力
架空のL2とR2にはIDがありません。LocalRefとRemoteRefは元の行を見分ける参照番号で、結合キーではありません。
表中の∅は空欄を示す説明用の記号で、入力する文字ではありません。
Left
| ID | LocalRef |
|---|---|
| A1 | L1 |
| ∅ | L2 |
Right
| OtherID | RemoteRef |
|---|---|
| A1 | R1 |
| ∅ | R2 |
接続と条件の設定
- IDがないセルは空欄のままにし、両側に共通のUnknownなどを埋めません。
- IDとOtherIDを結び、両側の全行を保持します。「値を比較」ではなく通常のデータ結合です。
- A1の一致行と、L2・R2の別々の未一致行を確認します。
- 未識別の行を調べられるよう、LocalRefとRemoteRefも結果に残して保存します。
結果で確認する点
入力4行から結果3行になります。A1だけが1行に結ばれ、L2とR2は個別に残ります。空欄行を除く内部結合や、空欄同士を対応させる値の比較とは異なります。
| ID | LocalRef | OtherID | RemoteRef |
|---|---|---|---|
| A1 | L1 | A1 | R1 |
| ∅ | L2 | ∅ | ∅ |
| ∅ | ∅ | ∅ | R2 |
適用範囲と注意点
Unknownや∅という文字を入れると、空欄(NULL)ではなく値のあるセルになります。両側に同じ文字を入れれば、一致して結び付く場合があります。抜けているIDは元の記録を調べて補い、行の順番や似た名前だけで同じものと判断しないでください。
自分のファイルで始めましょう
JOIN SHEETを使ってみる ↗Excel・CSVの作業はPCでご利用ください。
新しいタブで開くため、作業中のデータは置き換わりません。
サンプルの検証日:
出典
Null values get matched in Full Outer Join query. Can we stop this? (Excel Help Forum)
原文は完全外部結合で空欄キー同士を結ばず、それぞれ未一致行として残す方法を質問しています。 上の表と手順は、この質問を参考に別途作成した架空の例です。質問者の実データや製品の利用体験ではありません。