• ベストアンサー

エクセルで時間計算

単純に19:00以降からの時間計算をしたいのですがうまくいきませんので教えていただけないでしょうか? 内容は19:00以降の時間を入力した場合そこからの時間を1時間単位で切り捨てた時間を求めたいのです。 A2に19:00以降の時間を入力した場合、C2に1時間単位での数字を表示させ、19:00未満では空白を表示させたいのですが、IF関数を使って、IF(A2>"19:00","19:00"-A2,"")だと20:00でも論理式の時点でFALSEになってしまいます。 その理由と1時間単位に切り捨て方法を教えていただけないでしょうか?宜しくお願いいたします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

こんにちは。KenKen_SP です。 後半部だけですが。 >1時間単位に切り捨て方法   C2セルの数式:   =FLOOR(A2,TIMEVALUE("1:00:00"))      または↓   =FLOOR(A2,1/24)   で時間を丸められますから、   =IF(A2>19/24,FLOOR(A2,1/24),"")   FLOOR、CEILING 関数をヘルプで見てみて下さい。

kobucha0141
質問者

お礼

時間の丸め方だけでもこんなにあるとは本当に勉強になりました。 ありがとうございました。

その他の回答 (4)

noname#204879
noname#204879
回答No.4

=IF(A2<"19:0"*1,"",FLOOR(A2,"1:0")-"19:0")

kobucha0141
質問者

お礼

すごいですね。 ひとつの答えに対する関数の建て方がこんなにあるとは勉強になります。 ありがとうございます。

  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.3

いろんな方法が有りますね。 =IF(A2>TIMEVALUE("19:00"),HOUR(A2-"19:00"),"")

kobucha0141
質問者

お礼

本当にさまざまな方法があるのですね。 ありがとうございます。

  • m_mik
  • ベストアンサー率26% (31/117)
回答No.2

比較を 19:00 という文字列と行おうとしているので上手くいきません。 Excelですと、19:00という値との比較を行えばよいのですから、 =if(A2>time(19,0,0),time(19,0,0)-A2,"") とすると一見、正しい値を求められるように思えます。 この場合、23:00などを入力すると、値が負の値になりますので、 A2-time(19,0,0) が正しい計算式になると思います。 これで、表示書式を時間形式にしてあげれば、19:00からの時間が表示されます。 また、1時間単位で切り捨てたいとのことなので、さらに手を加える必要があります。 1時間単位で切り捨てですので、 =if(A2>time(19,0,0),int((A2-time(19,0,0)))*24)/24,"") こうすると、時間単位で切り捨てて求められますが、いかがでしょうか?

kobucha0141
質問者

お礼

ありがとうございます。 比較対照が文字列扱いで駄目だったのですね。 他のHPを参考にしたら文字列扱いでいけていたようなので それが原因とは思いませんでした。 ありがとうございます。

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

時刻や日付の計算はマイナス値を許されません。 ですので A2-"19:00" とするか ABS("19:00"-A2) とするかですね。 でもこれだと1時間単位ではないようですがいいのですか? 時間を表示なら =IF(A2>19/24,INT(A2*24-19),"") とした方がいいかと思います。 ※19/24="19:00" で同じ値です。A2を24倍することで時刻から時間の抽出ができます。 ※ただし、表示形式は標準か数値にする必要があります。

kobucha0141
質問者

お礼

ありがとうございました。 すぐのご返答大変ありがたかったです。 また、詳しくご説明いただいてありがとうございました。

関連するQ&A

専門家に質問してみよう