[[20080512170553]] 『勤怠時間の計算』(桃の花) ページの最後に飛ぶ

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

 

『勤怠時間の計算』(桃の花)
 過去ログを色々見て色んな式を当てはめてみたのですが
 どれも理解が出来ず…。ご回答くださっている方には何度も同じ質問になって
 しまっていて大変申し訳ございませんが、どうぞ助けていただきたく思います…。。

    A     B    C    D      E     F     G     H
 1 出勤時間 退勤時間 休憩 休憩エラー 普通時間 普通残業 深夜時間 深夜残業
 2  9:00   23:00   60         8.00   4.00   0.00   1.00
 3  17:00    3:00   60         4.00   0.00   4.00   1.00
 4  12:00    21:00             !         8.00      1.00      0.00      0.00
 5   12:00     21:00     60                 8.00      0.00   0.00   0.00

 以上の様な表を作成したいのですが…。
 自動表示させたいのはD〜Hのセルです。
 ・時間は15分切り
 ・休憩は以下の条件に満たない場合はD列に「!」を表示させる
  ▽実働時間が6時間を超え8時間以下の場合は45分の休憩が必要
  ▽実働時間が8時間を越える場合60分の休憩が必要
  ☆勤務が深夜にかかる時は必ず普通時間の時間帯から休憩時間を引く
   なので、4行目の勤務の場合、60分の休憩を入力すればエラー表示がなくなる
     そして5行目のようになる…といった感じです。   

 他に必要な条件がありますでしょうか…。

 すみません。休憩エラー(D列)の部分はなんとか分かったのですが、
 E〜Hが未だに解決できません…。
 どなたかご教授お願いできませんでしょうか…。
 <桃の花>

 普通時間 普通残業 深夜時間 深夜残業
 これらの計算方法(区切り方)が分からないので回答が出ないのでしょう・・・・
 また、15分切りとは出勤時刻なのか勤務時間なのか、それともほかの部分?
 などなど不明な点があります。
 また、勤務時間の計算について回答すると泥沼に引きずり込まれてしまう傾向も無きにしも非ず・・・
 ということで、サイトの紹介とさせていただきます。
http://www.h3.dion.ne.jp/~sakatsu/WorkingTimeCalc.htm
↑の7.勤務時間計算の例あたりの数式を利用されたらいかがでしょう? (Hatch)


 Hachiさんありがとうございます。
 私の質問では条件が足らなさすぎました…。申し訳ありません。
 過去の例を拝見していても質問と回答の繰り返しで
 初心者の私にはその経緯が理解できずにいました。。

 15分切り … 出勤時間、退勤時間、休憩も入力する段階で15分切りで入力します。

 普通時間 … 5:00〜22:00の間に働いている8時間内の時間
               (休憩時間はどんな時もこの普通時間からマイナスされます)
 普通残業 … 5:00〜22:00の間に働いている8hを超えた時間
 深夜時間 … 22:00〜5:00の間に働いている時間
 深夜残業 … 8h以上の部分で、深夜時間(22:00〜5:00)にかかっている時間

 もし、上記の内容でご理解いただけるのでしたらお教えいただきたく思います…。
 まずは教えて頂いたサイトを参考にさせていただき頑張って作成してみます。
 ありがとうございます。 


 > すみません。休憩エラー(D列)の部分はなんとか分かったのですが、
 助かった、理論的に難しいなぁと思っていた部分なので。

 その他の列は、こんなことでどうでしょうか?
        ↓
 (1) E2セル =ROUND(MIN("8:00",MIN("22:00",B2+(B2<A2))-A2-C2/1440)*24,2)
 (2) F2セル =ROUND(MAX(0,(B2-A2+(B2<A2)-C2/1440)-"8:00"-H2/24)*24,2)
 (3) G2セル =ROUND((B2-A2+(B2<A2)-C2/1440)*24-E2-F2-H2,2)
 (4) H2セル =ROUND(MIN(MAX(0,(B2-"22:00"+(B2<A2))),MAX(0,(B2-A2+(B2<A2)-C2/1440)-"8:00"))*24,2)

 結果図
 行   ___A____  ___B____  _C__  ____D_____  __ E ___  __ F ___  ___G____  ___H____
  1   出勤時間  退勤時間  休憩  休憩エラー  普通時間  普通残業  深夜時間  深夜残業
  2   9:00      23:00       60                 8.00      4.00      0.00      1.00 
  3   17:00     3:00        60                 4.00      0.00      4.00      1.00 
  4   12:00     21:00           !             8.00      1.00      0.00      0.00 
  5   12:00     21:00       60                 8.00      0.00      0.00      0.00 

 (半平太)

 半平太さんありがとうございます!!
 思っていた通りの結果が出ました!

 コメントが衝突してしまったようですが
 休憩エラーの表示はA〜Cを使って算出していますので大丈夫です。

 こちらのサイトの皆さんは本当に親切でとても感謝しています(T_T)
 本当にありがとうございました。

 <桃の花>
 度々すみません…。 半平太さんの式で

 22:00〜翌7:00(31:00) 休憩60

 を入力すると

 普通時間=-1 / 深夜時間=9 となります…。

 22:00〜24:00の間からの勤務開始で、休憩時間を入力すると
 計算がうまくいかなくなるような感じです。

 希望としては

 普通時間=1 / 深夜時間=7 となって欲しい所なのですが…。

 可能でしょうか…?

 だらだら書いてたら、衝突。
