- ベストアンサー
Excelの時間計算(引き算)の端数処理について教えてください
- Excelの時間計算での端数処理についてご質問です。具体的には、セルA1とセルA2の時間を引き算する際に発生する端数の処理について教えてください。
- また、時間計算を正確に行うための鉄則や回避策についても教えていただきたいです。
- 皆さんのお知恵をお聞かせください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
・方法1 A3とA4セルをTEXT関数で文字列にしてから比較 セルA1:22:00 セルA2:22:30 セルA3:=A2-A1 セルA4:0:30 セルA5:=TEXT(A3,"hh:mm")=TEXT(A4,"hh:mm") ・方法2 「A2-A1」を時刻シリアル値の「0:30」と等しい値にする セルA1:22:00 セルA2:22:30 セルA3:=VALUE(TEXT(A2-A1),"hh:mm") セルA4:0:30 セルA5:=A3=A4 ・方法3 A3とA4の差が誤差範囲内かどうか調べる セルA1:22:00 セルA2:22:30 セルA3:=A2-A1 セルA4:0:30 セルA5:=ABS(A3-A4)<1e-16 以下蛇足。 「=IF(条件式,TRUE,FALSE)」と言う式は無駄なので書いてはいけません。 「=IF(A3=12345,TRUE,FALSE)」は「=A3=12345」とだけ書けば済みます。 同様に「=IF(A3<12345,TRUE,FALSE)」は「=A3<12345」とだけ書けば済みます。
その他の回答 (1)
- Cupper
- ベストアンサー率32% (2123/6444)
微少数誤差は避けられない問題です。 これは Excelが日付と時間をシリアル値で管理していることに起因します。 (1日を1、1週間を7、12時間を0.5、1時間を 1/24 で管理している) 正直、比較を必要とすることがなければ無視できるほど小さい誤差ですので、普段はそこまで気にする必要はありません。 どうしても気になるのでしたら、HOUR関数 や MINUTE関数を使って時分をそれぞれ整数に直した後に計算でしょうか。 または、時間を1440倍して小数点以下を切り捨てたのちに計算を行い、 計算後にもう一度1440で割ってシリアル値に戻すということも検討してはいかがでしょう。 (24時間=1440分)
お礼
Cupperさん、ありがとうございます。 仰るとおり小さい誤差なので見た目上は全く問題はないのですが、 比較した結果によって処理を変えている(色を付けている)ため、 厳密な比較を必要としています。 時間計算処理を入れるという対応は考えてはいましたが、 なんとか関数だけで対応出来ないものかと考えていました。 1440倍するというのも一つの手ですね! ありがとうございました!
お礼
chie65535さん、ありがとうございます。 やはり、文字列比較かシリアル値による処理がシンプルな対応ってことですね。 後は誤差が発生しないよう整数化するなど処理を入れるしかないでしょうかね。 比較処理ではチェックを行いたいため、比較処理にロジックを入れる方法3がよさそうですね。 ありがとうございました。 (条件式には実際は処理を書いているので分かり易く(?)書かせていただきました。)