CSVの売上集計が合わないときに
重複行を消す前に確認したいこと
同じ注文番号でも、消してよい行とは限りません。
架空の5行で、明細の見分け方を確認します。
毎月の売上CSVをExcelで集計したところ、管理画面の合計と合わない。注文番号を調べると、同じ番号が何度も出てくる。
そこで注文番号だけを基準に行を削除すると、必要な売上まで消してしまうことがあります。まず確認したいのは、CSVの1行が「注文1件」なのか、「注文に含まれる商品明細1件」なのかという点です。
同じ注文番号でも、別の商品なら必要な行
次は説明用の架空CSVです。1行は商品明細1件を表します。金額は数量×単価とし、税・送料・値引き・返品は扱いません。
注文番号,明細ID,商品名,数量,単価
A001,L001,ノート,2,1000
A001,L002,ペンセット,1,1500
A002,L003,ファイルケース,3,800
A002,L003,ファイルケース,3,800
A003,L004,卓上トレー,1,1800
注文番号「A001」は2行ありますが、ノートとペンセットという別の商品です。明細IDも異なるため、この例では両方を売上に含めます。
一方、「A002」の2行は明細IDも内容も同じです。ここでは元の注文記録と取り込み履歴を確認し、同じ明細を二重に取り込んだと判明したものとします。残すのは1行です。
実務では、同じ値が並んでいるだけで二重取り込みと断定せず、出力元の明細IDの定義や元の記録を確認してください。
注文番号だけで消すと、合計はいくらになる?
5行をそのまま合計すると、10,100円です。注文番号だけを重複判定に使い、上から最初の1行を残すと、A001のペンセットとA002の二重取り込み行が消えます。
| 集計方法 | 合計 | この例で起きること |
|---|---|---|
| 5行をそのまま集計 | 10,100円 | 同じ明細の2,400円を二重計上 |
| 注文番号ごとに最初の1行だけ残す | 6,200円 | 必要なペンセット1,500円も除外 |
| 二重取り込みの1行だけ除外 | 7,700円 | 別商品の明細を残して集計 |
重複行を減らせても、集計が正しくなるとは限りません。判断の基準は「番号が同じか」だけでなく、「何を1件として数えるデータか」です。
削除する前に確認したいこと
元のCSVは残し、確認用のコピーで作業します。そのうえで、次の順に確認すると判断の理由を残せます。
1. 1行の単位を確認する
注文単位、商品明細単位、入金単位など、出力元の仕様を確認します。
2. 明細を識別する項目を確認する
明細IDが全体で一意なのか、注文番号と組み合わせる必要があるのかを確認します。商品名だけでは、同じ商品の正当な複数明細を区別できない場合があります。
3. 重複候補を元の記録と照合する
同じファイルを再取り込みしていないか、出力期間が重なっていないか、訂正データではないかを調べます。
4. 除外した行数と金額を記録する
この例なら「二重取り込み1行、2,400円を除外」と記録します。削除後の合計だけでなく、何を除いたかも確認できる状態にします。
それでも合わない場合は、比較している期間や日付の基準、税込・税抜、送料・値引き・返品の扱いもそろっているか確認します。
このCSVデモで試せること
公開中のデモでは、架空データを使って、不備の確認から集計結果の出力まで試せます。ただし、この記事の判断例と、デモの重複処理は異なります。
デモが受け付けるのは、次の順序の固定6列です。
売上ID,売上日,顧客名,商品名,数量,単価
デモでは、前後の空白を取り除いた「売上ID」が同じ行を重複として扱います。重複したうち1行を自動で残すのではなく、該当する行をすべて「要確認」として集計から除外します。
注文番号と明細IDを組み合わせて判断する機能や、元の注文記録と照合する機能はありません。この記事の5列CSVも、そのままでは読み込めません。
デモでできるのは、重複ID・未入力・日付や数値の不備を表示し、不備のない行の数量×単価を月別・商品別に集計することです。集計結果と不備一覧をCSVで出力できます。元のCSVから重複行を自動削除する機能ではありません。
まずは内蔵の架空サンプルで、どの行が集計から外れるかを確認してみてください。顧客情報や機密情報は入力しないでください。
自社のCSVに合った判断ルールが必要なら
「注文番号と明細番号を組み合わせたい」「訂正前後のデータを区別したい」など、必要なルールは出力元や運用によって変わります。
個別ルールを組み込む開発については、Webシステム開発のサービス詳細をご覧ください。何を1件として扱うか、どの行を確認対象にするか、担当者が判断した結果をどう残すかから整理できます。