四捨五入:ROUNDとセルの見え方
小数第2位まで表示する書式のセルは、1.649175を保存していても1.65と表示できます。保存された数を変えるのはROUNDだけです。
「1.65と書いてあるから1.65だ」
初心者の多くは、口には出さないものの、表計算について一つの思い込みを持っています。セルに見えている数がセルの中の数だ、というものです。19.99の価格に8.25%の売上税がかかるとしましょう。税は19.99 × 0.0825 = 1.649175です。セルの書式を小数第2位までにすると1.65と表示されます。それでも中身は1.649175のままで、そのセルを使う数式はすべてこの完全な値で計算します。書式は数の見た目を変えます。その下の値は決して変えません。
この思い込みは合計で崩れます。三つのセルに=1/3と入れて小数第2位までの書式にすると、どれも0.33と表示されます。そのSUMは1.00と表示されます。保存された値の合計がちょうど1だからです。見えている数を手で足した人は0.99を得て、シートが壊れていると思います。見えている数字がすべてきちんと合わなければならない請求書や給与明細では、お金を計算するその場で、保存される値そのものを四捨五入するのが解決策です。
保存された値に驚かされる理由は、もう一つ目立たないものがあります。表計算は数を2進数で保存しますが、0.1のような小数の多くはぴったりの2進数で表せません。Microsoftによると、Excelの精度は15桁です。そのため長い計算を重ねると、15桁目よりずっと後ろに小さな端数が出ることがあります。ふつうは目に見えません。それでも保存された値の一部なので、ぴったりの数と比べるとそのせいでFALSEになることがあります。=ROUND(A1,2)=0.3のように、比べる前に四捨五入しておくのが安全な習慣です。
ROUNDは保存された数に何をするか
ROUND(数値, 桁数)は指定した小数の桁数に四捨五入します。書式とちがって、保存された値そのものを変えます。Microsoftの例では、=ROUND(2.15, 1)は2.2、=ROUND(2.149, 1)は2.1、=ROUND(23.7825, 2)は23.78です。ちょうど半分の桁はゼロから遠い方へ丸められるので、=ROUND(-1.475, 2)は−1.48になります。Googleのヘルプは、符号に関係なく大きさで切り上げ・切り捨てると説明しています。桁数が0なら整数に丸めます。負の値を指定すると小数点より左の位で丸めます。=ROUND(626.3, -3)は1000、=ROUND(1.98, -1)は0です。
| 数式 | 結果 |
|---|---|
| =ROUND(2.15, 1) | 2.2 |
| =ROUND(2.149, 1) | 2.1 |
| =ROUND(-1.475, 2) | −1.48 |
| =ROUND(21.5, -1) | 20 |
| =ROUND(626.3, -3) | 1000 |
| =ROUND(-50.55, -2) | −100 |
ここで二つのソフトは少しちがいます。Excelでは2番目の引数num_digitsは省略できません。Google スプレッドシートではplacesは省略でき、既定は0です。そのため=ROUND(2.5)はスプレッドシートでは3になりますが、Excelでは数式を最後まで書くよう求められます。毎回桁数を書けばどちらでも動き、読みやすくもなります。いつも同じ方向に丸めたいときは、どちらにもROUNDUPとROUNDDOWNがあります。この実験室ではROUNDだけを使います。
ROUNDはどんな計算でも包めます。=ROUND(SUM(B2:B9)/COUNT(B2:B9), 1)は小数第1位までの平均を出し、=ROUND(A2*1.1, 0)は価格に10%を足して一の位に丸めます。こうした数式は内側から外へ読みましょう。まず計算、次にその結果の四捨五入です。
ドラッグで回転、スクロールまたはピンチで拡大・縮小。
- 「小数点以下の表示桁数を減らす」をクリックして、四捨五入したつもりになる。 それは表示形式です。セルは丸まって見えますが、数式は今もすべての桁を使います。保存された値を変えるのはROUNDだけです。
- 総合計だけを四捨五入する。 各行には四捨五入していない金額が残っているので、見えている行を足しても見えている合計になりません。金額はそれぞれ計算するところで四捨五入しましょう。
- Excelで=ROUND(A2)と書く。 Excelではnum_digitsが必要です。スプレッドシートはこの数式を受け付けて整数に丸めるので、スプレッドシートでは動くシートがExcelではこの数式で止まることがあります。
- -1.475が-1.47になると思いこむ。 ちょうど半分は大きさでゼロから遠い方へ丸めるので、結果は−1.48です。
- =ROUND(2.15, 1)は何を返しますか?
- =ROUND(2.149, 1)は何を返しますか?
- =ROUND(-1.475, 2)は何を返しますか?
- =ROUND(626.3, -3)は何を返しますか?
- =ROUND(21.5, -1)は何を返しますか?
- =ROUND(23.7825, 2)は何を返しますか?
- B2には1.649175が入っていて、1.65と表示する書式です。=B2*100は何を返しますか?
- 三つのセルにそれぞれ=1/3が入っていて、0.33と表示されています。そのSUMは小数第2位までの表示で何になりますか?
- 1.00
- 0.99
- 0.33
- #VALUE!
- =ROUND(2.5)はどうなりますか?
- Google スプレッドシートは3、Excelは足りない引数を求める
- どちらも2
- どちらも3
- どちらも#N/Aを表示
- 見えている数字の合計が合うようにするには、金額をどこで四捨五入すべきですか?
- それぞれの金額を計算するところ
- 総合計だけ
- どこでもない。書式で十分
- 別のシート
- 表示形式は見えるものを変えますが、保存されているものは変えません。
- ROUND(数値, 桁数):ちょうど半分はゼロから遠い方へ丸め、負の桁数は小数点より左で丸めます。
- Excelでは桁数の引数が必須で、Google スプレッドシートでは既定が0です。
- 見えている数字の合計が合うように、金額は計算するところで四捨五入しましょう。
このコースの出典 (19)
- Microsoft Support, "Switch between relative, absolute, and mixed references" (support.microsoft.com/en-us/office/dfec08cd-ae65-4f56-839e-5f0d8d0baca9: $ before column and row, F4 to switch, copying two down and two right: $A$1 stays, A$1 to C$1, $A1 to $A3, A1 to C3)
- Microsoft Support, "AVERAGE function" (support.microsoft.com/en-us/office/047bac88-d466-426c-a32b-8f33eb960cf6: text, logical values and empty cells in a reference ignored, zeros included; 10, 7, 9, 27, 2 gives 11, with 5 gives 10; mean 5, median 4, mode 3 for 2 3 3 5 7 10)
- Microsoft Support, "COUNT function" (support.microsoft.com/en-us/office/a59cd7fc-b623-4d93-87a4-d23bf411294c: only numbers counted, dates count, errors and text do not)
- Microsoft Support, "ROUND function" (support.microsoft.com/en-us/office/c018c5d8-40fb-4053-90b1-b3e7f61a213c: num_digits required; 2.15 to 2.2, -1.475 to -1.48, 626.3 to 1000, 1.98 to 0, -50.55 to -100)
- Microsoft Support, "IF function" (support.microsoft.com/en-us/office/69aed7c9-4e8a-4755-a9bc-aa8bbff73be2: value_if_false optional, text in quotes except TRUE and FALSE, 0 and #NAME? problems)
- Microsoft Support, "VLOOKUP function" (support.microsoft.com/en-us/office/0bbc8083-26fe-4963-8ab8-93a18ad188a1: range_lookup TRUE by default, sorted first column, #N/A, #REF!, #VALUE!, absolute table range, wildcards with FALSE)
- Microsoft Support, "XLOOKUP function" (support.microsoft.com/en-us/office/b7fd680e-6d10-43e6-84f9-88eae8bf5929: not in Excel 2016 and Excel 2019, exact match by default)
- Microsoft Support, "How to correct a #VALUE! error" (support.microsoft.com/en-us/office/15e1b616-fbf2-4147-9c0b-0a11a20e409e: + and * may not calculate cells with text, use SUM instead, IFERROR hides all errors)
- Microsoft Support, "Excel specifications and limits" (15 digits, 64 nested levels, 255 arguments)
- Google Docs Editors Help, "VLOOKUP" (support.google.com/docs/answer/3093318: is_sorted TRUE by default, FALSE recommended, search down to a larger value, " Apple" and "Apple " differ, wildcards, IFNA, absolute range)
- Google Docs Editors Help, "XLOOKUP" (support.google.com/docs/answer/12405947)
- Google Docs Editors Help, "ROUND" (support.google.com/docs/answer/3093440: places optional, 0 by default, rounding by magnitude)
- Google Docs Editors Help, "IF" (support.google.com/docs/answer/3093364: order of the answers is the most common problem, IFS)
- Google Docs Editors Help, "AVERAGE" (support.google.com/docs/answer/3093615: text ignored, any number of arguments)
- Google Docs Editors Help, "COUNTA" (support.google.com/docs/answer/3093991: zero-length strings and spaces count)
- Google Docs Editors Help, "Keyboard shortcuts for Google Sheets" (support.google.com/docs/answer/181110: F4 and Fn+F4 while entering a formula, F4 as Redo)
- Pryor Learning and Exceljet (F4 cycle A1, $A$1, A$1, $A1; = comparison not case-sensitive)
- Ablebits (IF without value_if_false returns FALSE)
- Spreadsheet Class (Sheets circular dependency shows #REF!)
確認日: 2026-10-19