販売と出荷の明細を結合すると合計が増えるのはなぜ?
販売と出荷の明細に同じ商品が何度も出てくる場合は、それぞれを先に集計します。店舗・週・商品ごとの合計表を結合し、元の数量を保つ手順を紹介します。
販売と出荷の明細をそのまま結合すると、同じ商品の販売数量や出荷数量が繰り返し表示され、合計が増えることがあります。店舗・週・商品ごとに両方の表を集計してから結合すれば、この重複を避けられます。
明細2行と2行を直接結ぶと
この架空の例では、店舗S1の第1週に商品P1を2回販売し、数量はそれぞれ2個と3個でした。出荷も2回あり、数量は4個と2個です。店舗・週・商品だけを条件に明細同士を結合すると、販売2行と出荷2行の全組み合わせで4行になります。同じ数量が2回ずつ現れるため、販売合計は5から10に、出荷合計は6から12に増えてしまいます。
SalesDetail
| Store | Week | Product | Quantity |
|---|---|---|---|
| S1 | 1 | P1 | 2 |
| S1 | 1 | P1 | 3 |
| S1 | 1 | P2 | 4 |
ShipDetail
| Store | Week | Product | Quantity |
|---|---|---|---|
| S1 | 1 | P1 | 4 |
| S1 | 1 | P1 | 2 |
| S1 | 1 | P2 | 8 |
SalesTotals
販売明細を店舗・週・商品ごとに合計すると、次の2行になります。これから作る中間結果です。
| Store | Week | Product | SalesTotal |
|---|---|---|---|
| S1 | 1 | P1 | 5 |
| S1 | 1 | P2 | 4 |
ShipTotals
出荷明細も同じ単位で合計します。P1の出荷合計は4+2=6です。
| Store | Week | Product | ShipTotal |
|---|---|---|---|
| S1 | 1 | P1 | 6 |
| S1 | 1 | P2 | 8 |
2つの集計表を個別に保存
- SalesDetailだけを読み込み、シートを選んで「結果を整理」の「集計」を追加します。「まとめる項目」でStore・Week・Productを1つずつ選びます。最初の集計を「合計」に変え、「項目」にQuantityを選び、「結果の項目名」にSalesTotalと入力します。「適用」後に結果をSalesTotalsとして保存します。
- 別の作業でShipDetailだけを読み込み、同じ3項目でまとめます。Quantityの「合計」を選び、「結果の項目名」にShipTotalと入力して「適用」します。結果をShipTotalsとして保存します。先に明細表同士を結ばないでください。
- 新しい作業でSalesTotalsを左、ShipTotalsを右に読み込み、Store・Week・Productをそれぞれ結びます。3条件すべてを一致させます。
- 「左のシートの全行を保持」を選び、ShipTotals側の重複するキー列は非表示にします。2つの合計列は残します。
- P1の値が5と6であることを確認します。各集計表は3項目の組合せごとに1行である必要があります。
元の合計と照合する
販売合計9、出荷合計14が保たれます。明細を結合した後の集計では、すでに繰り返された値を足すことになるため、この合計は保てません。
| Store | Week | Product | SalesTotal | ShipTotal |
|---|---|---|---|---|
| S1 | 1 | P1 | 5 | 6 |
| S1 | 1 | P2 | 4 | 8 |
集計単位を先に決める
この例では販売側を基準にするため、出荷側にしかない店舗・週・商品の組み合わせは結果に入りません。それも確認したい場合は両方の集計表の全行を残し、それぞれのキー列を表示してください。
集計すると個別の取引明細はなくなります。取引ごとに照合したい場合は、両方に共通する取引IDなどが必要です。また、保存した集計表は自動更新されないため、元データが変わったら集計からやり直します。
自分のファイルで始めましょう
JOIN SHEETを使ってみる ↗Excel・CSVの作業はPCでご利用ください。
新しいタブで開くため、作業中のデータは置き換わりません。
サンプルの検証日:
出典
Merging Two Tables in Power Query When expanding it returns more values (Reddit r/excel)
原文は店舗・週・商品で販売と出荷を結ぶと出荷数量の合計が増える問題を質問しています。 上の表と手順は、この質問を参考に別途作成した架空の例です。質問者の実データや製品の利用体験ではありません。