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