ExcelのFLOOR/CEILING系6関数の違い|MATH・PRECISEの使い分け

スポンサーリンク

ExcelのFLOOR/CEILING系6関数の違い|MATH・PRECISEの使い分け

ExcelのFLOOR系・CEILING系には、旧関数と後継関数を合わせて6種類もあります。「FLOOR.MATHとFLOOR.PRECISEは何が違うの?」「結局どれを使えばいい?」と迷いますよね。

さらに厄介なのが、旧関数と新関数で 負の数の丸め方向が異なる 点です。テンプレートを引き継いで関数を入れ替えたら、請求金額や原価計算の結果がずれていた、というトラブルにつながります。

この記事では、6関数の違いを 「負の数での丸め方向」「第2引数の省略」「対応バージョン」 の3つの軸で整理します。実務での選び方、旧→新関数への安全な置き換え手順、業種別の活用例、よくある質問までまとめたので、もう迷わなくなりますよ。

  1. FLOOR/CEILING系6関数の違い【結論早見表】
  2. FLOOR系3関数の基本と特徴
    1. FLOOR関数(旧関数・Excel 2003〜)
    2. FLOOR.MATH関数(Excel 2013〜・推奨)
    3. FLOOR.PRECISE関数(Excel 2010〜)
  3. CEILING系3関数の基本と特徴
    1. CEILING関数(旧関数・Excel 2003〜)
    2. CEILING.MATH関数(Excel 2013〜・推奨)
    3. CEILING.PRECISE関数(Excel 2010〜)
  4. FLOOR/CEILING系6関数を3つの軸で徹底比較
    1. 比較軸1: 負の数での丸め方向
    2. 比較軸2: 第2引数(基準値)省略時の挙動
    3. 比較軸3: 対応バージョンと互換性
  5. 「旧ファイルで結果が変わった」トラブルと修正方法
    1. トラブルが起きる原因
    2. トラブル別の対処早見表
    3. 修正方法: 旧関数を新関数に正しく置き換える
    4. 置き換え手順(Ctrl+H で一括置換)
  6. FLOOR/CEILING系6関数の場面別おすすめ
    1. FLOOR.MATH / CEILING.MATH を使うべきケース
    2. FLOOR.PRECISE / CEILING.PRECISE を使うべきケース
    3. 旧 FLOOR / CEILING を使い続けてよいケース
  7. 業種・業務別の実務活用例
    1. 経理・会計: 請求金額・税額の丸め
    2. 人事・労務: 勤怠時間の15分単位丸め
    3. 在庫・物流: ケース入数に基づく発注数計算
    4. 小売・EC: ポイント還元・価格帯の集計
    5. 製造・品質管理: 公差・規格値の判定
  8. VBA・Power Query での FLOOR/CEILING
    1. VBA から呼び出す
    2. Power Query での代替
    3. スピル対応(Microsoft 365)
  9. よくある質問(FAQ)
    1. Q1. 結局、6つのうちどれを覚えればいい?
    2. Q2. FLOOR.MATH と FLOOR.PRECISE はどちらが新しい?
    3. Q3. 正の数だけを扱うなら、結果はすべて同じ?
    4. Q4. FLOOR.MATH の第3引数「モード」は数値の大きさで挙動が変わる?
    5. Q5. ROUND系と FLOOR/CEILING系の違いは?
    6. Q6. ISO.CEILING と CEILING.PRECISE はどちらを使うべき?
    7. Q7. VBA で Application.WorksheetFunction.FloorMath と書いたらエラーになります
    8. Q8. Power Query で FLOOR.MATH と同じ処理をしたい
    9. Q9. 旧ファイルで #NUM! になっている数式を一括修正したい
    10. Q10. Google スプレッドシートとの互換性は?
    11. Q11. INT・TRUNC との違いは?
    12. Q12. MROUND との違いは?
  10. まとめ
    1. 関連記事

FLOOR/CEILING系6関数の違い【結論早見表】

まずは結論です。6関数の役割と特徴を一覧でまとめました。

