- ベストアンサー
エクセルで時間計算
単純に19:00以降からの時間計算をしたいのですがうまくいきませんので教えていただけないでしょうか? 内容は19:00以降の時間を入力した場合そこからの時間を1時間単位で切り捨てた時間を求めたいのです。 A2に19:00以降の時間を入力した場合、C2に1時間単位での数字を表示させ、19:00未満では空白を表示させたいのですが、IF関数を使って、IF(A2>"19:00","19:00"-A2,"")だと20:00でも論理式の時点でFALSEになってしまいます。 その理由と1時間単位に切り捨て方法を教えていただけないでしょうか?宜しくお願いいたします。
- みんなの回答 (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 関数をヘルプで見てみて下さい。
その他の回答 (4)
=IF(A2<"19:0"*1,"",FLOOR(A2,"1:0")-"19:0")
お礼
すごいですね。 ひとつの答えに対する関数の建て方がこんなにあるとは勉強になります。 ありがとうございます。
- S-Fuji
- ベストアンサー率36% (592/1624)
いろんな方法が有りますね。 =IF(A2>TIMEVALUE("19:00"),HOUR(A2-"19:00"),"")
お礼
本当にさまざまな方法があるのですね。 ありがとうございます。
- m_mik
- ベストアンサー率26% (31/117)
比較を 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,"") こうすると、時間単位で切り捨てて求められますが、いかがでしょうか?
お礼
ありがとうございます。 比較対照が文字列扱いで駄目だったのですね。 他のHPを参考にしたら文字列扱いでいけていたようなので それが原因とは思いませんでした。 ありがとうございます。
- mshr1962
- ベストアンサー率39% (7417/18945)
時刻や日付の計算はマイナス値を許されません。 ですので A2-"19:00" とするか ABS("19:00"-A2) とするかですね。 でもこれだと1時間単位ではないようですがいいのですか? 時間を表示なら =IF(A2>19/24,INT(A2*24-19),"") とした方がいいかと思います。 ※19/24="19:00" で同じ値です。A2を24倍することで時刻から時間の抽出ができます。 ※ただし、表示形式は標準か数値にする必要があります。
お礼
ありがとうございました。 すぐのご返答大変ありがたかったです。 また、詳しくご説明いただいてありがとうございました。
お礼
時間の丸め方だけでもこんなにあるとは本当に勉強になりました。 ありがとうございました。