- ベストアンサー
エクセルの時間計算にバグ?
EXCEL97で5分単位切り捨てで時間計算しようと思い、 以下の式を書きました。 =FLOOR(終了時間-開始時間,TIMEVALUE("0:05")) ところが、 終了時間="8:40" 開始時間="8:30" で計算すると 0:05 となってしまいます。 終了時間="8:43" 開始時間="8:30" や 終了時間="8:20" 開始時間="8:10" で計算すると 0:10 と正常に計算されます。 これは式が悪いのでしょうか、それともバグ? 分かればぜひ教えてくださいお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
これはEXCELの仕様で、バグではありません。 確かに、見かけ上は正しいのですが、EXCELでは時間の計算方法として、1日24時間を1として計算します。5分は5/1440となり、割り切れない値となります。これを丸め処理して表示しているので、除算の絡む式だと、どうしても誤差が生じます。 ためしに、(終了時間ー開始時間)/TIMEVALUE("0:05")で計算させると、標準書式では2と表示されますが、数値表示で小数点以下20桁で表示させると、 1.999999…となり、2にならないことがわかります。 FLOOR関数では元の数値の倍数で計算しますので、2倍に限りなく近いが、2倍ではないので期待通りの計算結果が現れません。 これを避けるには、別セルに分(MINUTE)単位で取り出し、これをFLOOR関数で処理します。
その他の回答 (1)
- Qtaro35
- ベストアンサー率40% (53/131)
演算の過程でPC内では10進数を2進数に変換して計算した後に、再び10進数に変換して表示します。ここで発生する不都合であり、時間の計算に限らず一般の四捨五入処理でも頻繁に見られる現象です。(小数点以下10桁目以下に現れています。 0.5が0.499999999999999だったりする訳です。) 2桁四捨五入では、3桁目が5ジャストの場合にランダムな五捨五入を実行し、時間の場合には、15分、30分、45分などの時に現れます。 対策としては、演算結果に影響を及ぼさない数値(0.0000000001)等を演算結果に加えてから、丸め処理をするのが簡単な方法です。 なお、終了時間、開始時間共に丸め処理をする、結果のみに丸め処理をするによって、調整のための微値を加えるセル位置は異なります。
お礼
早速の回答有り難う御座います。 そういう理由があったんですね、分けてやったら上手く行きました。