• ベストアンサー

エクセルで次の文章を関数にすると?

出勤時間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 よろしくお願いします。

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

  • ベストアンサー
  • sige1701
  • ベストアンサー率28% (74/260)
回答No.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") >の方がスッキリしてませんか? こんな条件どこにありましたか? 因みに、小数誤差を考慮した方がいいのでは

a_doahoo
質問者

補足

あ!出来てる!凄い。 有難う御座いました。 >=FLOOR(B1,"0:30")+(B1<A1)-CEILING(A1,"0:30") の様な方法はないですか?と書きたかったです。

その他の回答 (2)

  • zug
  • ベストアンサー率70% (82/116)
回答No.2

明らかに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))

a_doahoo
質問者

補足

=FLOOR(B1,"0:30")+(B1<A1)-CEILING(A1,"0:30") の方がスッキリしてませんか? で、 >19時~翌5時(4:59:59)までの労働時間を計算せよ。 >5時~19時(18:59:59)までを除外せよ。 が、質問なのですが・・・

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

課題か何かのようですのでヒントだけ 日付を含めて時間計算すると幸せになれますよ エクセルは時間と日付をシリアル値という数値で扱っています 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 となります  「シリアル値」をエクセルのヘルプで検索すると更に詳しい説明を知ることができます

a_doahoo
質問者

補足

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

関連するQ&A