Excel ROUND関数なしで四捨五入する6つの方法

Excel ROUND関数なしで四捨五入する6つの方法 Excel

はじめに:ROUND関数、本日より使用禁止!

「Excelで四捨五入といえば、ROUND関数でしょ?」

そう思ったあなた、大正解!

ほとんどの場合、ROUND関数が最も簡単で分かりやすい方法です。

でも、ちょっと待ってください!

もし、そのROUND関数をはじめ、ROUNDUP, ROUNDDOWN, MROUNDといった、名前に「ROUND」と付く関数が、今日からすべて使用禁止になったとしたら…?

「え、ROUND系が全部なしで、どうやって四捨五入するの…?」

そんな、実務では絶対に使わないけれど、関数好きの心をくすぐる「無駄な四捨五入」に、皆さんと一緒に挑戦してみたいと思います!

目的は、

「四捨五入」という処理が、どのような計算ロジックで成り立っているのか、その本質を深く理解すること!

今回の冒険では、あえて便利な新関数を多用せず、昔からある基本的な(レガシーな)関数を中心に挑んでいきます。

なぜなら、その方が四捨五入の根本的なロジックに迫ることができるからです。

便利な新関数は、時としてその内部処理がブラックボックスになりがちですが、基本的な関数の挙動を一つひとつ抑えることで、応用力は格段にアップしますよ!

この関数パズルを通して、あなたのExcel関数への理解が、さらに深まるかもしれません!

本記事では、無料のWeb版Excelを使用して検証および画像の作成を行っています。Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!

ステップ1:冒険の準備 – 完璧なテストケースを用意する

何事も、まずは準備から。今回の挑戦者となる、四捨五入の様々なケースを網羅した数値リストを用意しましょう。

まず、まっさらなシートのA1セルから、以下のように数値を入力してください。

Excelの説明画像

または、以下の数式をA1セルに貼り付けます。

={"数値";-5.51;-3;-2.01;-0.5;0;0.5;3.01;4;5.5;6.51}

このリストには、負の数の繰り上げ・繰り下げ、0.5の扱い、整数など、四捨五入のロジックを試すための、あらゆる罠が仕掛けられています。

次に、B1セルに「四捨五入(答え)」と入力し、B2セルに、これから作る数式の「正解」を表示させるために、ROUND関数を使ってみましょう。

=ROUND(A2:A11,0)

Excelの説明画像

{-6;-3;-2;-1;0;1;3;4;6;7} という正解が表示されましたね。

これから作る数式が、すべてこの結果と一致することを目指します!

この挑戦は、すべてD2セルに数式を入力して行います。