関数名方向引数第2引数の省略負の数の丸め対応バージョン
FLOOR切り捨て2個(必須)不可0方向(符号一致が必須)Excel 2003〜
FLOOR.MATH切り捨て3個(1個必須)可(既定1)第3引数で −∞ / 0方向を選択Excel 2013〜
FLOOR.PRECISE切り捨て2個(1個必須)可(既定1)常に −∞方向で固定Excel 2010〜
CEILING切り上げ2個(必須)不可0から遠ざかる方向(符号一致が必須)Excel 2003〜
CEILING.MATH切り上げ3個(1個必須)可(既定1)第3引数で +∞ / 0から遠ざかる方向を選択Excel 2013〜
CEILING.PRECISE切り上げ2個(1個必須)可(既定1)常に +∞方向で固定Excel 2010〜

ひと言でまとめると、新しいファイルには FLOOR.MATH と CEILING.MATH を使うのがおすすめ です。引数を省略できて、負の数の丸め方向も柔軟に制御できます。

ペア記事のご案内

丸め関数10種の全体像は「Excelの丸め関数10種を完全比較|ROUND・INT・CEILINGの使い分け早見表」で整理しています。端数処理の実務パターンは「Excel端数処理の関数選び|消費税・時間・金額のシーン別早見表」もあわせてどうぞ。

FLOOR系3関数の基本と特徴

FLOOR系は「切り捨て」方向、つまり数値を基準値の倍数のうち より小さい(または等しい)方 に丸める関数グループです。3関数の違いを順に見ていきましょう。

FLOOR関数(旧関数・Excel 2003〜)

=FLOOR(数値, 基準値)

旧来からある切り捨て関数です。数値を基準値の倍数に切り捨てます。

特徴:

  • 第2引数(基準値)は省略できません
  • 負の数を扱うとき、数値と基準値の符号を揃える必要があります
  • 符号が異なると #NUM! エラーになります
=FLOOR(17, 5)    → 15  (17を5の倍数で切り捨て)
=FLOOR(2.7, 1)   → 2   (整数に切り捨て)
=FLOOR(-4.3, -1) → -4  (0に向かって切り捨て)
=FLOOR(-4.3, 1)  → #NUM!エラー(符号不一致)

FLOOR関数の制約

負の数を扱うには基準値にも負の符号を付ける必要があります。この不便さを解消するために登場したのが、後述の FLOOR.MATH と FLOOR.PRECISE です。

FLOOR.MATH関数(Excel 2013〜・推奨)

=FLOOR.MATH(数値, [基準値], [モード])

FLOOR関数の後継として導入された関数です。使い勝手が大幅に改善されています。

特徴:

  • 第2引数を省略すると基準値1(整数への切り捨て)になります
  • 第3引数(モード)で負の数の丸め方向を制御できます
  • 数値と基準値の符号が異なってもエラーになりません
=FLOOR.MATH(17, 5)        → 15  (正の数は旧FLOORと同じ)
=FLOOR.MATH(2.7)          → 2   (第2引数省略で整数に切り捨て)
=FLOOR.MATH(-4.3, 1)      → -5  (−∞方向に丸め:既定の動作)
=FLOOR.MATH(-4.3, 1, 1)   → -4  (0に向かって丸め:モード指定)

第3引数(モード)の使い分けは次のとおりです。

モード負の数の丸め方向例(−4.3を1で丸め)
0 または省略−∞方向(数直線の左、絶対値が大きくなる)−5
0以外の数値(1など)0方向(絶対値が小さくなる、旧FLOOR相当)−4

ポイントは「0または省略 vs 0以外」で挙動が決まる点です。指定する数値の大小は関係なく、0かそれ以外か、だけが判定されます。

FLOOR.PRECISE関数(Excel 2010〜)

=FLOOR.PRECISE(数値, [基準値])

基準値の符号を無視して、常にマイナス無限大方向に丸める関数です。

