導入
請求管理表で月次の請求合計を出して経理に提出したら、「先月分が二重になっている」と指摘が入った。確認すると、同じ案件IDの行が2行入っていて、両方とも金額が計上されていた。CSV取込時に2回貼り付けてしまったのが原因――こんな場面はありませんか。
これは取込ミスではなく、重複キーによる二重計上を検知する仕組みがないことが原因です。本記事では、重複キーを決めて二重計上候補を常時可視化する手順をまとめます。
この記事で解決すること
| 項目 | 内容 |
|---|---|
| 解決する課題 | 同じ行や同じ案件を二重に集計する |
| 主な原因 | 重複キーや集計対象条件がない |
| 解決方法 | 重複キーで二重計上候補を確認する |
| 対象業務 | 売上管理・請求管理・案件管理 |
| 対象人数 | 3〜30人 |
| 難易度 | ★☆☆☆☆ |
| 作業時間 | 20分 |
| 用意するもの | 対象のExcelファイル/編集権限 |
| 効果 | 二重集計を防ぎやすい |
| 向かないケース | 重複を許容する表 |
「重複候補件数」を1セル表示するだけで、CSV取込ミスや手作業の二重入力を即検知できます。月次の数字の信頼性が大きく上がります。
なぜその管理表はうまくいかないのか
- 重複判定のキーが決まっていない(案件IDなのか、案件ID+日付なのか)
- 同じ案件IDの行が2回入っても気づかない
- CSV取込時に「追記」しているつもりが「重複」になる
- 行追加時に既存IDとの重複チェックがない
- 二重計上が見つかったときに、どちらを残すか判断できない
担当者の入力ミスではなく、重複を検知する仕組みが管理表側にないことが原因です。見直しは、重複キーを決めて検知関数を入れるところから始めます。
完成イメージ
直す前 — 重複に気づけない:
| 案件ID | 顧客名 | 金額 |
|---|---|---|
| K-001 | 山田商事 | 120,000 |
| K-002 | 鈴木物産 | 80,000 |
| K-001 | 山田商事 | 120,000 ← 二重 |
ピボットで案件IDの合計を出すと K-001 が二重に加算される。
直した後 — 重複検知列+件数表示:
| 案件ID | 顧客名 | 金額 | 重複チェック |
|---|---|---|---|
| K-001 | 山田商事 | 120,000 | 2(重複) |
| K-002 | 鈴木物産 | 80,000 | 1 |
| K-001 | 山田商事 | 120,000 | 2(重複) |
シート上部に「重複候補件数」を表示し、≠0なら警告色。
改善手順
ステップ1. 重複キーを決める
何を持って「重複」とするかを確定します。
操作: 別シート「重複キー定義」を作り、A列に重複キーの候補、B列に判断理由、C列に採用/不採用を記入する。
記入例:
| キー候補 | 判断理由 | 採用 |
|---|---|---|
| 案件ID単独 | 案件IDは一意採番している前提 | ◎ |
| 案件ID+計上月 | 案件IDが同じでも月が違えば別行(請求月ごとに登録する業務の場合) | △ |
| 案件ID+顧客ID | 念のため二重チェック用 | △ |
| 顧客名+金額+日付 | 案件IDがない表用 | ✗(精度低) |
業務に合わせてキーを1つ決める。複合キーの場合は ConcatenateやTEXTで連結したヘルパー列を使う。
ステップ2. 重複検知の関数を入れる
各行に重複件数を表示する列を追加します。
操作: 表の右端に「重複チェック」列を追加し、 =COUNTIF(案件ID列, 案件ID) を入れる。複合キーの場合は =COUNTIFS(案件ID列, 案件ID, 計上月列, 計上月) のように使う。
記入例:
| 重複チェック列の数式 | 結果 |
|---|---|
| =COUNTIF(A:A, A2) | 1 = ユニーク、2以上 = 重複 |
| =COUNTIFS(A:A, A2, D:D, D2) | 案件ID+計上月の組み合わせで判定 |
✗悪い例: 重複検知列なしで運用 → 二重計上が紛れる ◎良い例: 1行ごとに重複件数が見え、2以上は色で警告
ステップ3. 重複候補件数を常時表示する
シート全体での重複件数を1セルで表示します。
操作: シート上部に重複サマリセルを置く。=COUNTIF(重複チェック列, ">1") で重複候補件数を出す。条件付き書式で「≠0なら赤」を設定。
記入例:
| セル | 内容 | 数式 |
|---|---|---|
| A1 | 全件数 | =COUNTA(案件ID列)-1 |
| A2 | 重複候補件数 | =COUNTIF(重複チェック列, “>1”) |
| A3 | 判定 | =IF(A2=0,”◎”,CONCATENATE(“✗ 重複”,A2,”件”)) |
A2が0でなければ即座に分かる。
ステップ4. 重複が見つかったときの対応ルールを決める
重複候補が出たときの対応を運用ルール化します。
操作: 別シート「重複対応フロー」を作り、A列に状況、B列に対応を記入する。
記入例:
| 状況 | 対応 |
|---|---|
| 重複候補0件 | 集計続行 |
| 重複候補1〜数件 | フィルタで重複行を抽出→どちらを残すか判断(日時の新しい方 or 入力者に確認) |
| 重複候補10件以上 | 取込ミスを疑う、最近のCSV取込を巻き戻して再取込 |
| 重複が常態化 | 入力ルールの見直し、重複キーの再検討 |
重複を見つけたら、片方の行を削除する前に必ずバックアップシートを残す。誤削除リスクを避けるため。
ステップ5. 取込前にも重複チェックを行う
CSV取込時の重複混入を防ぐため、取込前のチェックを追加します。
操作: 取込前チェックシートに「重複検知」セクションを追加。CSV側のデータと既存元データを連結したシートに、重複検知関数を入れて取込前に確認する。
記入例:
| 取込前チェック項目 | 数式 | 判定 |
|---|---|---|
| CSV内の重複 | =COUNTIF(CSV案件ID列, CSV案件ID) | 全行で1なら ◎ |
| CSVと既存の重複 | =COUNTIF(既存案件ID列, CSV案件ID) | 全行で0なら ◎ |
CSVと既存に重複があれば、CSVを取り込まずに出力側に再出力依頼するか、既存行を削除してから取込する。
実務での注意点
- 重複を許容する表(一覧確認用、参照ログなど)には重複検知は不要です。
- COUNTIFは大文字小文字を区別しません。案件IDの形式が「k-001」「K-001」混在で判定が緩い場合があります。
=COUNTIFの代わりに=SUMPRODUCT(--(EXACT(A:A,A2)))で完全一致判定。 - 重複検知列の参照範囲は列全体(A:A)にすると行追加に追従しますが、計算が重くなります。Excelテーブル化(Ctrl+T)で動的範囲化が推奨。
- 重複行を削除する際は、必ずどちらを残すかのルール(最新日時優先、ID昇順優先など)を決めてから一括削除します。
- ピボットで重複案件の合計を見ると、二重計上が顕在化します。
COUNT > 1の案件は手動でも確認の対象になります。
まとめ
同じ案件が二重に集計される原因は、重複キーによる検知の仕組みが管理表側にないことです。重複キーを決めてCOUNTIFで各行に重複件数を表示し、重複候補件数を常時可視化すれば、CSV取込ミスや手作業の二重入力を即検知できます。
次にやることは、対象ファイルで「重複の基準となるキー(案件IDなど)」を1つ決めることです。検知関数の設定はその後でも構いません。あわせて、件数の突合は集計前後の件数を比較する手順、合計の突合は元データ合計と突合する手順も参考になります。