そして、結果が正しいかどうかを判定するために、D13セルに =AND($B$2#=D2#) という判定式を用意しておけば、結果が一致しているか一目で分かりますよ。

Excelの説明画像

6つのアプローチで、「ROUNDの壁」を突破せよ!

準備は整いました!

D2セルに入力する、たった一つのスピル数式で、ROUND関数に頼らない四捨五入を実現していきましょう!

アプローチ1:INT – 四捨五入の基本原理

考えかた

ROUND系関数が禁止されたとき、真っ先に思い浮かぶのが、小数点以下を切り捨てるINT関数です。

0より大きい値の場合、「0.5を足して、小数点以下を切り捨てる」という、あの四捨五入の基本原理を、素直に数式で表現してみましょう!

【INT関数の基本】
INT関数は、指定された数値を超えない最大の整数を返します。簡単に言うと「数値以下の最も近い整数(マイナス無限大方向)に切り捨てる」関数です。
=INT(2.9)2
=INT(-2.1) → –3
この、負の数が「-2」ではなく「-3」になる独特の動きが、重要なポイントです。

数式と解説

=INT(ABS(A2:A11)+0.5)*SIGN(A2:A11)

ABS(A2:A11): まず、負の数の複雑な動きを一旦忘れるために、ABS関数で全ての数値を「絶対値」(正の数)に変換します。

Excelの説明画像

... + 0.5: 次に、その絶対値に「0.5」を足します。これで、小数部分が0.5以上の数値は、整数部分が1つ繰り上がります。

Excelの説明画像

INT(...): そして、INT関数で小数点以下をバッサリと切り捨てます。これで、正の数の四捨五入は完成です。

Excelの説明画像

... * SIGN(A2:A11): 最後に、SIGN関数(数値の符号に応じて1, -1, 0を返す関数)を使って、元の数値の符号を掛け合わせ、正しい正負に戻してあげます。

Excelの説明画像
Excelの説明画像

【縛りプレイ】INT関数だけでやってみる!

ABSSIGNも使いたくない!」というときもありますよね。

=INT((A2:A11<0)*-A2:A11+(A2:A11>0)*A2:A11+0.5)*((A2:A11>0)-(A2:A11<0))

という数式なら、INT関数と論理演算だけで同じことができます。

Excelの説明画像

ABSSIGNの部分を、TRUE(1)とFALSE(0)の性質を利用して再現している、まさに変態的な(褒め言葉です!)数式ですね。

ABS関数なしで絶対値を出す方法は以下の記事で紹介しています!

アプローチ2:TRUNC – INTの双子の兄弟

考えかた

INT関数とよく似た関数に、TRUNC関数があります。

この二つ、実は負の数の扱いが少しだけ違うのです。その違いを理解し、使いこなしてみましょう。

INTTRUNC、何が違うの?」
・INT(-2.5) → -3 (より小さい整数、つまりマイナス無限大の方向に丸める)
・TRUNC(-2.5) → -2 (単純に小数点以下を切り捨てる。0の方向に丸める)

この「0の方向に丸める」性質を利用して、正の数と負の数で処理を分けてみましょう。

数式と解説

=TRUNC((A2:A11>0)*(A2:A11+0.5))+TRUNC((A2:A11<0)*(A2:A11-0.5))

TRUNC((A2:A11>0)*(A2:A11+0.5)): こちらは正の数担当です。(A2:A11>0)の部分がスイッチとなり、正の数には「+0.5」して切り捨て、負の数や0の場合は全体が0になります。

Excelの説明画像

TRUNC((A2:A11<0)*(A2:A11-0.5)): こちらは負の数担当です。負の数を四捨五入するには、「-0.5」して切り捨てるのが正しいロジックです。(例: -5.51-0.5 = -6.01 → TRUNC → -6)

Excelの説明画像

... + ...: 正の数担当と負の数担当、どちらか一方は必ず0になるので、最後に足し合わせることで、正しい結果だけが残る、というわけです。

Excelの説明画像

アプローチ3:TRUNC + SIGN – よりエレガントに

考えかた

アプローチ2の「正の数担当」と「負の数担当」を分ける考え方、もっとスマートに表現できないでしょうか?
そう、SIGN関数を使えば、一本の数式にまとめられます!

数式と解説

=TRUNC(A2:A11+SIGN(A2:A11)*0.5)

SIGN(A2:A11)*0.5: SIGN関数が、正の数には「1」、負の数には「-1」を返します。それに0.5を掛けることで、元の数値が正なら「+0.5」、負なら「-0.5」という、まさに私たちが欲しかった調整値を自動で生成してくれます。

Excelの説明画像

A2:A11 + ...: 元の数値に、この調整値を加えます。

Excelの説明画像

TRUNC(...): 最後に、小数点以下を切り捨てれば完成です。アプローチ2よりもずっと短く、エレガントですよね!

Excelの説明画像

アプローチ4:FLOOR & CEILING – 床と天井で挟み撃ち

考えかた

切り捨てだけでなく、「切り上げ」も使ってみましょう。

FLOOR(床)関数とCEILING(天井)関数の出番です。

【FLOORとCEILING】
・FLOOR(数値, 基準値): 指定した基準値の倍数になるように、数値を「切り捨て」ます。(例: FLOOR(5.9, 1) → 5)
・CEILING(数値, 基準値): 指定した基準値の倍数になるように、数値を「切り上げ」ます。(例: CEILING(5.1, 1) → 6)

※現在では、負の数の扱いがより明確になったFLOOR.MATHCEILING.MATHが推奨されていますが、今回は基本的な動きを理解するために古い関数を使います。

数式と解説

=IF(A2:A11>=0,FLOOR(A2:A11+0.5,1),CEILING(A2:A11-0.5,1))

IF(A2:A11>=0, ..., ...): まず、数値が0以上かどうかで処理を分岐します。

Excelの説明画像

FLOOR(A2:A11+0.5,1): 0以上の場合は、おなじみ「+0.5して切り捨て」のロジックです。FLOOR(..., 1)は、INTとほぼ同じ動きをします。

CEILING(A2:A11-0.5,1): 負の場合は、「-0.5して切り上げ」ます。(例: -5.51-0.5 = -6.01 → CEILING → -6)TRUNCの時と考え方は同じですが、使う関数が違うのですね。

Excelの説明画像
Excelの説明画像

アプローチ5:TEXT – 書式設定の魔法

考えかた

セルの書式設定」で数値を整数表示にすると、自動で四捨五入されますよね?

その「書式設定の力」を、数式の中で使ってしまう、という有名な裏ワザです。

数式と解説

=TEXT(A2:A11,"0")*1

TEXT(A2:A11,"0"): TEXT関数は、数値を指定した書式(今回は”0″=小数点以下のない整数)の「文字列」に変換します。この変換の過程で、Excelは内部的に四捨五入を行ってくれるのです。

Excelの説明画像

... * 1: ただし、結果は「文字列」なので、このままでは計算に使えません。そこで、1を掛けることで、文字列を「数値」に再変換しています。

Excelの説明画像

ちなみに、=VALUE(TEXT(A2:A11,"0")) のように、VALUE関数を使っても、同じく文字列を数値に変換できますよ!

アプローチ6:EVEN & ODD – 究極の関数パズル

考えかた

さあ、いよいよ最後の挑戦です!

もし、使えるのが「数値を最も近い偶数/奇数に切り上げる」という、EVEN関数とODD関数だけだったら…?

もはや狂気の沙汰ですが、論理を突き詰めれば、不可能ではありません!

数式と解説

=((EVEN((A2:A11<0)*-A2:A11+(A2:A11>0)*A2:A11+0.5+10^-10)/2-1)+(ODD((A2:A11<0)*-A2:A11+(A2:A11>0)*A2:A11+0.5+10^-10)/2-0.5))*((A2:A11>0)-(A2:A11<0))

この数式は、3つのパーツから成り立っています。

1. 絶対値の計算: (A2:A11<0)*-A2:A11+(A2:A11>0)*A2:A11
これは、アプローチ1の縛りプレイで登場した、論理演算だけで絶対値(ABS)を再現する部分です。

Excelの説明画像

2. 符号の計算: ((A2:A11>0)-(A2:A11<0))
同じく、論理演算だけで符号(SIGN)を再現する部分です。

Excelの説明画像

3. 切り捨ての再現: ((EVEN(...)/2-1)+(ODD(...)/2-0.5))
ここが心臓部であり、最も難解な部分です。...の中には、絶対値に0.5を足した数値が入っています。

この計算は、EVENODDの性質を巧みに利用して、INT関数(切り捨て)と全く同じ結果を生み出す、魔法の呪文なのです!

Excelの説明画像

+10^-10という、ごく僅かな数を足しているのはなぜでしょう?

これは、EVEN/ODD関数の性質への対策です。

例えば、EVEN(4)の結果は「4」になってしまいますが、私たちが欲しいのは「切り上げ」なので「6」が返ってきてほしいですよね。

そこで、EVEN(4 + 0.0000000001)とすることで、4より僅かに大きい数になり、結果が正しく「6」に切り上げられるのです。

この数式の精度は10のマイナス10乗未満ということになりますが、実用上は全く問題ありませんね。

Excelの説明画像

まとめ:四捨五入は、ロジックの塊だ!

普段、何気なく使っている「四捨五入」という処理が、いかに多くの計算ロジックの組み合わせで成り立っているか、その奥深さを感じていただけたのではないでしょうか。

実務でEVENODD関数を使って四捨五入する日は、おそらく永遠に来ないでしょう(笑)。

しかし、今回挑戦した関数パズルたちは、決して無駄ではありません。

INTTRUNCの違い、SIGN関数の便利さ、そしてABSSIGNさえも論理演算で再現できるという事実。

これらの知識は、いつかあなたがもっと複雑な問題に直面したとき、きっと新しい解決策への扉を開いてくれるはずです!


今回登場した関数リスト

  • ROUND(数値, 桁数): 指定した桁数で数値を四捨五入します。
    例: =ROUND(123.45, 1) → 123.5
  • INT(数値): 数値を超えない最大の整数(マイナス無限大方向への切り捨て)を返します。
    例: =INT(-2.1) → -3
  • ABS(数値): 数値の絶対値を返します。
    例: =ABS(-5) → 5
  • SIGN(数値): 数値の符号を返します(正は1, 負は-1, 0は0)。
    例: =SIGN(-100) → -1
  • TRUNC(数値, [桁数]): 数値の小数点以下を切り捨てます(0方向への切り捨て)。
    例: =TRUNC(-2.9) → -2
  • IF(論理式, 値が真の場合, [値が偽の場合]): 条件を判定し、処理を分岐させます。
  • FLOOR(数値, 基準値): 指定した基準値の倍数になるように、数値を切り捨てます。
    例: =FLOOR(7, 3) → 6
  • CEILING(数値, 基準値): 指定した基準値の倍数になるように、数値を切り上げます。
    例: =CEILING(7, 3) → 9
  • TEXT(値, 表示形式): 数値を書式設定した文字列に変換します。
    例: =TEXT(1234, "#,##0") → “1,234”
  • VALUE(文字列): 数値に変換できる文字列を、数値に変換します。
    例: =VALUE("150") → 150
  • EVEN(数値): 数値を最も近い偶数に切り上げます。
    例: =EVEN(3) → 4
  • ODD(数値): 数値を最も近い奇数に切り上げます。
    例: =ODD(4) → 5
タイトルとURLをコピーしました