特徴:

  • 第2引数を省略すると基準値1になります
  • 基準値に負の数を指定しても絶対値が使われます
  • 丸め方向は常に −∞方向(数直線の左)で固定です
=FLOOR.PRECISE(17, 5)     → 15  (正の数は旧FLOORと同じ)
=FLOOR.PRECISE(2.7)        → 2   (整数に切り捨て)
=FLOOR.PRECISE(-4.3, 1)    → -5  (常に−∞方向)
=FLOOR.PRECISE(-4.3, -1)   → -5  (基準値の符号は無視される)

FLOOR.MATH と FLOOR.PRECISE の違い

正の数のみを扱うなら、両者の結果は完全に同じです。違いが出るのは「負の数を扱い、0方向に丸めたい」場面のみで、その場合は FLOOR.MATH の第3引数(モード)が便利です。PRECISE は常に −∞方向で固定されます。

CEILING系3関数の基本と特徴

CEILING系は「切り上げ」方向、つまり数値を基準値の倍数のうち より大きい(または等しい)方 に丸める関数グループです。FLOOR系と対になる構成です。

CEILING関数(旧関数・Excel 2003〜)

=CEILING(数値, 基準値)

旧来からある切り上げ関数です。数値を基準値の倍数に切り上げます。

特徴:

  • 第2引数(基準値)は省略できません
  • 負の数を扱うとき、数値と基準値の符号を揃える必要があります
  • 符号が異なると #NUM! エラーになります
=CEILING(12, 5)    → 15  (12を5の倍数で切り上げ)
=CEILING(2.1, 1)   → 3   (整数に切り上げ)
=CEILING(-4.3, -1) → -5  (0から遠ざかる方向に切り上げ)
=CEILING(-4.3, 1)  → #NUM!エラー(符号不一致)

CEILING.MATH関数(Excel 2013〜・推奨)

=CEILING.MATH(数値, [基準値], [モード])

CEILING関数の後継です。FLOOR.MATH と対称的な設計になっています。

特徴:

  • 第2引数を省略すると基準値1(整数への切り上げ)になります
  • 第3引数(モード)で負の数の丸め方向を制御できます
  • 符号が異なってもエラーになりません
=CEILING.MATH(12, 5)       → 15  (正の数は旧CEILINGと同じ)
=CEILING.MATH(2.1)         → 3   (第2引数省略で整数に切り上げ)
=CEILING.MATH(-4.3, 1)     → -4  (+∞方向に丸め:既定の動作)
=CEILING.MATH(-4.3, 1, 1)  → -5  (0から遠ざかる方向:モード指定)

第3引数(モード)の使い分けは次のとおりです。

モード負の数の丸め方向例(−4.3を1で丸め)
0 または省略+∞方向(数直線の右、絶対値が小さくなる)−4
0以外の数値(1など)0から遠ざかる方向(絶対値が大きくなる、旧CEILING相当)−5

CEILING.PRECISE関数(Excel 2010〜)

=CEILING.PRECISE(数値, [基準値])

基準値の符号を無視して、常にプラス無限大方向に丸める関数です。

特徴:

  • 第2引数を省略すると基準値1になります
  • 基準値に負の数を指定しても絶対値が使われます
  • 丸め方向は常に +∞方向(数直線の右)で固定です
=CEILING.PRECISE(12, 5)    → 15  (正の数は旧CEILINGと同じ)
=CEILING.PRECISE(2.1)      → 3   (整数に切り上げ)
=CEILING.PRECISE(-4.3, 1)  → -4  (常に+∞方向)
=CEILING.PRECISE(-4.3, -1) → -4  (基準値の符号は無視される)

ISO.CEILING関数について

ISO.CEILING関数 は CEILING.PRECISE と完全に同じ動作をします。ISO/IEC 26300 規格との互換性のために両方の名前が用意されているだけで、引数も結果も完全に同一です。Excel では CEILING.PRECISE、LibreOffice Calc では ISO.CEILING が使われがちですが、どちらを使っても結果は変わりません。

