こんにちは。
Excel事務研究員です。
私はこれまで、Excelのトラブルに何度も悩まされてきました。
「同じ数字のはずなのに、なぜか結果が合わない」
そんな経験、ありませんか?
Excel初心者の頃は特に、
- SUM関数の合計が微妙にズレる
- 比較すると FALSE になる
- 並び替えや集計がおかしい
- 見た目は同じなのに一致しない
こういった現象にかなり混乱します。
でも実はこれ、Excelの「小数点の扱い」が原因になっていることが多いです。
今回の研究テーマはこちらです。
小数点の形式が違う
これはかなり気づきにくいトラブルです。
なぜなら、
見た目ではほぼ同じに見える
からです。
しかしExcelの内部では、別の数値として扱われていることがあります。
今回は、
- なぜ小数点でズレるのか
- Excelの内部では何が起きているのか
- 初心者でもできる解決方法
- 今後ズレを防ぐコツ
を一緒に研究していきます。
よくある状況
例えば次のようなデータがあります。
| 数値 |
|---|
| 10 |
| 10.0 |
| 10.00 |
見た目としては、
ほとんど同じですよね。
しかしこの状態で、
- 比較
- 集計
- 条件判定
- システム連携
を行うと、
なぜか結果がズレることがあります。
例えば、
=A1=B1
で比較すると、
FALSE
になるケースがあります。
「いや、同じ10じゃないの?」
と思いますよね。
でもExcelの内部では、
少し違う処理が行われていることがあります。
原因:表示と内部データが違う
ここがExcelで非常に重要なポイントです。
Excelには、
- 見た目
- 内部データ
の2種類があります。
例えば、
10
と表示されていても、内部では
10.0000000001
のようになっていることがあります。
逆に、
10.00
と表示されていても、内部では単純に
10
の場合もあります。
つまり、
表示=実際の値ではない
ということです。
なぜこんなことが起きるのか?
Excelは非常に細かく計算しています。
特に、
- 小数計算
- 割り算
- 他システムからのデータ
- CSVデータ
- 関数の連続計算
では、
内部で細かい誤差が発生します。
例えば有名なのがこちらです。
0.1 + 0.2
数学では当然、
0.3
になります。
しかしExcelでは内部的に、
0.30000000000000004
のようになることがあります。
これはExcelのバグではありません。
コンピューター全般で起きる
「浮動小数点誤差」という現象です。
Excel初心者がハマりやすい場面
研究員として特によく見るのはこちらです。
① IF関数で一致しない
例えば、
=IF(A1=B1,"一致","不一致")
を使ったとき、見た目は同じ数字なのに
不一致
になることがあります。
これは内部の小数が違うためです。
② VLOOKUPで見つからない
VLOOKUPでも起きます。
例えば、
=VLOOKUP(A2,範囲,2,FALSE)
で検索しても、
#N/A
になることがあります。
原因は、検索値とデータの小数点以下が微妙に違うからです。
③ SUMの合計がズレる
大量データでは、
0.01
のような小さい誤差が積み重なります。
すると、
9999.99
になるはずが、
10000.0000002
のようになることがあります。
④ グラフや集計がおかしい
ピボットテーブルやグラフでも、
内部の誤差によって
- 分類がおかしい
- 集計がズレる
- 同じ数値が別扱い
になることがあります。
見分けるポイント
次のような違和感があれば要注意です。
✔ 見た目は同じなのに一致しない
かなり典型的です。
✔ 比較結果が FALSE になる
=A1=B1
で FALSE が出たら疑いましょう。
✔ 集計結果が少しズレる
小数が絡む集計ではよくあります。
✔ ROUNDしていない
計算式が長い場合、
内部誤差が増えやすいです。
解決方法(初心者向け)
一番おすすめはこちらです。
=ROUND(A2,2)
これは、
小数第2位で丸める
関数です。
例えば、
0.300000000004
を
0.30
に整えてくれます。
ROUND関数の基本
小数第2位まで
=ROUND(A2,2)
整数にする
=ROUND(A2,0)
小数第1位まで
=ROUND(A2,1)
ROUNDを使うべき場面
研究員としては、次の場面ではROUNDを強くおすすめします。
① 金額計算
請求書や経費精算は特に重要です。
② 割合計算
消費税や比率は誤差が出やすいです。
③ 比較処理
IF関数やVLOOKUP前に整えると安定します。
④ CSV・システム連携
システム間で誤差が出やすいです。
表示形式だけではダメな理由
初心者の頃によくあるのがこちらです。
「小数点を非表示にしたからOK」実はこれは危険です。
なぜなら、表示を変えただけで内部データは残っているからです。
例えば、
0.30000000004
を小数2桁表示にしても、
内部ではそのままです。
つまり、
見えなくなっただけ
です。
だからこそ、ROUND関数で実際に値を整えることが重要です。
研究員メモ
Excel初心者の頃の私は、
「同じ数字なのに、なんで違うの?」とかなり混乱していました。
でもExcelを長く使うと分かってきます。
Excelは、
見た目ではなく内部データで判断している
ということです。
人間から見ると同じでも、Excelから見ると
- 小数が少し違う
- 桁数が違う
- 形式が違う
だけで別データになります。
だからこそ重要なのが、
数値を揃える
という考え方です。
この意識を持つだけで、Excelのトラブルはかなり減ります。
今日の研究まとめ
計算結果がズレる理由⑮
小数点の形式が違う
よくある症状
- 比較結果がFALSE
- SUMが微妙にズレる
- 一致検索できない
- 集計結果が違う
原因
表示ではなく、内部の小数値が違うため。
解決方法
=ROUND(セル,桁数)
覚えておきたいポイント
Excelでは
見た目と内部データは違う
これを覚えるだけでもかなり強くなれます。
次回の研究予告
Excel初心者がやりがちなミス研究。
次回から新テーマです。
② 表の作り方のミス⑯
「空白行を入れる」
見やすくするために入れた空白行が、
実は
- 集計
- 並び替え
- フィルター
- ピボットテーブル
を壊していることがあります。
これも初心者がかなりハマりやすいポイントです。
次回も一緒に研究していきましょう。


コメント