スプレッドシートのFLOOR.PRECISE関数|負の数の結果と使い方

スポンサーリンク

「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)1200100単位で切り捨て
=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関数の比較表

項目FLOORFLOOR.MATHFLOOR.PRECISE
引数2つ(数値・基準値)3つ(数値・基準値・mode)2つ(数値・基準値)
基準値の符号数値が正で基準値が負だとExcelでは#NUM!(※1)正の数で指定するのが無難無視される
負の数の向き符号の組み合わせで変わるmode省略で0から遠ざかる(※2)常に0から遠ざかる
基準値の省略111
向きの切り替えできない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,2801,200
2,7502,700
3,1203,100
980900
合計 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:221:15
2:472:45
0:580:45
3:103:00
合計 8:17合計 7:45

結果が「0.05…」のような小数で表示されたら、表示形式が数値のままです。B列を選び、メニューの「表示形式」→「数字」→「経過時間」に変えてみてください。作業時間のような長さは、この形式だと24時間を超えても読みやすく表示できます。

プラスとマイナスが混ざった損益をそろえる

利益と損失が混ざった列でも、数式は同じものを使えます。基準値は100のままで構いません。

=FLOOR.PRECISE(A2, 100)
損益(A列)100円単位(B列)
567500
-456-500
1,2341,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系の使い分けで迷うことはぐっと減るはずです。

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