OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセルの時間計算にバグ?

  • 困ってます
  • 質問No.210327
  • 閲覧数628
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 34% (10/29)

EXCEL97で5分単位切り捨てで時間計算しようと思い、
以下の式を書きました。

=FLOOR(終了時間-開始時間,TIMEVALUE("0:05"))

ところが、
終了時間="8:40"
開始時間="8:30"
で計算すると 0:05 となってしまいます。
終了時間="8:43"
開始時間="8:30"

終了時間="8:20"
開始時間="8:10"
で計算すると 0:10 と正常に計算されます。

これは式が悪いのでしょうか、それともバグ?
分かればぜひ教えてくださいお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 41% (96/232)

これはEXCELの仕様で、バグではありません。
確かに、見かけ上は正しいのですが、EXCELでは時間の計算方法として、1日24時間を1として計算します。5分は5/1440となり、割り切れない値となります。これを丸め処理して表示しているので、除算の絡む式だと、どうしても誤差が生じます。

ためしに、(終了時間ー開始時間)/TIMEVALUE("0:05")で計算させると、標準書式では2と表示されますが、数値表示で小数点以下20桁で表示させると、
1.999999…となり、2にならないことがわかります。
FLOOR関数では元の数値の倍数で計算しますので、2倍に限りなく近いが、2倍ではないので期待通りの計算結果が現れません。

これを避けるには、別セルに分(MINUTE)単位で取り出し、これをFLOOR関数で処理します。
お礼コメント
wonwonwon

お礼率 34% (10/29)

早速の回答有り難う御座います。
そういう理由があったんですね、分けてやったら上手く行きました。
投稿日時 - 2002-02-02 18:37:21
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル10

ベストアンサー率 40% (53/131)

演算の過程でPC内では10進数を2進数に変換して計算した後に、再び10進数に変換して表示します。ここで発生する不都合であり、時間の計算に限らず一般の四捨五入処理でも頻繁に見られる現象です。(小数点以下10桁目以下に現れています。 0.5が0.499999999999999だったりする訳です。) 2桁四捨五入では、3桁目が5ジャストの場合にランダムな五捨五入を実行し、時間の場合には、15分、30分、4 ...続きを読む
演算の過程でPC内では10進数を2進数に変換して計算した後に、再び10進数に変換して表示します。ここで発生する不都合であり、時間の計算に限らず一般の四捨五入処理でも頻繁に見られる現象です。(小数点以下10桁目以下に現れています。 0.5が0.499999999999999だったりする訳です。)

2桁四捨五入では、3桁目が5ジャストの場合にランダムな五捨五入を実行し、時間の場合には、15分、30分、45分などの時に現れます。
対策としては、演算結果に影響を及ぼさない数値(0.0000000001)等を演算結果に加えてから、丸め処理をするのが簡単な方法です。

なお、終了時間、開始時間共に丸め処理をする、結果のみに丸め処理をするによって、調整のための微値を加えるセル位置は異なります。

このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