IDが空欄の行同士を同じ記録として結ばない

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

接続と条件の設定

  1. IDがないセルは空欄のままにし、両側に共通のUnknownなどを埋めません。
  2. IDとOtherIDを結び、両側の全行を保持します。「値を比較」ではなく通常のデータ結合です。
  3. A1の一致行と、L2・R2の別々の未一致行を確認します。
  4. 未識別の行を調べられるよう、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)

原文は完全外部結合で空欄キー同士を結ばず、それぞれ未一致行として残す方法を質問しています。 上の表と手順は、この質問を参考に別途作成した架空の例です。質問者の実データや製品の利用体験ではありません。