FLOOR/CEILING系6関数を3つの軸で徹底比較

ここからは、6関数の違いを3つの軸で詳しく見ていきます。「負の数での丸め方向」「第2引数省略時の挙動」「対応バージョン」の順に整理します。

比較軸1: 負の数での丸め方向

6関数の最大の違いは、負の数を丸めたときの動きです。−4.3 を基準値1で丸めた結果を比べてみましょう。

FLOOR系(切り捨て方向):

関数(呼び出し例)結果丸め方向
=FLOOR(-4.3, 1)#NUM!符号不一致でエラー
=FLOOR(-4.3, -1)−40方向(絶対値が小さい)
=FLOOR.MATH(-4.3)−5−∞方向(既定)
=FLOOR.MATH(-4.3, 1, 1)−40方向(モード指定)
=FLOOR.PRECISE(-4.3)−5常に −∞方向

CEILING系(切り上げ方向):

関数(呼び出し例)結果丸め方向
=CEILING(-4.3, 1)#NUM!符号不一致でエラー
=CEILING(-4.3, -1)−50から遠ざかる
=CEILING.MATH(-4.3)−4+∞方向(既定)
=CEILING.MATH(-4.3, 1, 1)−50から遠ざかる(モード指定)
=CEILING.PRECISE(-4.3)−4常に +∞方向

ポイントを整理 すると次のようになります。

  • 旧関数(FLOOR/CEILING): 負の数を扱うには基準値の符号を揃える必要あり。同符号時は「0に向かう」丸め方向
  • MATH系: 既定では数直線の自然な方向に丸める(FLOORは−∞方向、CEILINGは+∞方向)。第3引数を1にすると旧関数と同じ動きも選べる
  • PRECISE系: 常に数直線の自然な方向で固定。方向は変更不可

正の数だけなら結果は同じ

正の数(0以上)を扱う場合、6関数すべてで結果が一致します。違いが出るのは負の数を扱うときだけです。勤怠の時間計算や金額の丸めなど、正の数だけを扱う実務では旧関数を残していても問題はありません。

比較軸2: 第2引数(基準値)省略時の挙動

関数第2引数の省略省略時の動作
FLOOR不可エラー
FLOOR.MATH基準値1(整数への切り捨て)
FLOOR.PRECISE基準値1(整数への切り捨て)
CEILING不可エラー
CEILING.MATH基準値1(整数への切り上げ)
CEILING.PRECISE基準値1(整数への切り上げ)

MATH系とPRECISE系は第2引数を省略できます。「整数に丸めたいだけ」のシーンでシンプルに書けるので、コードもセル数式も読みやすくなります。

=FLOOR.MATH(4.7)     → 4   (旧FLOORでは =FLOOR(4.7, 1) と書く必要あり)
=CEILING.MATH(4.2)   → 5   (旧CEILINGでは =CEILING(4.2, 1) と書く必要あり)

整数に丸めるだけなら INT 関数(常に −∞方向)や TRUNC 関数(0方向)も候補ですが、「5の倍数に丸めたい」「100円単位に丸めたい」のような 任意の倍数 に対応できるのは FLOOR/CEILING 系の強みです。

比較軸3: 対応バージョンと互換性

関数導入バージョンMicrosoft 365Excel 2019/2021Excel 2016Excel 2013Excel 2010
FLOORExcel 2003対応対応対応対応対応
FLOOR.MATHExcel 2013対応対応対応対応非対応
FLOOR.PRECISEExcel 2010対応対応対応対応対応
CEILINGExcel 2003対応対応対応対応対応
CEILING.MATHExcel 2013対応対応対応対応非対応
CEILING.PRECISEExcel 2010対応対応対応対応対応

Excel 2010ユーザーへ

FLOOR.MATH と CEILING.MATH は Excel 2010 では使えません。Excel 2010 環境が残っている場合は、FLOOR.PRECISE / CEILING.PRECISE を使うか、旧関数のままにしておく方が安全です。新関数を使った Excel 2013 以降で作成したファイルを Excel 2010 で開くと #NAME? エラーになる点も覚えておきましょう。

