解決済み

FLOOR関数について

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

お礼率 90% (10/11)

FLOOR関数を使って勤務時間を計算しているのですが
うまく出来ません。

条件)
10分単位で切り捨てする。

例1)
出社時間:20:00
退社時間:22:00
FLOOR("22:00"-"20:00","0:10")

例2)
出社時間:21:00
退社時間:22:00
FLOOR("22:00"-"21:00","0:10")

例3)
出社時間:21:00
退社時間:22:05
FLOOR("22:05"-"21:00","0:10")

出力結果
例1)2時間
例2)50分
例3)1時間
となります。

いろんな時間で試してみましたが、手計算では1時間になる時だけ
50分と出力されます。
例2)の場合、1時間と出力しないのはなぜでしょうか?

[補足]
実際はセルを参照して計算しています

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

  • 回答No.1

ベストアンサー率 47% (287/608)

誤差が原因ですね。
コンピュータの計算はすべて2進数で計算されます。
"22:00"と"21:00"のどちらかが誤差を含むような値に変換されて計算されてしまい。
計算結果が1:00ではなく、0:59:59:59となってしまいFLOOR関数が切り捨てて0:50になってしまったのでしょう。
簡単な解決策としては
FLOOR("22:00"-"21:00"+"0:00:05","0:10")
として、計算結果に支障が出ない程度に計算結果を調整することです。
誤差は非常に小さいものですので計算結果に支障が出ない程度に小さい結果を加えてやればよいのです。
出勤表ではさすがに10秒以下の単位までは記入しないでしょうからここでは
1秒を加えることで誤差を相殺します。
お礼コメント
BlackRain

お礼率 90% (10/11)

解決策までありがとうございました。
その方法で回避したいと思います。
ありがとうございました。
投稿日時 - 2008-07-12 17:30:14
Be MORE 7・12 OK-チップでイイコトはじまる

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 36% (2265/6241)

>いろんな時間で試してみましたが、手計算では1時間になる時だけ
50分と出力されます。

エクセルの仕様な気がします。

ちなみに、10:00出社、11:00退社で50分になりますが
そこから両方を10分ずつ遡らせると、
9:50、9:30,9:10,9:00,8:40,8:20,8:10,8:00,7:50出社は1hとなりますが、それ以外は全部50分でした。
お礼コメント
BlackRain

お礼率 90% (10/11)

1時間と出力される場合もあったんですね。
十分テストしたつもりでも甘かったです^^;;
投稿日時 - 2008-07-12 17:35:36
  • 回答No.2

ベストアンサー率 47% (287/608)

書くのを忘れましたが
これはExcelのバグではなく仕様ですのでこのことを知らずに起こりえた
何らかの不利益の責任はExcelを作ったMicrosoftではなく
知らずに表を制作した人にあるということになります。

たまに勘違いしている人がいるのでいちおう書いておきます。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

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

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

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

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