同じ請求書を2回払ってしまった、同じ仕訳を2回入力していた、顧客リストに同一人物が2行ある――経理の事故で最も多いのが重複(二重計上・二重払い)です。目視のチェックでは限界がありますが、ExcelのCOUNTIF関数を使えば、重複は数式1本で機械的に検出できます。
この記事では、COUNTIF・COUNTIFSによる重複検出の実装パターンと、条件付き書式でのリアルタイム警告、二重払い防止の仕組みへの組み込み方を解説します。
基礎知識:COUNTIFで重複が見つかる理屈
=COUNTIF(範囲,検索値) →範囲の中に検索値が何個あるかを返す
各行で「自分と同じ値が全体に何個あるか」を数え、2以上なら重複――これが基本原理です。請求書番号の列(B列)なら次のとおりです。
=IF(COUNTIF($B$2:$B$1000,B2)>=2,"重複!","")
実装パターン集
パターン1:条件付き書式でリアルタイム警告
チェック列を作らず、入力した瞬間にセルを赤くする方法です。対象範囲を選択→条件付き書式→「新しいルール」→「数式を使用」で次を設定します。
=COUNTIF($B$2:$B$1000,B2)>=2
入力と同時に既存行と新規行の両方が赤くなるため、「入力ミスをその場で気づかせる」予防型のチェックになります(条件付き書式の活用レシピは関連記事:No.42 条件付き書式のチェック活用)。
パターン2:COUNTIFSで「組み合わせの重複」を見る
実務の重複は単一列では捕まりません。「同じ取引先×同じ金額×同じ月」の支払が2件あれば二重払いの疑いです。
=IF(COUNTIFS(取引先範囲,C2,金額範囲,D2,月範囲,E2)>=2,"二重払い疑い","")
この「複数条件の組み合わせ重複」が、支払管理表(関連記事:No.132 支払管理表の作り方)に組み込まれている二重払い検知の正体です。請求書番号がない取引でも網にかかります。
パターン3:2回目以降だけに印を付ける
重複の全行に印が付くと「どちらを消すか」で迷います。範囲の先頭から自分の行までを数える「拡張参照」にすると、2回目以降だけを検出できます。
=IF(COUNTIF($B$2:B2,B2)>=2,"2回目以降→削除候補","")
削除候補だけをフィルタで抽出すれば、重複整理が数分で終わります。なお、Excelの「重複の削除」機能はどの行が消えたか記録が残らないため、経理データではこの数式方式(消す前に確認できる)をおすすめします。
パターン4:表記ゆれを吸収してから照合する
「株式会社ABC」と「(株)ABC」は人間には同じでも、COUNTIFには別物です。照合用の正規化列を作ってから重複判定します。
正規化 =SUBSTITUTE(SUBSTITUTE(ASC(TRIM(A2)),"株式会社",""),"(株)","")
ASC関数(全角→半角)とTRIM・SUBSTITUTEの組み合わせが定番です(データ整形の技は関連記事:No.36 仕訳整形テクニック)。
実務の注意点・つまずきポイント
- 「重複=誤り」とは限らない:毎月同額の家賃・顧問料は正しい重複です。判定条件に「月」を含める、または例外リストを持たせて誤検知を減らします
- 範囲は余裕を持って広めに:$B$2:$B$1000のように将来の行数まで含めるか、テーブル化(構造化参照)して自動拡張にします
- 15桁超の数字はCOUNTIFが誤判定する:口座番号やコードが長い場合、数値として比較され末尾が丸められます。
=SUMPRODUCT((範囲=B2)*1)や文字列化で回避します - チェック結果を残す:検出→調査→処理(正当/修正/削除)の記録列を設けると、月次チェック(関連記事:No.32 月次監査チェックリスト)の証跡になります
- 仕組みで防ぐのが本筋:検出は事後対応です。請求書番号の入力必須化・支払前の承認分離(関連記事:No.129 経理不正防止チェックリスト)とセットで初めて二重払いは根絶できます
チェック機能付きテンプレートのご案内
当ブログの支払管理表・売掛管理表・仕訳チェック系のテンプレートには、本記事の重複検知(COUNTIFS方式・正規化照合)が最初から組み込まれています。自作派の方はこの記事の数式で、時短派の方は完成品でどうぞ。
まとめ
- 重複検出の基本は「COUNTIF(範囲,自分)≧2」。条件付き書式で入力時警告にできる
- 実務の二重払いは「取引先×金額×月」のCOUNTIFS組み合わせ判定で捕まえる
- 拡張参照($B$2:B2)で2回目以降だけを削除候補にする
- 表記ゆれはASC・TRIM・SUBSTITUTEの正規化列で吸収してから照合する
- 検出は事後対応。入力ルールと承認分離の仕組みとセットで運用する

コメント