• ベストアンサー

エクセルでの時間の大小関係

A1というセルに 23:00 の数値が入っています。 それで、=IF(A1>"20:00","真","偽") という関数を 使っても 偽 と表示されます。 この式は間違っているのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

=IF(A1>"20:00"*1,"真","偽") または =IF(A1>TIMEVALUE("20:00"),"真","偽")  または =IF(A1>20/24,"真","偽")  

hiroi
質問者

お礼

mshr1962さん 早速の回答ありがとうございます。 よく分かりました。数値に変換するんですね。 それで、"20:00"*1 って、どういう意味なんでしょうか?数値に変換する働きがあるのでしょうか?

その他の回答 (5)

noname#204879
noname#204879
回答No.6

[No.4回答に対するお礼]に対するコメント、 》 …きちんとした区別をつけた方が安全ですね。"は 》 あくまでも文字列としてのみに使いたい… hiroiが Excel を使い慣れてくると、そのような「Excelの性質」を利用する方が簡単で便利な場合が多いことが分かります。24 や 60 で割ったり掛けたりしなくて済むからです。何のことかその内に理解できます。

hiroi
質問者

お礼

mike_gさん 色々とどうもありがとうございます。 はい、24や60で割ったりしていますが、シリアル値に変換するTIMEVALUE関数、TIME関数も便利なので使っております。でも今回の場合は、その関数を使わなくても直接加減算乗除の演算が出来るので、Excelってよく出来ていますね。

noname#141205
noname#141205
回答No.5

#2です。 年月日まで見てもらったのは、入力がどのようになっているか 見るためです。 よく質問を見てみると、IF関数の中に文字列として"20:00"と 書いていますね。 ""で囲むということは、それを文字列にするということです。 しかし、エクセルは、文字の"10"と数字の20を加減乗除しても ちゃんと答えが出るように設計されています。その理由は、素人が 使うことを念頭にしているからです。 ですから、結果として文字と数字の計算が出来るとしても避ける方が 良いように思います。 2006年5月21日は、1900年1月1日より38858日目です。5月22日は 38859日目です。一日につき1加算されます。5月21日の昼12時は、0.5 加算され、38858.5、夜6時なら、38858.75になります。 そこで、A11に23、A12に0、A13に0を入れます(これは 23時0分0秒の意味です)。 A14に関数、=TIME(A11、A12、A13)と入れます。 次に、B11に22、B12に0、B13に0を入れます(これは、比べる 数字の20時0分0秒の意味です)。 B14に関数、=TIME(B11、B12、B13)と入れます。 さらに、結果を出したいところ(A1)に、  =IF(A14>B14,"真","偽") という関数を入れれば良いと思います。  =IF(A1>"20:00","真","偽")ですと、将来、20:00が変更になった 時のことを考えると、さらに関数式の中に文字列を入れるのはあまり 良くないと思います。

hiroi
質問者

お礼

nicedaysさん 色々詳しい事例どうもありがとうございます。 よく分かりました。数字と文字列を同列に扱わないで、厳密に区別しておけば、こちらの意図しない処理を防げるという意味でも好ましいと思いますね。

noname#204879
noname#204879
回答No.4

[No.3回答に対するお礼]に対する回答、 》 式を入れれば、数値となるということでしょうか? ん、当たらずとも遠からず、でしょうか? 「式」でも加減乗除の演算に限ります。(Excelの性質) ="20:00"*1 は乗算(掛け算)ですね。 =A1-"20:00" は減算(引き算)ですね。 ="20:00"/2 は除算(割り算)で 10:00 を返して来ます。 ="20:00"+0 は和算(足し算) で 20:00 が返ります。

hiroi
質問者

お礼

mike_gさん 回答どうもありがとうございます。 加減乗除の演算でしたね。 No5.のnicedaysさんによると、"で囲まれた文は一応文字列ですが、数字と見なして処理できるように作られているとのこと。ですから、="20:00"*1等とすれば、数字扱いされて処理してくれるんですね。 しかし、nicedaysさんの指摘にある通り、きちんとした区別をつけた方が安全ですね。"はあくまでも文字列としてのみに使いたいと思います。

noname#204879
noname#204879
回答No.3

》 =IF(A1>"20:00","真","偽") この式を =IF(A1-"20:00","真","偽") に変更してみてください。「A1-"20:00"」の部分は「A1-"20:00">0」としてもOKかと。 次になぜ「A1>"20:00"」では駄目で、「A1-"20:00">0」ならOKなのか?という疑問が湧いて来ませんか?その答えは… [No.1回答に対するお礼」中のご質問の答えと同じなのです。分っかるかなぁ~?

hiroi
質問者

お礼

mike_gさん つまり、"20:00"単独だと文字列と見なされて、 式を入れれば、数値となるということでしょうか? よろしくお願いします。

noname#141205
noname#141205
回答No.2

まず表示が、23:00と20:00ですね。 しかし、〇〇年〇〇月〇〇日〇時〇分まで、両方とも表示 して下さい。日付はどうなっていますか?

hiroi
質問者

お礼

nicedaysさん 表示は、それぞれ 1900/1/0 23:00 1900/1/0 20:00 と表示されました。 それが、何か関係あるのでしょうか???? すみません。よろしくお願いします。

関連するQ&A