激凹みから立ち直る方法

出勤時間A:A
退勤時間B:B

19時~翌5時(4:59:59)までの労働時間を計算せよ。
5時~19時(18:59:59)までを除外せよ。



12:00~16:00
(12時~16時の間で19時~翌5時の範囲に、該当するのはありません)
=4:00じゃなく=0:00です。

15:00~20:00
(15時~20時の間で19時~翌5時の範囲に、該当するのは19時~20時)
=5:00じゃなく=1:00です。

20:00~1:00
(20時~1時の間で19時~翌5時の範囲に、該当するのは其のまま20時~1時)
=5時間

3:00~7:00
(3時~7時の間で19時~翌5時の範囲に、該当するのは3時~5時)
=4:00じゃなく=2:00


よろしくお願いします。

A 回答 (3件)

=B1-A1+(B1<A1)-MIN(TIME(19,,),B1+(B1<A1))+MAX(TIME(5,,),MIN(A1,TIME(19,,)))




>=FLOOR(B1,"0:30")+(B1<A1)-CEILING(A1,"0:30")
>の方がスッキリしてませんか?
こんな条件どこにありましたか?

因みに、小数誤差を考慮した方がいいのでは

この回答への補足

あ!出来てる!凄い。
有難う御座いました。

>=FLOOR(B1,"0:30")+(B1<A1)-CEILING(A1,"0:30")
の様な方法はないですか?と書きたかったです。

補足日時:2008/02/26 23:47
    • good
    • 0

明らかに5:00、19:00用のセルを用意した方がいいですが、


C1に例えば以下の式を入れれば出勤時間A1,退勤時間B1から計算できます。

=(A1<TIME(5,0,0))*(TIME(5,0,0)-A1)-(B1<TIME(5,0,0))*(TIME(5,0,0)-B1)-(A1>TIME(19,0,0))*(A1-TIME(19,0,0))+(B1>TIME(19,0,0))*(B1-TIME(19,0,0))+(A1>B1)*(TIME(10,0,0))

この回答への補足

=FLOOR(B1,"0:30")+(B1<A1)-CEILING(A1,"0:30")
の方がスッキリしてませんか?

で、
>19時~翌5時(4:59:59)までの労働時間を計算せよ。
>5時~19時(18:59:59)までを除外せよ。
が、質問なのですが・・・

補足日時:2008/02/26 01:11
    • good
    • 0

課題か何かのようですのでヒントだけ



日付を含めて時間計算すると幸せになれますよ

エクセルは時間と日付をシリアル値という数値で扱っています
19:00 は、1900/1/1 19:00 として、0.791666666666667 と言う数値になります
翌日の5:00であれば 1900/1/1 5:00 (1.20833333333333)として計算すれば問題なく時間を引き算で求められます
翌日の5:00と言うことであれば、"5:00"+1 でも同じ結果(シリアル値)を得られます

※シリアル値は24時間で1になります
 12時間であれば0.5、2日であれば2、1年であれば365 となります
 「シリアル値」をエクセルのヘルプで検索すると更に詳しい説明を知ることができます

この回答への補足

そのへんは、理解しています。
式が欲しいのですが・・・

補足日時:2008/02/26 01:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!