Excelで金額を100円単位や1,000円単位に切り捨てたいとき、負の数が混ざると面倒ですよね。
FLOOR関数を使うと、負の数には負の倍数を指定しないとエラーになります。正負が混在する損益データだと、IF関数で場合分けすることになって大変ですよね。
そんなときに便利なのがFLOOR.MATH関数です。正の数でも負の数でも、倍数の符号を気にせず切り捨てできますよ。この記事では、ExcelのFLOOR.MATH関数について基本の書き方から実務での使いどころまで紹介します。
ExcelのFLOOR.MATH関数とは?
FLOOR.MATH関数(読み方:フロア・マス)は、数値を指定した倍数の方向へ切り捨てる関数です。関数名は「FLOOR(床=下方向)+ MATH(Mathematics:数学)」に由来します。「切り捨てを数学的に拡張した関数」というイメージですよ。
FLOOR関数の改良版にあたります。旧版のFLOOR関数は負の数の扱いが直感に反する場面があり、その弱点を解消するために用意されました。
FLOOR関数との最大の違いは「負の数の切り捨て方向」です。FLOOR関数は負の数に負の倍数を指定する必要があります。一方、FLOOR.MATH関数は正の倍数のまま使えますよ。さらにmode引数で丸めの方向を制御できるのもポイントです。
FLOOR.MATH関数にできることをまとめると、次のとおりです。
- 正の数を指定した倍数の方向へ切り捨てる
- 負の数を「小さい方向(0から離れる方向)」に切り捨てる(デフォルト)
- 負の数を「大きい方向(0に近い方向)」に切り捨てることもできる(mode指定)
- 倍数を省略すると整数に切り捨てる
NOTE
FLOOR.MATH関数はExcel 2013以降で利用できます。Excel 2010以前をお使いの場合はFLOOR関数を使いましょう。Microsoft 365・Excel 2016/2019/2021/2024 では問題なく利用できます。
FLOOR.MATH関数の書き方(構文と引数)
基本構文
=FLOOR.MATH(数値, [基準値], [モード])
カッコの中に「切り捨てたい数値」「倍数」「丸めの方向」を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 切り捨てたい数値やセル参照、数式 |
| 基準値 | 任意 | 切り捨てる基準となる倍数(省略時は1) |
| モード | 任意 | 負の数の丸め方向(省略時は0) |
基準値を省略すると「1」が使われます。つまり整数への切り捨てですね。
モードは正の数には影響しません。負の数のときだけ動作が変わります。
| モード | 負の数の丸め方向 | 例:FLOOR.MATH(-7.3, 1, モード) |
|---|---|---|
| 0(デフォルト) | 小さい方向(0から離れる) | -8 |
| 0以外(例:1) | 大きい方向(0に近づく) | -7 |
TIP
モードは「0以外の値」なら何を指定しても同じ動作です。0か0以外かの判定ですよ。
数直線で見る丸めの方向
負の数の挙動は数直線で見ると直感的です。「-7.3」を1単位で切り捨てる場合を見てみましょう。
-8 -7.3 -7 0
|---------|----------|----------|
↑ ↑
mode=0(小さい方向/ mode=1(大きい方向)
デフォルト)
mode=0は「より小さい整数」へ丸めます。これが数学的な「切り捨て(floor)」の本来の意味です。mode=1は「絶対値の小さい方向」へ丸めます。日常の感覚での「切り捨て」に近いですよ。
基本的な使い方
正の数を整数に切り捨てる
いちばんシンプルな例です。セルA2に小数が入っているとします。
=FLOOR.MATH(A2)
A2が「3.8」なら結果は「3」です。基準値もモードも省略すると、整数への切り捨てになります。
正の数を100単位に切り捨てる
=FLOOR.MATH(A2, 100)
A2が「1,280」なら結果は「1,200」です。FLOOR関数でも同じ結果になります。正の数ではどちらを使っても変わりませんよ。
負の数を小さい方向に切り捨てる(デフォルト)
ここからがFLOOR.MATH関数の出番です。
=FLOOR.MATH(-7.3)
結果は「-8」です。モードを省略(=0)すると、0から離れる方向に丸めます。数直線で見ると「-7.3」より小さい整数「-8」に切り捨てられますよ。
負の数を大きい方向に切り捨てる(モード指定)
=FLOOR.MATH(-7.3, 1, 1)
結果は「-7」です。モードに0以外の値を入れると、0に近づく方向に丸めます。数直線で見ると「-7.3」より大きい整数「-7」になりますよ。
ちょうど倍数のときの動作
元の値がすでに倍数ちょうどの場合は、切り捨ては行われません。
=FLOOR.MATH(1500, 500)
結果は「1500」のままです。端数がなければ値はそのまま返ります。
実務で使える活用パターン
給与・残業代を100円単位に切り捨てる
支給額を100円単位に揃えたいケースです。
=FLOOR.MATH(A2, 100)
A2が「245,678」なら結果は「245,600」です。1円単位の端数を切り捨てて、運用上見やすい金額に整えられますよ。
ROUND関数で四捨五入した金額と比較すれば、端数の影響範囲も確認できます。
原価・仕入れ単価を切り捨てて見積もる
原価管理では「保守的に小さく見積もる」ために切り捨てが向いています。設定単価を10円単位に揃えるならこうなります。
=FLOOR.MATH(A2, 10)
A2が「178」なら結果は「170」です。利益を強気に取りすぎず、現実的な価格設定に寄せられますよ。切り上げの場合はCEILING.MATH関数を使いましょう。
損益データの100単位での切り捨て
損益データには正の数(利益)と負の数(損失)が混在します。100円単位で切り捨てたいとき、FLOOR関数だと符号によって倍数を変える必要がありますよね。
=FLOOR.MATH(A2, 100)
A2が「-456」なら「-500」に、「567」なら「500」になります。符号に関係なく同じ数式で処理できるのがメリットですよ。
時間を15分単位に切り捨てる
勤怠管理で出勤時刻を15分単位に切り捨てたいケースです。Excelでは時刻をシリアル値(1日=1の数値)で管理しています。
=FLOOR.MATH(A2, "0:15")
A2が「9:07」なら結果は「9:00」です。「0:15」と時刻形式で指定できるので、シリアル値を意識しなくても大丈夫ですよ。
切り上げで処理したい場合はCEILING.MATH関数を使いましょう。
在庫を「箱単位」に切り捨てる(mode指定)
在庫管理で「12本入りの箱」など、ロット単位での梱包数を計算するケースです。
=FLOOR.MATH(A2, 12)
A2が「100」なら結果は「96」です。100本のうち、12本入り箱として確実に詰められるのは8箱(96本)ということですね。残り4本は次のロットに回す形です。
負の在庫差分(不足分)も同じ数式で処理したいなら、mode引数で挙動を切り替えられます。
=FLOOR.MATH(A2, 12, 1)
A2が「-100」なら、mode=0なら「-108」、mode=1なら「-96」と結果が変わります。不足を「箱単位の小さい数」に丸めたいときはmode=1が便利ですよ。
ボーナス・歩合給を1,000円単位に切り捨てる
ボーナスや歩合給を1,000円単位で支給したい場合です。
=FLOOR.MATH(B2, 1000)
B2が「68,750」なら結果は「68,000」です。端数の750円を切り捨てて、運用しやすい金額にできますよ。
よくあるエラーと対処法
FLOOR.MATH関数はFLOOR関数よりエラーが起きにくい設計です。それでも注意点はあります。
| エラー | 原因 | 対処法 |
|---|---|---|
| #VALUE! | 数値や基準値に文字列が入っている | セル参照先が数値かどうか確認する |
| #NAME? | 関数名のスペルミス、またはExcel 2010以前 | 関数名を確認。2010以前ならFLOOR関数を使う |
| #DIV/0! | 基準値に0を指定している | 0以外の基準値を指定する |
| 想定と逆の方向に丸まる | モードの指定が逆 | モード=0(小さい方向)と0以外(大きい方向)を確認する |
FLOOR関数で起きる#NUM!エラーが起きない
FLOOR関数では「正の数 + 負の基準値」で#NUM!エラーになります。FLOOR.MATH関数ではこのパターンのエラーは発生しません。
=FLOOR(1280, -100) → #NUM!エラー
=FLOOR.MATH(1280, -100) → 1200(エラーにならない)
基準値の符号を気にせず使えるのが、FLOOR.MATHの大きな利点ですよ。
基準値に0を指定したとき
基準値に0を指定すると#DIV/0!エラーになります。
=FLOOR.MATH(100, 0) → #DIV/0!エラー
基準値のセルが空や0になっていないか確認しましょう。空セルを参照していると意図せず0扱いになりますよ。基準値を省略した場合は自動的に「1」が使われるので、このエラーは起きません。
モードを「TRUE」「FALSE」で指定した場合
モードに TRUE を指定すると「1」として扱われ、FALSE は「0」として扱われます。
=FLOOR.MATH(-7.3, 1, TRUE) → -7(mode=1と同じ)
=FLOOR.MATH(-7.3, 1, FALSE) → -8(mode=0と同じ)
論理値を渡しても動作しますが、可読性のため数値で指定するのがおすすめですよ。
文字列の数字を渡したとき
セル参照先がテキスト形式(左寄せ表示)になっていると、#VALUE!エラーが出ます。
=FLOOR.MATH("123", 5) → #VALUE!エラー
セルの書式を「数値」に変えるか、VALUE関数で数値変換してから渡しましょう。
FLOOR関数との違い(負の数の挙動比較)
FLOOR.MATH関数とFLOOR関数の違いは、負の数の扱いに集中しています。正の数では結果は同じですよ。
正の数での比較
| 数式 | 結果 |
|---|---|
| =FLOOR(1280, 100) | 1200 |
| =FLOOR.MATH(1280, 100) | 1200 |
正の数ではどちらも同じ結果です。
負の数での比較
ここが2つの関数の大きな違いです。「-1280」を100単位で丸めてみましょう。
| 数式 | 結果 | 方向 |
|---|---|---|
| =FLOOR(-1280, -100) | -1200 | 0に近づく |
| =FLOOR.MATH(-1280, 100) | -1300 | 0から離れる(デフォルト) |
| =FLOOR.MATH(-1280, 100, 1) | -1200 | 0に近づく |
FLOOR関数で負の数を扱うには「負の基準値」を指定する必要があります。正の基準値を指定すると#NUM!エラーです。
一方、FLOOR.MATH関数は基準値を正のまま使えます。第3引数のモードで方向を切り替えるだけですよ。
どちらを使うべき?
- 正の数だけ扱う → どちらでもOK
- 負の数も扱う → FLOOR.MATH関数がおすすめ
- Excel 2010以前を使っている → FLOOR関数のみ利用可能
似た関数との違い・使い分け
Excelには切り上げ・切り捨て系の関数が多数あります。用途に応じて使い分けましょう。詳しくは丸め関数10種の完全比較もあわせてご覧ください。
| 関数 | 丸め方 | 第2引数 | 負の数の扱い |
|---|---|---|---|
| FLOOR.MATH | 倍数の方向へ切り捨て | 基準値(倍数) | mode引数で方向制御 |
| FLOOR | 倍数の方向へ切り捨て | 基準値(倍数) | 負の基準値が必要 |
| FLOOR.PRECISE | 常に小さい方向へ切り捨て | 基準値(倍数) | 常に負方向(方向制御なし) |
| CEILING.MATH | 倍数の方向へ切り上げ | 基準値(倍数) | mode引数で方向制御 |
| ROUND | 四捨五入 | 桁数 | 正負どちらも対応 |
| ROUNDDOWN | 常に切り捨て | 桁数 | 0に近づく方向 |
| INT | 整数に切り捨て | なし | 常に小さい方向 |
| TRUNC | 小数部を切り捨て | 桁数 | 0に近づく方向 |
FLOOR.MATHとFLOOR.PRECISEの使い分け
どちらも負の数を「小さい方向」に切り捨てられます。ただし仕組みが異なります。
- FLOOR.MATH: mode引数で方向を切り替えられる(mode=0が小さい方向、mode≠0が大きい方向)
- FLOOR.PRECISE: 常に負方向(小さい方向)に固定
「負の数は常に小さい方向に切り捨てたい」ならFLOOR.PRECISEがシンプルです。「場面によって方向を切り替えたい」ならFLOOR.MATHを選びましょう。
FLOOR.PRECISEはmode引数を持たないぶん、誤って方向を間違える事故が起きにくいのも利点ですよ。詳しい比較はFLOOR/CEILING系6関数の違いを参考にしてみてください。
FLOOR.MATHとROUNDDOWNの使い分け
どちらも「切り捨て」ですが、指定方法が異なります。
- FLOOR.MATH: 「倍数」で指定(100単位、500単位など)
- ROUNDDOWN: 「桁数」で指定(小数第2位、10の位など)
500円単位の切り捨てならFLOOR.MATH、小数第1位での切り捨てならROUNDDOWNが向いています。
FLOOR.MATHとINT・TRUNCの使い分け
整数化したいだけならINTやTRUNCも候補に入ります。
- FLOOR.MATH: 倍数で切り捨て。整数化なら基準値省略でOK
- INT: 整数への切り捨て。負の数は常に小さい方向(FLOOR.MATHのmode=0と同じ)
- TRUNC: 小数部を捨てる。負の数は常に0に近づく方向(FLOOR.MATHのmode=1と同じ)
「100単位で丸める」のように倍数指定が必要ならFLOOR.MATH、純粋な整数化ならINTかTRUNCで十分ですよ。
FLOOR.MATHとCEILING.MATHの関係
FLOOR.MATHは切り捨て、CEILING.MATHは切り上げです。引数の構造はまったく同じで、丸める方向だけが反対です。
=FLOOR.MATH(1234, 100) → 1200(切り捨て)
=CEILING.MATH(1234, 100) → 1300(切り上げ)
原価は切り捨て、予算は切り上げ、というように使い分けると便利ですよ。
丸め関数の使い分けをもっと詳しく知りたい方は端数処理の関数選びガイドも参考にしてみてください。
TIP
Googleスプレッドシートでも同じ関数が使えます。スプレッドシート版の解説はスプレッドシートのFLOOR.MATH関数の使い方をご覧ください。
まとめ
FLOOR.MATH関数は、数値を指定した倍数の方向へ切り捨てる関数です。FLOOR関数との最大の違いは、負の数の扱いですよ。
ポイントを整理します。
- 構文は
=FLOOR.MATH(数値, [基準値], [モード])の3引数 - Excel 2013以降で利用可能(Microsoft 365 / Excel 2016以降ですべて使える)
- 正の数ではFLOOR関数と結果は同じ
- 負の数ではモード引数で方向を制御できる(デフォルトは0から離れる方向)
- 基準値の符号を気にせず使えるので、正負混在データに便利
- FLOOR.PRECISE関数は常に負方向固定、FLOOR.MATHはモードで方向切替
- CEILING.MATH関数はペアの切り上げ関数
- ROUNDDOWN関数は桁数指定、FLOOR.MATHは倍数指定の切り捨て
まずは =FLOOR.MATH(A1, 100) で100単位の切り捨てから試してみてください。正の数だけならFLOOR関数でも同じ結果ですが、負の数が出てきたときにFLOOR.MATHなら安心ですよ。
