🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel ROUND 関数 — ROUND・ROUNDUP・ROUNDDOWN と「表示形式は四捨五入ではない」理由

|

Excel ROUND 関数 — ROUND・ROUNDUP・ROUNDDOWN と「表示形式は四捨五入ではない」理由

要点=ROUND(number, num_digits)格納されている値そのものを、 指定した小数桁に丸めます。セルの表示形式を小数2桁に設定しても値は変わりません。 変わるのは見た目だけで、その下にはフル桁の数値がそのまま残っています。この差こそ、 「2桁表示」にした価格の列を合計すると、合計が1円ずれてしまう原因です。 num_digits は精度を制御します。正の値=小数の桁数、0=整数、 負の値=十・百・千の位への丸めです。ROUNDUPROUNDDOWN は、 常にゼロから遠ざける/常にゼロへ近づける兄弟関数で、その「近づく・遠ざかる」は ゼロを基準に測られます。これが負数のワナです。すべてのバージョンで動作します。

=ROUND(2.345, 2)      ' -> 2.35   (小数2桁に丸める)
=ROUND(1234.5, -2)    ' -> 1200   (最も近い百の位に丸める)

四捨五入は Excel で一番退屈な関数に見えますし、手入力した正の数だけを相手にする限り、 ほぼその通りです。やっかいなのは、表示のための丸めと値そのものの丸めは別の操作 であり、Excel では2つ目をやったつもりで1つ目をうっかりやってしまえる、という点です。 この区別さえはっきりさせれば、1円ずれる合計も、監査での不一致も、 「でもセルには2.35と書いてある」という押し問答も、すべて解消します。 このガイドは、その一つのメンタルモデルを軸に組み立て、そこから導かれるルールへと進みます。

なお、日本語版 Excel でも関数名は ROUND・ROUNDUP・ROUNDDOWN と英語表記のままです。

このガイドで学べること

  • メンタルモデル:表示形式は桁を隠し、ROUND は桁を消す
  • 「2桁」の列でも合計がずれる理由 — そして1行で済む対処法
  • num_digits:正・ゼロ、そして使われていないのケース
  • ROUND vs ROUNDUP vs ROUNDDOWN — そして「アップ」が本当に意味するもの
  • 負数のワナ:ゼロから遠ざかること ≠ 数学的に大きくすること
  • 判断のしどころ:いつ丸めるか、どれを使うか

メンタルモデル:表示形式は桁を隠し、ROUND は桁を消す

セルの中のすべての数値が、長くて本当の値と、その上にかぶせられたマスクを 別々に持っていると想像してください。小数点以下の表示桁数を減らすボタンを押したり、 通貨の表示形式を適用したりすると、変わるのはマスクだけです。セルは 2.35 と表示しますが、 その下の値は依然として 2.345678 のままです。Excel はマスクではなく、その値で計算します。

ROUND はその逆です。余分な桁を完全に捨て去り、短くなった数値を格納します。 =ROUND(2.345678, 2) のあとは、そのセルは本当に 2.35 そのものになります。 あとからそれを読み取るすべての数式にとって、です。

' どちらの場合もセルは 2.35 と表示される。しかし:
A1: 2.345678 を小数2桁に書式設定   -> SUM は 2.345678 を見る
A2: =ROUND(2.345678, 2)            -> SUM は 2.35 を見る

このイメージを押さえておけば、最も悪名高い丸めのバグはおのずと説明がつきます。

1円ずれる合計:あなたを救うルール

価格の列を小数2桁に書式設定して合計すると、その合計が、表示された数値を手で足し合わせた 結果と食い違うことがあります。各セルは丸めた数字を表示しているのに、内部ではフル精度 で格納しているため、合計はそれら隠れた端数のすべてを引きずって、最後に一度だけ丸められ — 目が期待する値から1円か2円ずれた場所に着地するのです。

