【Excel】エクセルで足し算が1円合わない・消費税で1円ずれる原因と対処法
エクセルで金額の計算をしていると、「合計が1円だけ合わない」「消費税の計算で1円ずれてしまう」という現象に悩まされることがあります。計算式は正しいはずなのに結果が微妙にずれる原因は、浮動小数点数の誤差や端数処理の不統一にあることがほとんどです。
今回は、エクセルで足し算が1円合わない・消費税で1円ずれる原因と対処法について、具体的な解決策を交えながら丁寧に解説していきます。
「表示上は同じ数値なのに合計が合わない」「小計の合計と総合計がずれる」といった場面にも対応した内容ですので、ぜひ参考にしてみてください。
エクセルで足し算が1円合わない原因と基本的な対処法
それではまず、エクセルで足し算の結果が1円ずれてしまう主な原因と基本的な対処法について解説していきます。原因は大きく分けて浮動小数点数の誤差・表示と実際の値の不一致・端数処理の不統一の3つです。
浮動小数点数の誤差が原因の場合
エクセルは内部的に数値を2進数で管理しているため、10進数では正確に表せない小数が生じることがあります。
例:0.1+0.2をエクセルで計算すると
表示上は「0.3」に見えるが、内部的には「0.30000000000000004」
→ このわずかな誤差が積み重なって1円のズレになることがある
この誤差はROUND関数で各セルの値を適切な桁数に丸めてから集計することで解消できます。計算の途中段階で丸め処理を入れることが重要です。
表示と実際の値が異なる場合の対処法
表示形式で小数を非表示にしていても、実際の値には小数部分が残っている場合がある
確認方法:セルを選択して数式バーで実際の値を確認する
対処法:=ROUND(計算式, 0) で整数に丸めてから集計する
表示形式の変更だけでは実際の値は変わらないため注意が必要です。
「表示上は整数なのに合計が合わない」という場合は、セルの実際の値に小数点以下の数値が隠れている可能性が高いでしょう。数式バーで確認してみてください。
「表示桁数で計算する」設定を使う方法と注意点
手順1:「ファイル」→「オプション」→「詳細設定」を開く
手順2:「次のブックを計算するとき」の「表示桁数で計算する」にチェックを入れる
手順3:OKをクリックして確定する
→ 表示されている値と同じ値で計算が行われる

ただしこの設定は元の精度の高い値が失われる不可逆的な変更のため、慎重に使用する必要があります。通常はROUND関数で対処する方法の方が安全です。
エクセルで消費税計算が1円ずれる原因と対処法
続いては、消費税の計算で1円ずれる原因と具体的な対処法を確認していきます。消費税の端数処理は切り捨て・切り上げ・四捨五入のどれを使うかによって結果が変わるため、処理方法の統一が重要です。
消費税計算で1円ずれる主な原因
| 原因 | 内容 | 対処法 |
|---|---|---|
| 端数処理の不統一 | 小計ごとに丸めた後に合計すると誤差が生じる | 端数処理のタイミングを統一する |
| 税率の小数誤差 | 0.1や0.08が2進数で正確に表せない | ROUND関数で丸めてから計算する |
| 合計後に税計算 | 明細ごとに税計算して合計した場合と異なる | 処理順序を明確にルール化する |
消費税の端数処理で最も多いズレの原因は、明細ごとに税を計算して合計した場合と、合計に対して税を計算した場合の差異です。どちらの方法で計算するかを最初に決めて統一することが重要です。
消費税を正確に計算するROUND関数の使い方
税込金額を切り捨てで求める:=ROUNDDOWN(税抜価格*1.1, 0)
税込金額を四捨五入で求める:=ROUND(税抜価格*1.1, 0)
税込金額を切り上げで求める:=ROUNDUP(税抜価格*1.1, 0)
消費税額だけを切り捨てで求める:=ROUNDDOWN(税抜価格*0.1, 0)
税込金額と消費税額を別々のセルで計算する場合は、「税込金額-税抜価格=消費税額」の関係が成立するように数式を組むことでズレを防げます。
明細の合計と消費税のズレを防ぐ数式の組み方
ズレが起きやすいNG例:
各明細に=ROUND(単価*1.1, 0)を設定して合計する
→ 各行の丸め誤差が積み重なって合計がずれる
ズレが起きにくいOK例:
各明細は税抜金額のまま合計し、合計行に対して一括で消費税を計算する
=ROUND(税抜合計*1.1, 0)
エクセルで小計の合計と総合計がずれる原因と対処法
続いては、小計を足し合わせた値と総合計がずれる原因と対処法を確認していきます。丸め処理のタイミングと集計方法の不一致がずれの主な原因です。
小計と総合計がずれる典型的なパターン
NG例:小計を個別に丸めてからSUMで合計する
小計A:=ROUND(SUM(A2:A5), 0) → 1234
小計B:=ROUND(SUM(B2:B5), 0) → 5678
総合計:=SUM(小計A, 小計B) → 6912
しかし元データの合計をROUNDすると → 6911や6913になることがある
小計ごとに丸め処理をするとそれぞれの丸め誤差が足し算されて総合計と1円ずれることがあります。丸め処理は最終的な合計に対して1回だけ行うのが基本です。
SUMとROUNDを組み合わせた正確な集計方法
推奨する集計方法:
各明細セルには丸めなしの計算式を入力する
総合計セルでのみROUND処理を行う
例:=ROUND(SUM(A2:A100), 0)
→ 途中の丸め誤差の積み重ねがなくなりずれが生じにくくなる

途中計算に丸め処理を入れるほど誤差が積み重なりやすくなります。丸め処理は最終出力の段階でのみ行うことを基本ルールとして覚えておきましょう。
SUMPRODUCT関数で丸め誤差を最小化する方法
=SUMPRODUCT(ROUND(A2:A100*B2:B100, 0))
→ 各行の計算結果を個別に丸めてから合計する
明細ごとに丸めた合計と一致させたい場合に有効
SUMPRODUCT関数を使うと配列単位で丸め処理を行ってから合計できるため、明細ごとに丸めた金額の合計値と一致させたい場合に便利です。
まとめ
今回は、エクセルで足し算が1円合わない・消費税で1円ずれる原因と対処法について、浮動小数点数の誤差・端数処理の不統一・集計タイミングの問題まで幅広く解説しました。
1円ずれを防ぐ基本は、ROUND関数で丸め処理を統一すること・丸め処理は最終段階で1回だけ行うことの2点です。消費税計算では処理方法(切り捨て・四捨五入・切り上げ)を社内でルール化して統一しておくことが重要でしょう。
今回紹介した内容を参考に、エクセルの金額計算のズレをしっかり解消してみてください。