表計算ソフトで時間計算、日数計算をするための7つのレッスン 第2回

■■Lesson 2
「概数計算」
[ ここで学ぶ関数 TODAY() NOW() MROUND() CEILING() FLOOR() ]
(および、ROUND() ROUNDUP() ROUNDDOWN() INT() IFERROR() ISERROR() )

時間を扱うExcelワークシート関数は豊富にある。
たとえば、現在の日付、時刻を表示するときは、

=TODAY()
=NOW()

セルに入っている数値そのものを「まるめる」ためにも関数を使う。

この場合、もとのセルとは別のセルに数式を入力し、そのセルにまるめた後の値が入るようにする必要がある。「表示形式」と「実際の値」「数式」はそれぞれ別の概念であり、みた目の表現形と区別して考えることが肝要である。

ふつうの数値であれば、
「四捨五入/切り上げ/切り捨てて少数第n位まで求める」場合は、

=ROUND(B5,n)
=ROUNDUP(B5,n)
=ROUNDDOWN(B5,n)

補足メモ:
 「数値を切り捨てて整数部分だけを残す」場合、
INT() 関数を使うこともできる。この関数は引数がひとつだけ。ROUNDDOWN() 関数との違いは、負の値を引数としたときの挙動。

INT(-1.5) = -2
ROUNDDOWN(-1.5,0) = -1

時間の場合、「~分単位で切り上げる/切り捨てる」という処理が多い。
時間を分や秒単位でまるめ/切り上げ/切り捨てるには、
それぞれ、MROUND() CEILING() FLOOR() を使うのが便利。(以下はいずれも30分単位の場合)

=MROUND(B5,"0:30")
=CEILING(B5,"0:30")
=FLOOR(B5,"0:30")

補足メモ:
以上のような数式で、たとえば
「B5に値が入力されていないため、#VALUE! エラーが出る」
といった場合は、IFERROR() 関数を使うと、エラーの表示が出なくなる。( Excel 2007以降)
=IFERROR(CEILING(B5,"0:30"),"")

この関数が使えない環境の場合、以下のように
ISERROR() 関数を使うこともできる。
=IF(ISERROR(CEILING(B5,"0:30")),"",CEILING(B5,"0:30"))

また、以下のような方法もある。
=IF(B5<>"",CEILING(B5,"0:30"),"")
この場合、B5 に文字列などイレギュラーな値が入力されていればエラーが返ることになる。

応用:
「(1時間単位で)いま何時台か」を返す関数

=FLOOR(NOW(),"1:00")

ただし、NOW() には「日付」の情報も含まれるので、「時刻」のみを返すためには、NOW() を NOW()-TODAY() にする必要がある。
これについては Lesson 3 の末尾でも考察する。

また、上記の数式で返るのはシリアル値であり、1時間=1 の数値に変換するには工夫が必要。これについても後述する。

この記事が気に入ったらサポートをしてみませんか?