- ベストアンサー
時間判定(Excel2003)
Excel2003です 入力された値(時間)の差が2時間超(2時間含まない)~3時間以下ならチェックする としたいのですが A1に『15:00』A2に『17:00』A3に『=A2-A1』として 判定セルに『=IF(AND(A3>"2:00"*1,A3<="3:00"*1),"◎","×")』 としても『×』になりません? どうしてですかね、ちなみに『11:00』『13:00』では『×』となります 両方ともA3には『2:00』と表示されているのですが…
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Excelの時刻は「24時間を1.0とした浮動小数点の数値」です。 その為「1時間」は「1/24」になります。 コンピュータで使用される浮動小数点の数値は「1/24」や「2/24」などを正確に表現する事は出来ません。 従って「15:00」は「およそ15:00(15/24より、ほんの少し小さい値)」になり、「17:00」は「およそ17:00(17/24より、ほんの少し大きい値)」になります。 「17/24より、ほんの少し大きい値」から「15/24より、ほんの少し小さい値」を引くと「2/24より、ほんの少し大きい値」になります。 その為「2/24より、ほんの少し大きい値>"2:00"*1」は「真」となります。 その結果、=IF(AND(A3>"2:00"*1,A3<="3:00"*1),"◎","×")は「◎」になります。 A1に『15:00』A2に『17:00』A3に『=A2*24-A1*24』として 判定セルに『=IF(AND(A3>2,A3<=3*1),"◎","×")』と入れてみて下さい。 「A1、A2を24倍してから引き算」する事により「正確に表現できない1/24を排除」すれば、精度が上がり、比較式を誤判定しなくなります。 分単位を計算する場合は、同様に「1440」を掛け算すると誤差が減ります。
その他の回答 (3)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
>判定セルに『=IF(AND(A3>2,A3<=3*1),"◎","×")』と入れてみて下さい。 は 判定セルに『=IF(AND(A3>2,A3<=3),"◎","×")』と入れてみて下さい。 の誤り。余計な「*1」を消し忘れました。
- tom04
- ベストアンサー率49% (2537/5117)
No.1です! たびたびごめんなさい。 前回の投稿は無視してください。 文字列になってしまうと思いますので、 まったくの的外れでした。 どうも失礼しました。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 直接の回答ではないのですが・・・ ほんとうですね! 2:00 を標準で表示させてもちゃんと 0.833・・・ となっているのですが、不思議ですねぇ~~~ 11:00~13:00以外にも2:00 の時間帯でも「◎」が表示される場合がありました。 数式内の「*1」を省略して =IF(AND(A3>"2:00",A3<="3:00"),"◎","×") とすると、ちゃんと希望される表示にはできましたが、 私もどうしてか原因が判りません。 なにかすっきりしないのですが、 この程度でごめんなさいね。m(__)m
お礼
ありがとうございます 私も今回たまたまこの事例を見つけて 今まで今回のような判定式で処理をさせているマクロ等あるのですが ちょっぴり信頼度が落ちちゃいました(汗)
お礼
なるほど!! とてもわかりやすい解説をしていただきありがとうございます。 早速今まで作成したファイルをチェックします