[[20070117084845]] 『残業時間の計算について』(たかあき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『残業時間の計算について』(たかあき)
 残業時間の計算をしたいのですが、過去のものを見てはみたのですが、
 自分が初心者すぎて応用が利きません。どなたか、お助け下さい。
 入力項目は「出勤時間」「退社時間」のみで、「残業時間」の計算です。
 条件としては、
 (1)「出勤時間」は6:00〜13:00、「退社時間」は12:00〜30:00(翌朝6:00)
    両方とも30分単位しか入力しません。
 (2)休憩時間は12:00〜13:00の1時間、19:30〜20:00の30分、
    24:00〜25:00の1時間。
 (3)「残業時間」は通常勤務時間の8時間と休憩時間を引いた値で、
    ○.○(3.5とか)と表示。また、勤務時間が8時間に満たない場合は、
    -(マイナス)にて表示。
    「出勤」 9:00、「退社」20:30の場合、「残業」は 2.0
    「出勤」10:00、「退社」15:00の場合、「残業」は-4.0
       という感じです。
 宜しくお願い致します。

 うーん ここまでいろいろな残業時間の計算が出てきたけど
 何で1つのセルで計算しようとするのかな?
 できれば 午前中仕事しているか
 午後仕事しているか
 夜の休憩前の仕事・後の仕事
 残業時間・深夜残業時間とセルを分けて入力して
 自分で作った方がいいと思う
 全文検索で 残業あたりで検索すると答えが出ると思うけど
 式が長くて理解しにくいと思う
 (doka)
 いらないセルは セル幅0にして印刷しないか
 グループ化して隠すとかいろいろあるんだけど
 excelは大きなシートが使えるのだから

 御返事ありがとうございます。
 セルを分けたいのですが、勤怠のフォームが決まっているので
 やむをえず1つのセルでの計算となってしまうのです。
 (たかあき)

 >セルを分けたいのですが、勤怠のフォームが決まっているので
 >やむをえず1つのセルでの計算となってしまうのです。
 印刷用に作った範囲と別のところで計算させれば良いだけではないのですか?
 或いは、 doka さんも言われてますが、不必要な部分は非表示にでもすれば良いだけでは。
    (TORI)


 dokaさんと、TORIさんに賛成です。
 それでもあえてというなら、とりあえず一例として

 =(B1-A1)*24-8-AND(A1<"12:00"*1,B1>"13:00"*1)-AND(A1<"19:30"*1,B1>"20:00"*1)/2-AND(A1<"24:00"*1,B1>"25:00"*1)

 12:00出勤とか、13:00退社、みたいなことがないことが前提です。
 (sato)


 皆様、ありがとうございます。
 他のセル使用などの御意見をこちらで相談した結果、却下されてしまいました。
 折角の御意見でしたが、すいませんです。

 ということで、satoさんの式を試してみました。
 一部計算が合わないのですが、
 「出勤」9:00、「退社」20:00の場合、「残業」は 1.5、計算値は2.0
 「出勤」9:00、「退社」13:00の場合、「残業」は 5.5、計算値は6.5
 となってしまいました。
 この場合も、
 > 12:00出勤とか、13:00退社、みたいなことがないことが前提です。
 に含まれてしまうのでしょうか?


 「12:00出勤とか、13:00退社、みたいなことがないことが前提です」としたのは、

 >「出勤」9:00、「退社」20:00の場合、「残業」は 1.5、計算値は2.0
 この場合、最後の19:30〜20:00の0.5時間は休憩時間なので、
 最初から出勤 9:00 退社 19:30 とするほうが自然だと思ったからです。

 =(B2-A2)*24-8-AND(A2<="12:00"*1,B2>="13:00"*1)-AND(A2<="19:30"*1,B2>="20:00"*1)/2-AND(A2<="24:00"*1,B2>="25:00"*1)

 このように変更すると希望どおりになりますか?
 (sato)


 satoさん、新しい式で試したところ、うまくいきました。
 ありがとうございます。
 ですが、新たに別の不具合が見つかりました。
 (1)退社時間を"0:30"とすると、"0:00"、"1:00"と同じに
    ならなければいけないはずなのですが、0.5時間ずれてしまいます。
 (2)出勤を"9:00"でずっと試していたのですが、時間を変えると
    1.77636E-15 とか表示されてしまいます。
    これは誤差で、シリアル値が・・・というものでしょうか?
    過去のものを見てはみましたが、よくわかりませんでした。
 宜しくお願い致します。


 最初から詳しく検証する時間がないので付け焼刃的な式で申し訳ありませんが、

 =FLOOR((B1-A1)*24,0.5)-8-AND(A1<="12:00"*1,B1>="13:00"*1)
 -AND(A1<="19:30"*1,B1>="20:00"*1)/2-AND(A1<="24:00"*1,B1>="25:00"*1)
 -OR(A1="12:30"*1,B1="12:30"*1,A1="24:30"*1,B1="24:30"*1)/2

 としてみました。
 (sato)

 ----
 30分単位で入力と言う事で
 =MAX(B1*24-A1*24-SUMPRODUCT((A1*24<{12.5,13,20,24.4,25})*(B1*24>={12.5,13,20,24.4,25}))/2-8,0)
(HJI)



 satoさん、付け焼刃などとんでもないです。
 上手く出来ました!本当助かりました。
 教えて頂いた式をそのまま入力していただけなので、
 自分なりに解読してみたいと思います。

 HJIさんもありがとうございます。
 式を試してみました。
 入力は30分単位で、結構です。
 残業時間(勤務が8時間以上)の値は、うまくいきました!
 勤務が8時間に満たない場合も-(マイナス)にて表示したいのです。
 いかがでしょうか?


 =B1*24-A1*24-SUMPRODUCT((A1*24<{12.5,13,20,24.4,25})*(B1*24>={12.5,13,20,24.4,25}))/2-8


 出来ました。ありがとうございました。
 色々な方法があるんですね。
 (たかあき)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.