プロが教えるわが家の防犯対策術!

CEILING関数を使い15分単位で休憩時間を計算した場合の不具合

休憩時間を15分単位で計算したいです。
たとえば
休憩 46分の場合 1時間
休憩 38分の場合 45分
休憩 60分の場合 60分

セルには以下の時間が入っています。

休憩開始(A列)        休憩開始(B列)
2015/4/21 12:42:00      2015/4/21 13:42:00
2015/4/22 12:28:00      2015/4/22 13:28:00

C列に以下の式を入力しました。

①CEILING(B1-A1,"0:15")
②CEILING(B2-A2,"0:15")

①の式は1:00:00と望みどうりの結果がでたのですが
②の式は1:15:00 になってしまいました。

ためしに
①B1-A1をシリアル値で表示してみたら、0.041666667
②B2-A2をシリアル値で表示してみたら、0.041666667
と同じでした。


日付データは秒がないので、4/21の休憩も4/22の休憩も同じ1時間のはずなのですが、
結果がことなってしまいました。
なぜこのようになってしまったのか、アドバイスよろしくお願いいたします。

A 回答 (2件)

こんばんは!



浮動小数誤差の影響だと思います。
小数点以下の数値がある場合(時間計算等)は気を付ける必要があります。
小数点以下部分をなくして(整数にして)計算できないかどうかやってみましたが
なかなか上手くいかないので、苦肉の策です。

少し長くなりますが、
=CEILING((HOUR(B1-A1)+MINUTE(B1-A1)/60)/24,"0:15")
のような数式にしてみてください。

※ 他に簡単な方法があればごめんなさいね。m(_ _)m
    • good
    • 0
この回答へのお礼

素早い回答ありがとうございました。
浮動小数誤差もしりませんでしたので、参考になりました。

お礼日時:2015/04/29 01:28

No.1の方のご回答の通りだと思います。

(浮動小数誤差)
これを解消するために、小数点第8位くらいで切り捨てては如何でしょう?

=CEILING(ROUNDDOWN(B1-A1,7),"0:15")
    • good
    • 0
この回答へのお礼

簡単な方法を教えていただきありがとうございました。
できました。

お礼日時:2015/04/29 01:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!