「FLOORで切り捨てようとしたら#NUM!が出た」「Excelから来たシートにFLOOR.PRECISEという関数がある」。スプレッドシートで金額や時間を扱っていると、こんな場面に出会いませんか。
切り捨て系の関数は、FLOOR・FLOOR.MATH・FLOOR.PRECISEと名前がそっくりです。違いを知らずに使うと、マイナスの行だけ思った数字と1つずれるミスにもつながります。
FLOOR.PRECISEは、基準値の符号を気にせず「常に小さい方へ」倍数で切り捨てる関数。この記事では、入力と結果の早見表から始めます。そのうえでFLOORとの違い、実務での使い方、思った結果にならないときの確認ポイントまで順に紹介します。
スプレッドシートのFLOOR.PRECISE関数とは?書き方と結果早見表
FLOOR.PRECISE関数(読み方: フロア・プリサイス)は、数値を指定した倍数の単位で切り捨てる関数です。「PRECISE」は英語で「正確な」という意味があります。
正の数でも負の数でも、数直線で小さい方(マイナス方向)へ切り捨てるのが特徴。Googleスプレッドシートでは、セルに数式を入れるだけでそのまま使えます。
対応バージョン: Googleスプレッドシートで利用できます。Excelは Excel 2016 以降(Microsoft 365 含む)と Web 版が対象です(Microsoft の対応表記)。
書き方と引数(数値・基準値)
構文は次のとおり。引数は2つだけで、2つ目は省略できます。
=FLOOR.PRECISE(数値, [基準値])
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 切り捨てたい数値・セル参照・数式 |
| 基準値 | 任意 | 切り捨ての単位になる倍数。省略すると1。符号は無視される |
基準値を省略すると1が使われるので、整数への切り捨てになります。また、基準値の符号は無視される仕様。-100を指定しても、100を指定したときと同じ結果が返ります。
入力と結果の早見表
よく使う入力と、FLOOR.PRECISEが返す結果を一覧にしました。マイナスの行に注目してください。
| 数式 | 結果 | ひとこと |
|---|---|---|
=FLOOR.PRECISE(5.7) | 5 | 基準値を省略すると1単位 |
=FLOOR.PRECISE(-5.7) | -6 | 負の数は小さい方へ |
=FLOOR.PRECISE(1234, 100) | 1200 | 100単位で切り捨て |
=FLOOR.PRECISE(-1234, 100) | -1300 | -1200にはならない |
=FLOOR.PRECISE(1234, -100) | 1200 | 基準値の符号は無視 |
=FLOOR.PRECISE(-3.2, -1) | -4 | 両方マイナスでも小さい方へ |
=FLOOR.PRECISE(300, 100) | 300 | ちょうど倍数ならそのまま |
=FLOOR.PRECISE(-23.25, 0.1) | -23.3 | 小数の単位も指定できる |
覚えておきたいのは、マイナスの数が「0から遠ざかる」向きに動くことです。-5.7は-5ではなく、-6になります。
この向きは、整数に切り捨てるINT関数と同じ。=INT(-5.7) も-6を返します。「基準値を省略したFLOOR.PRECISEはINTと同じ向き」と覚えると迷いにくいでしょう。
FLOOR・FLOOR.MATHとの違いと選び方
正の数を正の基準値で切り捨てるなら、3つの関数の結果は同じです。差が出るのは、負の数や負の基準値を扱うとき。ここでは違いを1つの表にまとめ、置き換え方と選び方を順に見ていきます。
3関数の比較表
| 項目 | FLOOR | FLOOR.MATH | FLOOR.PRECISE |
|---|---|---|---|
| 引数 | 2つ(数値・基準値) | 3つ(数値・基準値・mode) | 2つ(数値・基準値) |
| 基準値の符号 | 数値が正で基準値が負だとExcelでは#NUM!(※1) | 正の数で指定するのが無難 | 無視される |
| 負の数の向き | 符号の組み合わせで変わる | mode省略で0から遠ざかる(※2) | 常に0から遠ざかる |
| 基準値の省略 | 1 | 1 | 1 |
| 向きの切り替え | できない | modeでできる(※2) | できない |
※1 Excelの公式ヘルプでは、数値が正で基準値が負だと#NUM!になると説明されています。
※2 FLOOR.MATHのmodeの説明は、Microsoftの公式ヘルプに基づきます。
FLOOR.PRECISEとmodeを省略したFLOOR.MATHは、どちらも負の数を0から遠ざける向きです。基準値を正の数で指定する使い方なら、ほぼ同じ結果になると考えてよいでしょう。
FLOORで#NUM!が出たらFLOOR.PRECISEに置き換える
FLOORで#NUM!が出たら、まず基準値の符号を見てください。Excelの公式ヘルプでは、数値が正で基準値が負の組み合わせが#NUM!の原因とされています。
スプレッドシートの公式ヘルプには、#NUM!になる条件までは書かれていません。FLOOR本来の使い方と原因の詳しい確認は、スプレッドシートのFLOOR関数の記事にまとめています。
基準値の符号をそろえるのが手間なら、関数名だけを書き換えましょう。
置き換え前: =FLOOR(A2, B2)
置き換え後: =FLOOR.PRECISE(A2, B2)
FLOOR.PRECISEは基準値の符号を無視するので、B列にマイナスの値が混ざっていても基準値の符号が原因のエラーは避けられます。ただし、A列が負の数の行は「小さい方」へ切り捨てられます。
たとえば-1234を100単位にすると、結果は-1300です。0に近い-1200がほしいなら、FLOOR.PRECISEではなくROUNDDOWNやTRUNCが向いています(確認ポイントの章で紹介)。
迷ったときの選び方
迷ったら、次の3パターンで決めると早いです。
- 正の数だけを扱う: どれでも同じ結果。基準値の符号を気にしなくてよいFLOOR.PRECISEが手軽
- 負の数も小さい方へそろえたい: FLOOR.PRECISE(基準値の符号がばらばらでも動く)
- 負の数を0に近い方へ切り捨てたい: FLOOR.MATH関数でmodeを指定する
CEILING系も含めた6関数の違いは、ExcelのFLOOR/CEILING系6関数の比較記事で一覧にしています。
実務での使い方(価格・時間・損益)
ここからは、スプレッドシートでよくある3つの場面に当てはめます。どれも数式は1本。A列に元の値、B列に結果を出す形で見ていきましょう。
価格を100円単位で切り捨てる
見積もりや原価の端数を100円単位でそろえたい場面です。B2に次の数式を入れて、下へコピーします。
=FLOOR.PRECISE(A2, 100)
| 原価(A列) | 100円単位(B列) |
|---|---|
| 1,280 | 1,200 |
| 2,750 | 2,700 |
| 3,120 | 3,100 |
| 980 | 900 |
| 合計 8,130 | 合計 7,900 |
4件の合計は8,130円から7,900円になり、差は230円。切り捨てなので、合計は元の金額以下に収まります。
「1,280は1,300にしたい」なら、切り捨てではなく丸めの出番です。その場合はMROUND関数を使うと、=MROUND(1280, 100) で1,300が返ります。
作業時間を15分単位で切り捨てる
スプレッドシートの時刻や時間は、「1日=1」とする数値で扱われています。15分の基準値は、TIME関数で TIME(0,15,0) と指定しましょう。
=FLOOR.PRECISE(A2, TIME(0,15,0))
| 作業時間(A列) | 15分単位(B列) |
|---|---|
| 1:22 | 1:15 |
| 2:47 | 2:45 |
| 0:58 | 0:45 |
| 3:10 | 3:00 |
| 合計 8:17 | 合計 7:45 |
結果が「0.05…」のような小数で表示されたら、表示形式が数値のままです。B列を選び、メニューの「表示形式」→「数字」→「経過時間」に変えてみてください。作業時間のような長さは、この形式だと24時間を超えても読みやすく表示できます。
プラスとマイナスが混ざった損益をそろえる
利益と損失が混ざった列でも、数式は同じものを使えます。基準値は100のままで構いません。
=FLOOR.PRECISE(A2, 100)
| 損益(A列) | 100円単位(B列) |
|---|---|
| 567 | 500 |
| -456 | -500 |
| 1,234 | 1,200 |
| -1,234 | -1,300 |
| 合計 111 | 合計 -100 |
すべての行が小さい方へ動くため、損失の行は金額が大きくなります。その結果、合計は111から-100へ下がりました。
損益を控えめに見積もりたい集計なら、この動きはむしろ好都合です。一方、プラスもマイナスも0に近い方へそろえたいなら、次の章の方法に切り替えてください。
思った結果にならないときの確認ポイント
FLOOR.PRECISEで「あれ?」となりやすいパターンを表にしました。症状から原因と直し方を引いてください。
| 症状 | 主な原因 | 直し方 |
|---|---|---|
| 負の数が1つ小さくなる(-1234→-1300) | 常に小さい方へ切り捨てる仕様 | 0に近い方へ切り捨てるならROUNDDOWNやTRUNCを使う |
| 結果が0になる | 基準値が0になっている可能性(Excelの公式ヘルプでは0を返すと説明) | 基準値のセルや数式を確認する |
| 切り捨てが起きない | 元の値がちょうど倍数、または基準値が小さすぎる | 基準値の単位(100・1000など)を見直す |
| 時間が小数で表示される | 表示形式が数値のまま | 表示形式を「経過時間」などに変える |
| FLOORで#NUM!が出る | 基準値の符号(Excelでは正の数+負の基準値で発生) | FLOOR.PRECISEに置き換える |
特に戸惑いやすいのは、1行目の「負の数が1つ小さくなる」パターンです。100単位や1000単位なら、ROUNDDOWN関数の桁数をマイナスにすると0に近い方へ切り捨てられます。
=ROUNDDOWN(A2, -2)
A2が-1234なら、結果は-1200です。桁数の-2は「100の位まで残す」という意味になります。
ただし、ROUNDDOWNで指定できるのは10・100・1000のような10の累乗の単位だけ。500円単位のように半端な単位で0に近い方へ切り捨てたいときは、絶対値で切り捨ててから符号を戻します。
=SIGN(A2) * FLOOR.PRECISE(ABS(A2), 500)
A2が-1234なら、ABSで1234にしてから500単位の1000に切り捨てます。最後にSIGNでマイナスを戻すと、結果は-1000です。
結果が0になる件は、Microsoftの公式ヘルプに「基準値が0のときは0を返す」とあります。スプレッドシートで0が返ったときも、まず基準値のセルが0になっていないかを確かめましょう。
よくある質問
Q. 負の数が-5ではなく-6になるのはなぜ?
FLOOR.PRECISEは、数直線で小さい方へ切り捨てる関数だからです。-5.7より小さい整数のうち、いちばん近いのが-6になります。
小数部分を捨てて-5にしたい場合は、TRUNC関数が向いています。=TRUNC(-5.7) なら-5が返ります。
Q. 0.5単位など、小数の単位でも切り捨てられる?
できます。基準値に小数を入れるだけです。たとえば =FLOOR.PRECISE(12.7, 0.5) は12.5を返します。
Googleの公式ヘルプにも、=FLOOR.PRECISE(-23.25, 0.1) が-23.3になる例が載っています。
Q. Excelで作ったシートでもそのまま動く?
ExcelにもFLOOR.PRECISEがあり、引数は同じ「数値・基準値」の2つです。Microsoftの対応表記では、Excel 2016以降とMicrosoft 365が対象になっています。
ファイルを取り込んだあとは、念のため負の数の行の結果を確かめておくと安心です。Excelでの使い方はExcel版のFLOOR.PRECISE関数の記事で解説しています。
Q. 切り上げたいときはどの関数を使う?
同じ引数で大きい方へ切り上げるCEILING.PRECISE関数があります。=CEILING.PRECISE(1234, 100) なら1300です。FLOOR.PRECISEとはペアの関係なので、使い方もそのまま流用できます。
まとめ:スプレッドシートのFLOOR.PRECISE関数のポイント
スプレッドシートのFLOOR.PRECISE関数は、数値を指定した倍数の単位で切り捨てる関数です。最後にポイントを整理しておきます。
- 構文は
=FLOOR.PRECISE(数値, [基準値])。基準値を省略すると1 - 基準値の符号は無視されるので、-100でも100と同じ結果
- 負の数は常に0から遠ざかる向き(-5.7は-6、-1234を100単位にすると-1300)
- FLOORで基準値の符号が原因の#NUM!が出たら、関数名をFLOOR.PRECISEに書き換えて試す
- 負の数を0に近い方へ切り捨てたいなら、ROUNDDOWN・TRUNC・FLOOR.MATHのmodeを使う
まずは手元の表で =FLOOR.PRECISE(A2, 100) を試してみてください。マイナスの行がどう動くかを一度見ておけば、FLOOR系の使い分けで迷うことはぐっと減るはずです。