Google スプレッドシート互換

6関数すべて Google スプレッドシートでも利用できます。FLOOR.MATH の第3引数の解釈も Excel と Google Sheets で一致しているので、相互運用の心配はほぼありません。ただし xlsx ファイルを Sheets で開いて保存し直すと、稀に旧関数 → MATH 系へ自動変換されるケースがあるため、計算結果は念のため照合しておきましょう。

「旧ファイルで結果が変わった」トラブルと修正方法

「昔作ったファイルで計算結果が変わっていた」「経理担当が引き継いだら請求金額がズレていた」というケースがあります。原因と対処法を整理しましょう。

トラブルが起きる原因

旧 FLOOR/CEILING 関数自体は、新しい Excel バージョンでも動作が変わりません。ファイルを開いただけで結果が勝手に変わることは基本的にありません。

ただし、次のケースでは結果がずれる可能性があります。

  • 手動で関数名を書き換えた場合: FLOOR を FLOOR.MATH に置き換えると、負の数の既定の丸め方向が変わります(0方向 → −∞方向)
  • テンプレートの更新: 社内テンプレートが新関数に差し替わっていると、旧シートからコピーした数式との整合性が崩れます
  • Google スプレッドシートとの往復: xlsx → Sheets → xlsx の経路で保存し直すと、互換関数への自動変換が起きるケースがあります
  • VBA マクロでの一括置換ミス: 文字列置換で FLOORFLOOR.MATH に変えると、既存の FLOOR.MATH まで FLOOR.MATH.MATH のように壊れることがあります
  • 配列数式・スピル範囲の混入: Microsoft 365 で配列の中に負の数と基準値の符号不一致があると、旧 FLOOR/CEILING は配列全体がエラーになります

トラブル別の対処早見表

症状想定原因対処
#NUM! エラー旧 FLOOR/CEILING で数値と基準値の符号が不一致FLOOR.MATH / CEILING.MATH に置き換える
#NAME? エラーExcel 2010 以前で FLOOR.MATH / CEILING.MATH を使用FLOOR.PRECISE / CEILING.PRECISE に置き換える
負の数の結果が −1 ズレる旧→新で丸め方向が変わったFLOOR.MATH の第3引数に1を指定(旧と同じ0方向)
整数に丸める数式が動かない旧 FLOOR/CEILING で第2引数を省略基準値1を明示するか、MATH系に置き換える
配列全体が #NUM!配列内に符号不一致が混入FLOOR.MATH / CEILING.MATH 系に置き換える

修正方法: 旧関数を新関数に正しく置き換える

移行のポイントは、負の数での挙動を維持するかどうか です。

FLOOR → FLOOR.MATH への置き換え:

旧数式新数式(−∞方向)新数式(0方向=旧と同じ動き)
=FLOOR(A1, 5)=FLOOR.MATH(A1, 5)=FLOOR.MATH(A1, 5)
=FLOOR(-A1, -5)=FLOOR.MATH(A1, 5)=FLOOR.MATH(A1, 5, 1)

正の数のみなら、そのまま置き換えて問題ありません。負の数を扱う場合は、第3引数に1を指定すると旧関数と同じ動きになります。

CEILING → CEILING.MATH への置き換え:

旧数式新数式(+∞方向)新数式(0から遠ざかる=旧と同じ動き)
=CEILING(A1, 5)=CEILING.MATH(A1, 5)=CEILING.MATH(A1, 5)
=CEILING(-A1, -5)=CEILING.MATH(A1, 5)=CEILING.MATH(A1, 5, 1)

考え方は FLOOR 側と同じです。正の数だけなら置き換えるだけ、負の数も扱うなら第3引数で挙動を制御します。

置き換え手順(Ctrl+H で一括置換)

