Excelで計算したはずなのに、
-
合計が 0.01 合わない
-
見た目は同じ数値なのに 計算結果がズレる
-
SUMすると 期待と違う結果になる
こうした「小数のズレ」は、Excelを使っていると誰でも一度は遭遇します。
原因は入力ミスではなく、Excel内部の計算仕様にあります。
本記事では、
なぜズレるのか → どこで起きるのか → どう防ぐのか
を実例つきでわかりやすく解説します。
小数のズレが起きる根本原因
原因①:Excelは2進数で計算している
Excelは見た目が10進数でも、内部では 2進数(バイナリ) で計算しています。
| 表示値 | 内部的な実数 |
|---|---|
| 0.1 | 正確に表現できない |
| 0.2 | 正確に表現できない |
| 0.3 | 0.1 + 0.2 の結果がズレる |
その結果、
のような誤差が内部で発生します。
原因②:表示と計算は別物
Excelで小数点以下を非表示にしても、内部では元の値のまま 計算されています。
例:
| 値 | 表示 |
|---|---|
| 1.234 | 1 |
| 2.345 | 2 |
見た目は
ですが、内部では
|
1 2 |
1.234 + 2.345 = 3.579<code class="whitespace-pre!"> |
となり、合計が合いません。
原因③:SUMと個別計算の順序差
|
1 2 |
=SUM(A1:A10)<code class="whitespace-pre!"> |
と
は、計算順序が異なるため誤差が変わる 場合があります。
特に金額・割合・単価計算で起きやすいポイントです。
よくあるズレの実例
ケース①:金額合計が1円合わない
-
単価 × 数量 を各行で計算
-
表示は整数
-
合計すると ±1円ズレる
→ 内部の小数誤差が蓄積している
ケース②:IFやVLOOKUP後にズレる
条件分岐や参照関数を通すと、
計算結果が微妙に変化することがあります。
Excelの小数ズレ対処法(実務向け)
対処法①:ROUND関数で明示的に丸める
最も確実でおすすめ。
|
1 2 |
=ROUND(A1*B1, 2)<code class="whitespace-pre! language-excel"> |
-
金額:2桁
-
割合:3〜4桁
「計算途中で丸める」 のがポイントです。
対処法②:表示形式ではなく数式で制御
NG例:
OK例:
|
1 2 |
=ROUND(A1, 0)<code class="whitespace-pre! language-excel"> |
見た目だけの丸めは危険です。
対処法③:整数化して計算する(最強)
金額処理では特に有効。
|
1 2 |
=SUM(A1:A10*100)/100<code class="whitespace-pre! language-excel"> |
または、最初から「円」「銭」「ポイント」単位で管理。
対処法④:PRECISION AS DISPLAY(非推奨)
Excelオプションにある
「表示桁数で計算する」
-
既存データが破壊される
-
元に戻せない
実務では 基本使わない 方が安全です。
ズレを防ぐ設計ルール(重要)
| ルール | 内容 |
|---|---|
| 丸めは数式で | 表示形式に頼らない |
| 合計前に丸め | 行単位で処理 |
| 金額は整数管理 | 円・ポイント単位 |
| 比率は桁固定 | ROUNDで統一 |
まとめ
Excelの小数ズレは バグではなく仕様 です。
-
原因:2進数計算
-
表示と計算は別
-
放置すると金額・集計で事故る
だからこそ、
「意図した桁で、自分で丸める」
これがExcelを安全に使う最大のコツです。