' 表示: 1.005 + 1.005 が 1.01 + 1.01 と表示され、合計 1.02 が期待される
' 格納: 1.005 + 1.005 = 2.01 -> 2.02 ではなく 2.01 に丸められる
=ROUND(price, 2)     ' 先に各値を丸めてから SUM すれば、合計は正確になる

ルールはこうです。お金が1円単位できっちり合う必要があるなら、ビューではなく値を丸める。 各明細行を =ROUND(...,2) で丸める(あるいは会計ルール次第で最終合計を一度だけ丸める) ことで、Excel が足し合わせる数値と人が見る数値を一致させます。ブック全体に効く 表示桁数で計算するという設定もありますが、避けてください。ファイル内のすべての値を 恒久的に切り詰めてしまい、あとで痛い目に遭います。代わりに、効かせたい特定のセルで ROUND を使いましょう。

num_digits:正・ゼロ、そして負の小技

ROUND の力の大半は、この第2引数に隠れています。「小数を何桁残すか」だけに とどまらないからです。

=ROUND(3.14159, 2)    ' -> 3.14    正: 小数の桁数
=ROUND(3.14159, 0)    ' -> 3       ゼロ: 最も近い整数
=ROUND(3.14159, 4)    ' -> 3.1416  もっと小数を残す
=ROUND(1234.5, -1)    ' -> 1230    負: 最も近い十の位
=ROUND(1234.5, -2)    ' -> 1200    最も近い百の位
=ROUND(1234.5, -3)    ' -> 1000    最も近い千の位

負の num_digits は小数点の左側を丸めるもので、ほとんど誰も知らない部分です。 給与を百円単位に、人口を千人単位に、グラフ軸をきりのよい間隔に丸めるのが、 手作業のごまかしではなく、短い数式ひとつで済みます。num_digits を数直線上の位置だと 考えてください。正は右へ歩いて小数へ入り、0 は一の位で止まり、負は左へ歩いて 十・百・千へ進みます。

ROUND vs ROUNDUP vs ROUNDDOWN

最初の2つの引数は同じで、端数処理と方向の挙動が違います。

=ROUND(2.4, 0)        ' -> 2     通常の丸め: .5 未満は切り捨て、.5 以上は切り上げ
=ROUND(2.5, 0)        ' -> 3
=ROUNDUP(2.1, 0)      ' -> 3     常にゼロから遠ざける
=ROUNDDOWN(2.9, 0)    ' -> 2     常にゼロへ近づける

ROUND は学校で習ったルールに従います。5以上は切り上げ、5未満は切り捨てです。 ROUNDUP は、次に続く桁が何であろうと常に次の桁へ押し上げます。下回ることが 許されない場面で使います(全ユニットを出荷するのに必要な箱数、切りのよい単位で 課金する分数、原価を必ず上回らねばならない価格)。ROUNDDOWN常にゼロへ向けて 切り落とします。上回ることが許されない場面で使います(予算内で実際に買えるユニット数、 満年齢)。

負数のワナ:「アップ」はゼロから遠ざかることを意味する

ここに、誤った結果を静かに生み出す微妙な点があります。ROUNDUPROUNDDOWN は、 数直線の上下ではなく、ゼロからの距離で定義されています。

=ROUNDUP(-2.1, 0)     ' -> -3    「アップ」= ゼロからより遠い = より小さい(負に大きい)
=ROUNDDOWN(-2.9, 0)   ' -> -2    「ダウン」= ゼロへ近い = より大きい(負に小さい)

つまり ROUNDDOWN(-2.9, 0)-2 を返します。-2-2.9 より数学的には大きい にもかかわらず、です。もし本当に数学的な床(floor)と天井(ceiling) — 符号も含めて常に マイナス無限大またはプラス無限大の方向 — が欲しいなら、それは別の関数です。 INT(真の床)と CEILING.MATHFLOOR.MATH です。これらを取り違えるのが、 典型的な「負の数が1だけずれる」バグです。床と切り捨ての違いについては Excel INT・TRUNC・MOD を、倍数への丸めについては Excel MROUND・CEILING・FLOOR を参照してください。