時間計算しかも出勤時間関連は、きらい。なので間違いも多々あると思いますが、無責任にもUPします。
計算が面倒なので、作業列(E・F列)を設けて、↓こんな感じにしました。
 	A	B	C	D	 E	 F	  G	 H	 I	 J
 1	出勤時間	退勤時間	休憩 休憩エラー 普通時間帯	深夜時間帯 普通時間	普通残業	深夜時間	深夜残業
 2	9:00	23:00	60		13:00	1:00	8:00	4:00	0:00	1:00
 3	17:00	3:00	60		5:00	5:00	4:00	0:00	4:00	1:00
 4	12:00	21:00		!	9:00	0:00	8:00	1:00	0:00	0:00
 5	0:00	7:00	45		2:00	5:00	1:15	0:00	5:00	0:00
 D2セル
=IF(C2=IF(IF(B2<A2,1,0)+B2-A2>--"8:00",60,IF(IF(B2<A2,1,0)+B2-A2>--"6:00",45,0)),"","!")
 E2セル
=IF(A2<B2,MIN(B2,"22:00")-MAX(A2,"5:00"),IF(B2>=--"5:00",MIN(B2,"22:00")-"5:00",0)+IF(A2<=--"22:00","22:00"-MAX(A2,"5:00"),0))
 F2セル
=IF(A2>B2,1,0)+B2-A2-E2
 G2セル
=IF(E2-C2/60/24<0,0,MIN("8:00",E2-C2/60/24))
 H2セル
=IF(E2<C2/60/24,0,E2-C2/60/24-G2)
 I2セル
=IF(SUM(E2:F2,-C2/60/24)>--"8:00","8:00"-G2-IF(E2>=(C2/60/24),0,E2-C2/60/24),SUM(E2:F2,-C2/60/24)-SUM(G2:H2))
 J2セル
