同じIDが繰り返される表で明細の変更を比較する
主IDと明細IDが変更前後で変わらない場合は、両方を使って対応する行を特定します。行の順番に頼らず、比率などの変更を比較する方法です。
主IDの下に複数の明細がある場合は、主IDと明細IDの両方を結合キーにします。この方法は、両方のIDが変更前後で変わらず、その組み合わせで各明細を特定できる場合に使えます。変更される比率は結合キーに含めず、「値を比較」で前後の値を照合します。
架空の入力と必要な出力
G1は両方の表に2行ずつありますが、IDとLineを合わせると各行を区別できます。Afterで行の順番が変わっていても、G1・A同士、G1・B同士を対応させて比べます。
Before
| ID | Line | Share |
|---|---|---|
| G1 | A | 0.6 |
| G1 | B | 0.4 |
After
| ID | Line | Share |
|---|---|---|
| G1 | B | 0.3 |
| G1 | A | 0.7 |
接続と条件の設定
- Beforeを先に、Afterを後に読み込みます。ID同士を結び、「両方のシートの全行を保持」を選びます。
- Lineも結合条件に追加します。IDとLineの両方が一致する記録を結びます。
- Share同士をつなぎ、対象条件の「VS」で「値を比較」に切り替えます。
- 「結果のプレビュー」で変更された列と変更前後を確認します。Shareを3つ目の結合キーにすると、変更された記録が一致しなくなります。
AとB、それぞれの比率の変更を確認する
2行とも変更ありです。Aは0.6から0.7へ、Bは0.4から0.3へ変わりました。キーの重複が報告されたら、各表のIDとLineの組み合わせが固有か確認してください。
| 比較結果 | 変更された列 | 変更内容 | ID | Line | Share | After_ID | After_Line | After_Share |
|---|---|---|---|---|---|---|---|---|
| 変更あり | Share | Share: 0.6 → 0.7 | G1 | A | 0.6 | G1 | A | 0.7 |
| 変更あり | Share | Share: 0.4 → 0.3 | G1 | B | 0.4 | G1 | B | 0.3 |
適用範囲と注意点
Line自体が変わる場合は、IDとLineでは同じ明細の変更前後を結び付けられません。変更されない別の識別子や、前後の対応を示す情報が必要です。IDとLineの組み合わせが重複する場合も、各明細を特定できるよう元データを整理してください。行番号だけで対応させると、並べ替え後に別の記録を比べてしまうおそれがあります。
自分のファイルで始めましょう
JOIN SHEETを使ってみる ↗Excel・CSVの作業はPCでご利用ください。
新しいタブで開くため、作業中のデータは置き換わりません。
サンプルの検証日:
出典
Power Query - Compare two tables with same columns (Reddit r/excel)
原文では、比率やテキストに加えてID2も変更の対象です。回答では、変更前後のどの明細を対応させるのか、情報が足りない点が指摘されています。
この記事の架空例では、IDとLineは変わらないものとしてShareだけを比較します。原文にあるID2自体の変更を特定する問題は解決していません。質問者の実データやJOIN SHEETの利用体験を紹介したものではありません。