丸めるもう一つの理由:浮動小数点のノイズ

コンピュータは小数を2進数で格納するため、正確に見える値の中にも実は正確でないものが いくつかあります。有名な例 0.1 + 0.20.30000000000000004 に着地し、0.3 との 等価判定が、目に見える理由もなく失敗します。比較式 — あるいは格納する結果 — を ROUND で包めば、そのノイズは正規化されて消えます。

=(0.1 + 0.2 = 0.3)               ' -> FALSE  (2進数の浮動小数点)
=(ROUND(0.1 + 0.2, 10) = 0.3)    ' -> TRUE

これは、金額の計算結果を格納する時点で小数2桁に丸めるべき、もう一つの論拠です。 計算が「ちゃんと動く」と信じきるのではなく、です。

判断のしどころ:どの丸めを、いつ

お金や、ぴったり合わせる必要のあるあらゆる数字には、素の ROUND を使います — 表示形式ではなく値を丸めるのです。下回ることが高くつくミスになる場面では ROUNDUP を使い(キャパシティ、出荷、切りのよい単位での課金)、上回ることがそうなる場面では ROUNDDOWN を使います(予算、適格性、年齢)。小数の桁数ではなく倍数へ丸めるなら — 最も近い5セント、最も近い15分、パレット単位 — それは MROUNDCEILINGFLOOR の出番です。そして、計算用にはフル精度を保ちつつ表示だけきれいにしたいだけなら、 丸めてはいけません。セルの表示形式を変えましょう。腕の見せどころは、いまやっている 仕事が「格納」「制約」「表示」のどれなのかを見極めることです。

ExcelMaster はどう役立つか

丸めのルールはたいてい平易なビジネスの言葉で語られます — 請求の各明細は円単位で丸めて、 ただし出荷カートンは常に切り上げて — そしてバグは、ほぼ必ず表示されているものと 格納されているもののミスマッチです。ExcelMaster はその意図を読み取り、正しい呼び出しを 書きます。合計を整合させねばならない所には ROUND、方向が指定されている所には ROUNDUPROUNDDOWN、そしてただ見た目を整えたいだけの所には(数式ではなく)表示形式を。 あなたはルールを述べるだけ。それが、監査で1円足りなくならない操作を選びます。

よくある質問

なぜ列の合計がセルの表示と合わないのですか?

セルは小数を減らして書式設定されているだけで、依然としてフル精度で格納しているため、 合計は隠れた端数を引きずります。=ROUND(cell, 2) で値そのものを丸める(あるいは合計を 一度だけ丸める)ことで、Excel が足す数値と、あなたが見る数値を一致させましょう。

Excel で小数点以下2桁に四捨五入するには?

=ROUND(number, 2) を使います。2num_digits で、残す小数の桁数です。整数にするなら 0 を使います。

ROUND と ROUNDUP の違いは?

ROUND は通常の丸めに従います(.5 以上は切り上げ、未満は切り捨て)。ROUNDUP は 次の桁が何であろうと常にゼロから遠ざける方向に丸めるので、2.13 になります。 決して下回ってはいけないときに ROUNDUP を使います。

最も近い百や千に丸めるには?

負の num_digits を使います。=ROUND(1234, -2)1200(最も近い百)、 =ROUND(1234, -3)1000(最も近い千)になります。

ROUNDDOWN は負の数をゼロへ丸めますか、それとも下へ丸めますか?

ゼロへ向けてです。=ROUNDDOWN(-2.9, 0)-3 ではなく -2 を返します。「ダウン」が ゼロへ向かうことを意味するためです。真の数学的な床(マイナス無限大へ向かう)が欲しいなら INT を使います。

検証環境

検証環境: Excel 365(Windows 11)— 最終確認 2026-06-27

関連ガイド: Excel MROUND・CEILING・FLOOR · Excel INT・TRUNC・MOD · Excel SUMIFS · Excel IF