=SUM(E2:F2,-C2/60/24)-SUM(G2:I2)
上記下方コピー。
(sin)

  >22:00〜翌7:00(31:00) 休憩60
 そんな遅い勤務時間があるのですか。理屈としてはあり得ますけど、、

 すると、1:00〜23:00(早出長時間)とか、23:30〜23:00(遅出長時間)も理屈としては考えられますね。
 更に 22:00〜5:00なんて云う、普通時間帯が全然ない場合も考えられる。

 なんか、泥沼になりそう(^^ゞ  私は一旦おります。(気が向いたら戻ります) m(__)m

 (半平太)

<桃の花>

 sinさん
 ありがとうございます!
 例として書いている内容については出来ました☆
 他の事例も試してみます。ありがとうございましたm(_ _)m

 半平太さん
 そうなんです…。
 24時間いつでも出勤/退勤が可能で、(24時間以上の勤務はさすがにありませんが)
 半平太さんがおっしゃるような例も実際あります。。
 そうなるとまたややこしくなるのでしょうね…。
 ここまで考えてくださってありがとうございましたっ。
 感謝しておりますm(_ _)m


 >半平太さんがおっしゃるような例も実際あります。。

 あるのですか。。。
  1.それで、1:00〜23:00だったら、4種類の時間計算はどのような結果が正解になるのですか?

  2.ちなみに、計算結果は h:mm でもいいですか? 当初サンプルでは、10進数 に見えたのですが。

 (半平太)

 <桃の花>

 半平太さん度々ありがとうございます(ノ_・)

 1:00〜23:00(休憩を60分取るものとします)だったら
  普通時間 … 4h
  普通残業 … 12h
  深夜時間 … 4h
  深夜残業 … 1h    となります。

 【時間の経過と照らし合わせると…】

 1:00      5:00        10:00                    22:00 23:00
  |――――|―――――|――――――――――――|―|
   └───┘└┴───┘└───────────┘└┘
     ↑   ↑   ↑        ↑             ↑
    深夜時間  ↑   普通時間          普通残業       深夜残業
      (4h)    ↑     (4h)              (12h)          (1h)
              ↑
             どんな時も普通時間から休憩を引くので
             ここで休憩を引きます。(1h)

 という感じになります。

 また、計算結果は10進数が希望ですが、h:mmでも大丈夫です。
 度々恐れ入りますが宜しくお願い致しますm(_ _)m


 > 1:00〜23:00(休憩を60分取るものとします)だったら
 >  普通時間 … 4h
 >  普通残業 … 12h
 >  深夜時間 … 4h
 >  深夜残業 … 1h    となります。
えっえ〜〜???
上から、8,8,0,5 じゃ無いんですか?
お答えの通りなら、私の式では出ません。最初の例を元にしてますので。 ←ここに勘違い発見!
(sin) おじゃましました。 & ちょっと追記。


 ※ 計算が複雑になるので、多めに作業列(舞台裏)を使います。
 ※ 時間は、 h:mm とします。
 ※ A列は、「氏名」にします。
   (他のレイアウトにしたい場合は、数式中の範囲は変えても、Column(A1)、Column(B1)、、は変えないようにしてください。)

 1.舞台裏 (K:P列)
   (1) K2セル =MAX(0,MIN($C2+($C2<$B2),INDEX({0;5;22;29;46;53},COLUMN(B1))/24)
              -MAX(INDEX({0;5;22;29;46;53},COLUMN(A1))/24,MIN($B2,INDEX({0;5;22;29;46;53},COLUMN(B1))/24)))

       これをO列(オー列)までフィルコピー

  (2) P2セル =SUM(K2:O2)-D2/1440

  行   __K__  __L__  __M__  __N__  __O__  _____P______  
   1   深夜1  普通1  深夜2  普通2  深夜3  休憩除く合計  
   2   0:00   13:00  1:00   0:00   0:00   13:00         
   3   0:00   5:00   5:00   0:00   0:00   9:00          
   4   0:00   9:00   0:00   0:00   0:00   9:00          
   5   0:00   9:00   0:00   0:00   0:00   8:00          
   6   0:00   0:00   7:00   2:00   0:00   8:00          
   7   0:00   0:00   7:00   3:00   0:00   9:00          
   8   4:00   17:00  1:00   0:00   0:00   21:00         
   9   0:00   0:00   5:30   17:00  1:00   22:30         

 2.表舞台
  (1) F2セル =MAX(0,L2+N2-D2/1440-G2)
  (2) G2セル =MAX(0,MIN(N2,(P2-"8:00"-O2)))+MAX(0,MIN(L2,(P2-"8:00"-O2-N2-M2)))
  (3) H2セル =P2-F2-G2-I2
  (4) I2セル =MAX(0,MIN(O2,(P2-"8:00")))+MAX(0,MIN(M2,(P2-"8:00"-O2-N2)))

  行   ___A____  ___B____  ___C____  _D__  ___ E ____  __ F ___  ___G____  ___H____  ___I____
   1   氏名      出勤時間  退勤時間  休憩  休憩エラー  普通時間  普通残業  深夜時間  深夜残業  
   2   半平太01  9:00      23:00       60              8:00      4:00      0:00      1:00      
   3   半平太02  17:00     3:00        60              4:00      0:00      4:00      1:00      
   4   半平太03  12:00     21:00           !          8:00      1:00      0:00      0:00      
   5   半平太04  12:00     21:00       60              8:00      0:00      0:00      0:00      
   6   半平太05  22:00     7:00        60              1:00      0:00      7:00      0:00      
   7   半平太06  22:00     8:00        60              1:00      1:00      7:00      0:00      
   8   半平太07  1:00      23:00       60              4:00      12:00     4:00      1:00      
   9   半平太08  23:30     23:00       60              2:30      13:30     5:30      1:00      

  (半平太)

 懲りずにお邪魔します。
半平太さんよりの回答がありますので、私のは無視していただいても結構です。ただの自己満足なので。。。
(半平太さんの例と同じ結果になってはいます。)
 仕切り直して、作業列は1列(E列)のみです。↓こんな感じ。
 	A	B       C      D	         E	 F	G	 H	 I
 1    出勤時間  退勤時間  休憩  休憩エラー  8h終了時刻  普通時間  普通残業  深夜時間  深夜残業
 2      9:00    23:00     60	       18:00	8:00	4:00	 0:00	 1:00
 E2セル
=MOD(MIN(A2+"8:00"+C2/60/24,(A2>B2)+B2),1)
 F2セル
=IF(E2<=--"5:00","22:00",MIN(E2,"22:00"))-IF(A2>=--"22:00","5:00",MAX("5:00",A2))-C2/60/24
 G2セル
=MAX(IF(A2>=--"22:00",IF(A2>B2,MIN("22:00",B2)-"5:00",0),IF(A2>B2,MAX("5:00",B2)-"5:00",MIN(B2,"22:00")-MAX(A2,"5:00")))-C2/60/24-F2,0)
 H2セル
=MAX((A2>E2)+E2-A2-C2/60/24-F2,0)
 I2セル
=(A2>B2)+B2-A2-C2/60/24-SUM(F2:H2)
どの式も ( 上の式 )*24 とすれば、時間単位になります。
※必ず普通時間が存在するものとして考えてます。
(sin)


 <桃の花>

 半平太さんありがとうございます!
 感動です(*_*)
 注意事項に気をつけながら使わせていただきますm(_ _)m

 sinさんありがとうございます。
 普通時間がない場合もありますので、半平太さんの式を使わせていただきます。
 考えてくださってありがとうございましたm(_ _)m 

コメント返信:

[ 一覧(最新更新順) ]


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