数式をまとめて置き換えるには、Excel の「検索と置換」機能を使います。

  1. Ctrl + H で「検索と置換」ダイアログを開く
  2. 「オプション」→「数式」を検索対象に指定(結果値ではなく数式を置換するため)
  3. 「検索する文字列」に FLOOR( と入力
  4. 「置換後の文字列」に FLOOR.MATH( と入力
  5. 「すべて置換」をクリック
  6. CEILING 側も同様に CEILING(CEILING.MATH( で置換

一括置換の注意点

FLOOR( で検索すると、既存の FLOOR.MATH(FLOOR.PRECISE( もヒットしてしまいます。置換後に FLOOR.MATH.MATH( のような二重変換が起きていないか、数式バーで必ず確認してください。心配な場合は「すべて置換」の前に「次を検索」でひとつずつ確認しましょう。

シートのバックアップを取ってから実行するのも忘れずに。間違えても Ctrl+Z で戻せますが、保存後に気づくと修復が大変です。

FLOOR/CEILING系6関数の場面別おすすめ

どの関数を使うべきか迷ったときの判断基準です。「迷ったらFLOOR.MATH / CEILING.MATH」を覚えておけば、ほとんどの場面で困りません。

FLOOR.MATH / CEILING.MATH を使うべきケース

  • Excel 2013 以降の環境で新しいファイルを作る すべての場合
  • 負の数を扱う可能性がある場合
  • 引数を省略してシンプルに書きたい場合
  • 旧関数の #NUM! エラーを避けたい場合
  • 第3引数で丸め方向を制御したい場合

これが最もおすすめの選択肢です。 迷ったら FLOOR.MATH / CEILING.MATH を選んでください。

FLOOR.PRECISE / CEILING.PRECISE を使うべきケース

  • Excel 2010 環境で動かす必要がある場合
  • 負の数を常に数直線方向(−∞ / +∞)に丸めたい場合(方向を変える必要がない場合)
  • 数学的・統計的な厳密さを重視するレポート(IEEE 754 の roundTowardNegative / roundTowardPositive と対応)

旧 FLOOR / CEILING を使い続けてよいケース

  • Excel 2010 以前の環境との互換性を維持する必要がある場合
  • 正の数しか扱わないファイルで、わざわざ数式を変える必要がない場合
  • 社内の共有テンプレートで旧関数が標準になっている場合

移行はファイル単位で段階的に

全ファイルを一気に新関数に切り替える必要はありません。新しく作るファイルは FLOOR.MATH / CEILING.MATH を使い、既存ファイルは問題が出たときに対応する、という段階的な移行がおすすめです。

業種・業務別の実務活用例

実務でどう使えるかを具体的に見ていきましょう。

経理・会計: 請求金額・税額の丸め

=CEILING.MATH(税抜金額, 100)    → 100円単位で切り上げ請求
=FLOOR.MATH(税抜金額 * 0.1)     → 消費税の1円未満切り捨て(標準的な処理)
=FLOOR.MATH(税抜金額 * 1.1)     → 税込金額の1円未満切り捨て

請求書では「100円単位切り上げ」「1円未満切り捨て」が定番です。CEILING.MATH と FLOOR.MATH を組み合わせると、社内ルールに合わせた金額調整を一行で書けます。

人事・労務: 勤怠時間の15分単位丸め

=FLOOR.MATH(終業時刻 - 始業時刻 - 休憩時間, "0:15")

時刻シリアル値は 1 = 24時間 の比率なので、"0:15" をそのまま基準値に渡せます。「15分単位で切り捨て」「30分単位で切り上げ」など、就業規則に合わせて自由に設定できます。

在庫・物流: ケース入数に基づく発注数計算

=CEILING.MATH(注文数, ケース入数)        → 必要なケース数 × ケース入数
=CEILING.MATH(注文数 / ケース入数)        → 必要なケース数(整数)

「12個入りの段ボールで100個発注したい場合、何ケース注文するか」のような計算が一発で求まります。CEILING.MATH なら基準値が動的でも安定して動きます。

小売・EC: ポイント還元・価格帯の集計

=FLOOR.MATH(購入金額 / 100)            → 100円ごとに1ポイント
=FLOOR.MATH(価格, 1000)                 → 1000円刻みの価格帯で集計
=CEILING.MATH(価格, 500) - 1            → 「499円」「999円」のような価格設定

価格帯ごとの売上分析では FLOOR.MATH が便利です。ピボットテーブルのグループ化と相性が良く、固定の刻み幅でビニング(区間化)できます。

製造・品質管理: 公差・規格値の判定

=CEILING.MATH(測定値, 0.01)            → 0.01mm単位で切り上げ(公差上限の判定)
=FLOOR.MATH(測定値, 0.01)              → 0.01mm単位で切り捨て(公差下限の判定)

製造現場では「規格値以上であること」を保証するために CEILING.MATH で切り上げて判定するパターンが多用されます。

VBA・Power Query での FLOOR/CEILING

VBA から呼び出す

VBA では Application.WorksheetFunction 経由で呼び出します。ピリオド(.)はアンダースコア(_)に置き換える 点に注意してください。

Dim result As Double
result = Application.WorksheetFunction.Floor_Math(-4.3, 1, 1)   ' → -4
result = Application.WorksheetFunction.Ceiling_Math(2.1)         ' → 3
result = Application.WorksheetFunction.Floor_Precise(-4.3)       ' → -5
result = Application.WorksheetFunction.Iso_Ceiling(-4.3)         ' → -4

旧 FLOOR / CEILING は Floor(value, significance) / Ceiling(value, significance) で呼び出せますが、引数チェックのため Excel 関数と同じく符号一致が必要です。

Power Query での代替

Power Query の M 言語には FLOOR.MATH 相当の直接関数がありません。倍数丸めは次のように書きます。

// 切り捨て(基準値 5)
each Number.RoundDown([金額] / 5) * 5

// 切り上げ(基準値 100)
each Number.RoundUp([金額] / 100) * 100

Number.RoundDown / Number.RoundUp は0方向への丸めなので、負の数を扱う場合は別途条件分岐が必要です。Power Query で複雑な丸めをするくらいなら、Excel シート側で FLOOR.MATH / CEILING.MATH を使う方がシンプルになることが多いです。

スピル対応(Microsoft 365)

6関数すべて配列入力に対応しています。Microsoft 365 では次のように範囲をそのまま渡せます。

=FLOOR.MATH(A1:A10, 5)        → A1〜A10をそれぞれ5の倍数で切り捨てた配列
=CEILING.MATH(B1:B10, 100)    → B1〜B10をそれぞれ100の倍数で切り上げた配列

ただし旧 FLOOR / CEILING を配列で使うと、配列内に符号不一致がひとつでもあると配列全体が #NUM! になります。配列処理が前提なら MATH 系または PRECISE 系の利用をおすすめします。

よくある質問(FAQ)

Q1. 結局、6つのうちどれを覚えればいい?

最低限 FLOOR.MATH と CEILING.MATH の2つ で十分です。Excel 2010 環境を扱うなら FLOOR.PRECISE / CEILING.PRECISE も覚えておくと安心。旧 FLOOR / CEILING は既存ファイルで見かけたときに「読める」程度で問題ありません。

Q2. FLOOR.MATH と FLOOR.PRECISE はどちらが新しい?

導入時期は FLOOR.PRECISE(Excel 2010)→ FLOOR.MATH(Excel 2013) の順です。PRECISE が先に登場し、その後より柔軟な MATH 系が追加されました。

Q3. 正の数だけを扱うなら、結果はすべて同じ?

そのとおりです。正の数(0以上)の場合、6関数のうちエラーになる旧 FLOOR/CEILING の符号不一致パターンを除き、結果は完全に一致します。

Q4. FLOOR.MATH の第3引数「モード」は数値の大きさで挙動が変わる?

いいえ、「0かどうか」だけ で決まります。FLOOR.MATH(-4.3, 1, 1)FLOOR.MATH(-4.3, 1, 999)FLOOR.MATH(-4.3, 1, -1) も、すべて結果は −4 です。

Q5. ROUND系と FLOOR/CEILING系の違いは?

ROUND は四捨五入、FLOOR/CEILING任意の倍数への切り捨て・切り上げ です。「100円単位に丸めたい」「15分単位に丸めたい」のような 倍数刻みの丸め が必要な場面で FLOOR/CEILING を選びます。詳細はExcelの丸め関数10種を完全比較で整理しています。

Q6. ISO.CEILING と CEILING.PRECISE はどちらを使うべき?

結果は完全に同じ です。Excel での慣習で言えば CEILING.PRECISE が一般的、LibreOffice や ODF 互換を意識するなら ISO.CEILING、と使い分けてください。社内テンプレートで統一されている方を使えば問題ありません。

Q7. VBA で Application.WorksheetFunction.FloorMath と書いたらエラーになります

VBA では Floor_Mathアンダースコア区切り)が正しい名前です。Excel 関数のピリオド ._ に置き換える、と覚えておきましょう。

Q8. Power Query で FLOOR.MATH と同じ処理をしたい

M 言語に直接の関数はありません。Number.RoundDown([列] / 基準) * 基準 のように手計算します。複雑な丸めなら、Power Query で取り込んだ後にシート側で FLOOR.MATH を使う方が読みやすくなります。

Q9. 旧ファイルで #NUM! になっている数式を一括修正したい

Ctrl + HFLOOR(FLOOR.MATH( に置換するのが最速です。ただし既存の FLOOR.MATH( まで FLOOR.MATH.MATH( になる二重変換に注意してください。事前にシートのバックアップを取り、置換後に =COUNTIFCtrl + FMATH.MATH を検索して二重変換が発生していないか確認しましょう。

Q10. Google スプレッドシートとの互換性は?

6関数すべて Google スプレッドシートでも動作します。FLOOR.MATH の第3引数の解釈も一致しているので、xlsx を Sheets で開いて編集→保存しても結果は変わらないはずです。ただし保存経路によっては関数名が自動変換されることがあるため、計算結果は必ず照合してください。

Q11. INT・TRUNC との違いは?

INT は常に −∞方向への丸め(負の数で 0方向ではない)、TRUNC は常に 0方向への丸め(小数点切り捨て)です。どちらも 整数化専用 で、任意の倍数への丸めはできません。倍数刻みの丸めが必要なら FLOOR.MATH / CEILING.MATH を使ってください。

Q12. MROUND との違いは?

MROUND関数 は「最も近い倍数への 四捨五入」を行います。FLOOR/CEILING は切り捨て・切り上げの一方向、MROUND はどちらか近い方、という使い分けです。

まとめ

FLOOR/CEILING系6関数の使い分けをおさらいします。

判断ポイントおすすめ関数
新規ファイル(Excel 2013〜)FLOOR.MATH / CEILING.MATH
Excel 2010 環境が残っているFLOOR.PRECISE / CEILING.PRECISE
旧ファイルで正の数のみ使用旧 FLOOR / CEILING のままで OK
負の数で丸め方向を制御したいFLOOR.MATH / CEILING.MATH(第3引数)
負の数で −∞ / +∞方向に固定したいFLOOR.PRECISE / CEILING.PRECISE
ISO 規格を意識するレポートISO.CEILING(または CEILING.PRECISE)

基本方針は「FLOOR.MATH / CEILING.MATH を使う」 です。引数を省略でき、負の数も柔軟に制御できます。正の数だけを扱う既存ファイルなら、旧関数のままでも問題ありません。

丸め関数の全体像は「Excelの丸め関数10種を完全比較」で確認できます。実務シーン別の選び方は「Excel端数処理の関数選び」もどうぞ。

関連記事

FLOOR/CEILING系の各関数を詳しく知りたい場合は、個別の解説記事をどうぞ。

丸め関数の全体像と端数処理の実務ガイドもあわせてどうぞ。

タイトルとURLをコピーしました