「負の数を切り捨てたら、なぜか期待と逆の結果になった」。そんな経験はありませんか?
FLOOR関数は、正の数では問題なく切り捨ててくれます。でも負の数になると「どちらが切り捨て?」と混乱しがちです。
そこで使いたいのがFLOOR.MATH関数です。正の数でも負の数でも、常に「小さい方向」に切り捨ててくれます。さらに第3引数のmodeで方向を切り替えることもできます。
この記事では基本の書き方からFLOOR関数との違い、実務での使いどころまで紹介します。
FLOOR.MATH関数とは?
FLOOR.MATH関数(読み方: フロア マス関数)は、数値を指定した倍数の方向へ切り捨てる関数です。
名前の「MATH」は「Mathematics(数学)」の略です。FLOOR関数の改良版で、負の数の扱いが違います。
FLOOR関数との最大の違いは「負の数の切り捨て方向」です。FLOOR関数は負の数に負の倍数を指定する必要があります。一方、FLOOR.MATH関数は正の倍数のまま使えます。mode引数で方向を制御できるのもポイントです。
FLOOR.MATH関数にできることをまとめると、次のとおりです。
- 正の数を指定した倍数の方向へ切り捨てる(FLOORと同じ)
- 負の数を「小さい方向(0から離れる方向)」に切り捨てる(デフォルト)
- 負の数を「大きい方向(0に近い方向)」に切り捨てることもできる(mode指定)
- 倍数を省略すると整数に切り捨てる
NOTE
FLOOR.MATH関数はGoogleスプレッドシートの全バージョンで使えます。ExcelではExcel 2013以降で対応しています。
FLOOR.MATH関数の書き方(構文と引数)
基本構文
=FLOOR.MATH(数値, 倍数, mode)
カッコの中に「切り捨てたい数値」「倍数」「丸めの方向」を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 切り捨てたい数値やセル参照、数式 |
| 倍数 | 任意 | 切り捨てる基準となる倍数(省略時は1) |
| mode | 任意 | 負の数の丸め方向(省略時は0) |
倍数を省略すると「1」が使われます。つまり整数への切り捨てです。
modeは正の数には影響しません。負の数のときだけ動作が変わります。
| mode | 負の数の丸め方向 | 例: FLOOR.MATH(-7.3, 1, mode) |
|---|---|---|
| 0(デフォルト) | 小さい方向(0から離れる) | -8 |
| 1 | 大きい方向(0に近づく) | -7 |
TIP
modeは「0以外の値」を指定するとmode=1と同じ動作になります。0か0以外かの判定です。
基本的な使い方
正の数を整数に切り捨てる
いちばんシンプルな例です。A2に小数が入っているとします。
=FLOOR.MATH(A2)
A2が「3.7」なら結果は「3」です。倍数もmodeも省略すると、整数への切り捨てになります。これは =FLOOR(A2, 1) と同じ結果です。
正の数を100単位に切り捨てる
=FLOOR.MATH(A2, 100)
A2が「1,280」なら結果は「1,200」です。FLOOR関数と結果は同じです。正の数ではどちらを使っても変わりません。
負の数を小さい方向に切り捨てる(デフォルト)
ここからがFLOOR.MATH関数の出番です。
=FLOOR.MATH(-7.3)
結果は「-8」です。modeを省略(=0)すると、0から離れる方向に丸めます。数直線で見ると「-7.3」より小さい整数「-8」に切り捨てられます。
負の数を大きい方向に切り捨てる(mode=1)
=FLOOR.MATH(-7.3, 1, 1)
結果は「-7」です。mode=1にすると、0に近い方向に丸めます。数直線で見ると「-7.3」より大きい整数「-7」になります。
ちょうど倍数のときの動作
元の値がすでに倍数ちょうどの場合、FLOOR.MATH関数は切り捨てません。
=FLOOR.MATH(1500, 500)
結果は「1500」です。「1000」にはなりません。端数がなければ値はそのまま返ります。
FLOOR関数との違い(負の数の挙動比較)
FLOOR.MATH関数とFLOOR関数の違いは、負の数の扱いに集中しています。正の数では結果は同じです。
正の数での比較
| 数式 | 結果 |
|---|---|
| =FLOOR(1280, 100) | 1200 |
| =FLOOR.MATH(1280, 100) | 1200 |
正の数ではどちらも同じ結果です。使い分ける必要はありません。
負の数での比較
ここが2つの関数の大きな違いです。「-1280」を100単位で丸めてみましょう。
| 数式 | 結果 | 方向 |
|---|---|---|
| =FLOOR(-1280, -100) | -1300 | 0から離れる |
| =FLOOR.MATH(-1280, 100) | -1300 | 0から離れる(デフォルト) |
| =FLOOR.MATH(-1280, 100, 1) | -1200 | 0に近づく |
FLOOR関数で負の数を扱うには「負の倍数」を指定する必要があります。正の倍数を指定すると#NUM!エラーです。
一方、FLOOR.MATH関数は倍数を正のまま使えます。第3引数のmodeで方向を切り替えるだけです。
どちらを使うべき?
- 正の数だけ扱う → どちらでもOK(結果は同じ)
- 負の数も扱う → FLOOR.MATH関数がおすすめ(倍数の符号を気にしなくていい)
- Excelとの互換性を重視 → FLOOR.MATH関数(Excel 2013以降で同じ動作)
NOTE
FLOOR関数は正の値に負の倍数を指定すると#NUM!エラーになります。FLOOR.MATH関数なら倍数は常に正の値で統一できるので、エラーを避けやすいです。
CEILING.MATH関数との対比
FLOOR.MATH関数とCEILING.MATH関数はペアの関係です。切り捨てと切り上げの違いがあります。
| 数式 | 結果 | 方向 |
|---|---|---|
| =FLOOR.MATH(7.3) | 7 | 切り捨て(小さい方向) |
| =CEILING.MATH(7.3) | 8 | 切り上げ(大きい方向) |
| =FLOOR.MATH(-7.3) | -8 | 切り捨て(小さい方向) |
| =CEILING.MATH(-7.3) | -7 | 切り上げ(大きい方向) |
正の数でも負の数でも、FLOOR.MATHは常に小さい方向、CEILING.MATHは常に大きい方向に丸めます。
mode引数の違い
mode引数の「デフォルト方向」が逆になっている点に注意してください。
| mode | FLOOR.MATH | CEILING.MATH |
|---|---|---|
| 0(デフォルト) | 0から離れる方向 | 0に近づく方向 |
| 1 | 0に近づく方向 | 0から離れる方向 |
どちらもmodeを省略した状態で「数学的に直感的な方向」に動きます。切り捨て(FLOOR.MATH)は小さい方向、切り上げ(CEILING.MATH)は大きい方向です。
TIP
正の数だけ扱うなら、modeは気にしなくて大丈夫です。どちらの関数もmodeの影響を受けるのは負の数だけです。
実務で使える活用パターン
損益に負の値が含まれる集計
損益データには正の数(利益)と負の数(損失)が混在します。100円単位で切り捨てたいとき、FLOOR関数だと符号によって倍数を変える必要があります。
=FLOOR.MATH(A2, 100)
A2が「-456」なら「-500」に切り捨てられます。「567」なら「500」です。符号に関係なく同じ数式で処理できるのがメリットです。
温度データの切り捨て(氷点下を含む)
気温の記録で1度単位に切り捨てたい場合です。冬場は氷点下もあるのでFLOOR関数だと面倒です。
=FLOOR.MATH(B2)
B2が「-2.3」なら「-3」に切り捨てられます。「3.7」なら「3」です。正負どちらでも同じ数式で対応できます。
mode=1で「安全側」に丸める
在庫の過不足計算で、マイナス(不足)を小さく見積もりたいケースです。
=FLOOR.MATH(C2, 10, 1)
C2が「-23」なら「-20」になります。不足数を控えめに見積もることで過剰発注を防ぎます。
TIP
正の数だけ扱う場面ではFLOOR関数のほうがシンプルです。負の数が混在するデータではFLOOR.MATH関数を選びましょう。
よくあるエラーと対処法
FLOOR.MATH関数はFLOOR関数よりエラーが起きにくい設計ですが、注意点はあります。
| エラー | 原因 | 対処法 |
|---|---|---|
| #VALUE! | 数値や倍数に文字列が入っている | セル参照先が数値かどうか確認する |
| #ERROR! | 構文ミス(カンマ忘れ、関数名の入力ミス等) | 数式の入力内容を見直す |
| 結果が0 | 倍数に0を指定している | 0以外の倍数を指定する |
| 想定と逆の方向に丸まる | modeの指定が逆 | mode=0(小さい方向)とmode=1(大きい方向)を確認する |
FLOOR関数との違い: #NUM!エラー
FLOOR関数では「正の数 + 負の倍数」で#NUM!エラーになります。FLOOR.MATH関数ではこのパターンのエラーは発生しません。倍数の符号を気にせず使えるのがFLOOR.MATHの大きな利点です。
=FLOOR(1280, -100) → #NUM!エラー
=FLOOR.MATH(1280, -100) → 1200(エラーにならない)
倍数に0を指定したとき
倍数に0を指定すると結果は0になります。
=FLOOR.MATH(1234, 0)
結果は「0」です。倍数のセルが空や0になっていないか確認しましょう。
似た関数との違い・使い分け
スプレッドシートには切り捨て系の関数が複数あります。丸めの方向と引数の違いで使い分けましょう。
| 関数 | 丸め方 | 第2引数 | 負の数の扱い |
|---|---|---|---|
| FLOOR.MATH | 倍数の方向へ切り捨て | 倍数 | mode引数で方向制御 |
| FLOOR | 倍数の方向へ切り捨て | 倍数 | 負の倍数が必要 |
| MROUND | 最も近い倍数に丸め | 倍数 | 符号をそろえる必要あり |
| CEILING.MATH | 倍数の方向へ切り上げ | 倍数 | mode引数で方向制御 |
| CEILING | 倍数の方向へ切り上げ | 倍数 | 負の倍数が必要 |
| ROUND | 四捨五入 | 桁数 | 正負どちらも対応 |
| ROUNDUP | 常に切り上げ | 桁数 | 0から離れる方向 |
| ROUNDDOWN | 常に切り捨て | 桁数 | 0に近づく方向 |
| INT | 整数に切り捨て | なし | 常に小さい方向 |
FLOOR.MATHとFLOORの使い分け
| 場面 | おすすめ |
|---|---|
| 正の数だけ扱う | どちらでもOK |
| 負の数も扱う | FLOOR.MATH |
| 倍数の符号を統一したい | FLOOR.MATH |
| シンプルに書きたい(正の数のみ) | FLOOR |
FLOOR.MATHとROUNDDOWNの使い分け
どちらも「切り捨て」ですが、指定方法が異なります。
- FLOOR.MATH: 「倍数」で指定(100単位、500単位など)
- ROUNDDOWN: 「桁数」で指定(小数第2位、10の位など)
500円単位の切り捨てならFLOOR.MATH、小数第1位での切り捨てならROUNDDOWNが向いています。
TIP
丸め関数の個別記事もチェックしてみてください。ROUND・ROUNDUP・ROUNDDOWN・MROUND・CEILING・CEILING.MATH・FLOOR・INTで詳しく解説しています。
まとめ
FLOOR.MATH関数は、数値を指定した倍数の方向へ切り捨てる関数です。FLOOR関数との最大の違いは、負の数の扱いです。
ポイントを整理します。
- 構文は
=FLOOR.MATH(数値, 倍数, mode)の3引数 - 正の数ではFLOOR関数と結果は同じ
- 負の数ではmode引数で方向を制御できる(デフォルトは0から離れる方向)
- 倍数の符号を気にせず使えるので、正負混在データに便利
- CEILING.MATH関数はペアの切り上げ関数
- ROUNDDOWN関数は桁数指定、FLOOR.MATH関数は倍数指定の切り捨て
まずは =FLOOR.MATH(A1, 100) で100単位の切り捨てから試してみてください。正の数だけならFLOOR関数でも同じ結果ですが、負の数が出てきたときにFLOOR.MATHなら安心です。
