[[20050929145016]] 『勤務時間表』(名古屋嬢) ページの最後に飛ぶ

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

 

『勤務時間表』(名古屋嬢)

[[20050922115345]] 『隔週土曜の処理について』(名古屋嬢)

 先日、隔週土曜について教えていただいた者です。
 その後も頑張って作っているのですが、
 勤務時間の計算に困っています。
 社長からの指示で、

 出勤時間から9時間を通常勤務時間。
 22:00 〜 29:00 を深夜残業時間。
 通常勤務時間終了から深夜残業開始(22:00)までを普通残業時間。

 とするように指示がありました。
 深夜残業時間は退社時間から22:00を引くことで求められるのですが、
 他の勤務時間について色々な場合を考えてみたのですが、頭が混乱気味です。
 どのようにすれば良いでしょうか?

 −−−
 私なりに場合分けを考えてみました。

◎ 出社から9時間以内に深夜残業時間にならない場合

 ☆ 出社時間=13:00のとき
 @ 退社時間−出社時間(13:00)≦9時間のとき ・・・ すべて普通勤務時間
 A 退社時間−出社時間(13:00)>9時間のとき ・・・ 深夜残業+普通勤務9時間

 ☆ 出社時間<13:00のとき
 @ 退社時間−出社時間≦9時間のとき ・・・ すべて普通勤務時間
 A 退社時間−出社時間>9時間のとき
 1)退社時間<22:00のとき ・・・・・・・・ 普通勤務+普通残業
   (退社時間−出社時間)−9時間 = 普通残業

 2)退社時間≧22:00のとき ・・・・・・・・ 普通勤務+普通残業+深夜残業
    退社時間 − 22:00=深夜残業時間
   (退社時間−出社時間)−9時間−深夜残業時間=普通残業時間

 ◎ 出社から9時間以内に深夜残業時間になる場合
 ☆ 出社時間>13:00のとき
 @ 退社時間<22:00の場合 ・・・・・・・・・・・・・ すべて普通勤務
   
 A 退社時間≧22:00の場合 ・・・・・・・・・・・・・ 普通勤務+深夜残業
         退社時間 − 22:00=深夜残業
     22:00−出社時間=普通勤務時間

 休憩時間について
 ・ 勤務時間≦6時間 ・・・・・・・・・・・・・・・ 休憩なし
 ・ 6時間<勤務時間≦9時間 ・・・・・・・・ 1時間
 ・ 9時間<勤務時間≦12時間30分 ・・・ 1.5時間
 ・ 12時間30分<勤務時間≦20時間・・・ 2時間
 ・ 20時間<勤務時間 ・・・・・・・・・・・・・・ 3時間

 という条件があります。

 こんなにたくさんの条件を式にするなんて可能でしょうか?

 まずは叩き台として・・・この様↓な計算でどうでしょうか?
C2=IF(COUNT(A2:B2)<2,"",IF(SUM(D2:F2)-"20:00">0,TIME(3,0,0),IF(SUM(D2:F2)-"12:30">0,
TIME(2,0,0),IF(SUM(D2:F2)-"9:00">0,TIME(1,30,0),IF(SUM(D2:F2)-"6:00">0,TIME(1,0,0),"")))))
D2=IF(COUNT(A2:B2)<2,"",B2-A2-SUM(E2:F2))
E2=IF(OR(COUNT(A2:B2)<2,B2-A2-SUM(F2)-"9:00"<=0),"",B2-A2-SUM(F2)-"9:00")
F2=IF(OR(COUNT(A2:B2)<2,AND(B2<TIME(22,0,0),A2>TIME(29,0,0))),"",TEXT(MIN(B2,"29:00")-MAX(A2,"22:00"),"h:mm")*1)
	A	B	C	D	E	F
1	出社時刻	退社時刻	休憩時間	普通	残業	深夜
2	10:00	20:00	1:30	9:00	1:00	
3	13:00	21:00	1:00	8:00		
4	13:00	25:00	1:30	9:00	0:00	3:00
5	13:00	26:00	2:00	9:00		4:00
6	18:00	22:00		4:00		0:00
7	18:00	24:00		4:00		2:00
8	22:00	25:00		0:00		3:00

 時間の計算は演算誤差が問題になるので、分単位の整数値で計算するのが良さそうです。
 数式が長くなるので、取りあえず上の計算方法でよいでしょうか?
 良い場合はROUND関数を使って分単位に時刻を直してやればいいと思います。
 良くない場合は数式を考え直さないといけません。
   (Hatch)


 Hatch さま

 いつも心強い解答をありがとうございます。
 本当に感激です。
 さっそく計算式を入力し、思いつくまま出勤時間と退社時間を入力してみました。
 そうすると、

 出勤  退社

 3:00    20:00  → #VALUE! となります。(すべての項目で)

 22:00   29:00 → 普通が ##### となります。

 それぞれの式の意味がよくわからないので、
 私には原因がわかりません。
 申し訳ありませんが理由を教えていただけないでしょうか?

 PS. 普通の会社では22:00出社や3:00出社なんてあり得ないですよね?
     私の会社ではこのような勤務があります。よろしくお願いします。

 #VALUE!となったのは条件の書き間違い。
 #####となったのは多分演算誤差
 よって、下のように書き直してみました。ROUND関数で分単位での計算としています。

 C2=IF(COUNT(A2:B2)<2,"",
IF(ROUND(SUM(D2:F2)*1440,0)-1200>0,TIME(3,0,0),
IF(ROUND(SUM(D2:F2)*1440,0)-750>0,TIME(2,0,0),
IF(ROUND(SUM(D2:F2)*1440,0)-540>0,TIME(1,30,0),
IF(ROUND(SUM(D2:F2)*1440,0)-360>0,TIME(1,0,0),"")))))

 D2=IF(COUNT(A2:B2)<2,"",TEXT((ROUND(B2*1440,0)-ROUND(A2*1440,0)-ROUND(SUM(E2:F2)*1440,0))/1440,"h:mm")*1)

 E2=IF(OR(COUNT(A2:B2)<2,ROUND(B2*1440,0)-ROUND(A2*1440,0)-ROUND(SUM(F2)*1440,0)-540<=0),"",
TEXT((ROUND(B2*1440,0)-ROUND(A2*1440,0)-ROUND(SUM(F2)*1440,0)-540)/1440,"h:mm")*1)

 F2=IF(OR(COUNT(A2:B2)<2,ROUND(B2*1440,0)-1320<0,ROUND(A2*1440,0)-1740>0),"",
TEXT((MIN(ROUND(B2*1440,0),1740)-MAX(ROUND(A2*1440,0),1320))/1440,"h:mm")*1)
以上でどうでしょう。 (Hatch)


 こんなに遅い時間まで、申し訳ありません。
 さっそく計算式を入れてみます。

                        名古屋嬢


 Hatch さま
 出来ました!
 う〜ん、すごい!
 私の頭の中であんなに混乱していたものが・・・。
 感激です。
 Hatch さまのようなExcelの達人に少しでも近づけるよう、
 この式を時間がかかっても絶対に解読します。
 本当にありがとうございました。

              名古屋嬢 (o^v^o)


 >私の頭の中であんなに混乱していたものが・・・
 計算は結構簡単な考え方で求めています。
深夜残業時間は22:00〜29:00の勤務時間を求めています。
普通残業は勤務時間から深夜残業を引いて、9時間を超える時間数を求めています。
通常勤務時間は勤務時間から普通残業と深夜残業を引いています。
以上の計算になっていますので、間違いがないか確認してください。
  (Hatch)


 なるほど。
 最初に深夜残業時間を求める。までは気が付いたのですが・・・。
 色々な場合を考えていくうちに思考が固まってしまいました。

 今、Excelの本を片手に調べているのですが、上記に出てくる計算式の中で、

 ROUND(B2*1440,0) の1440 の意味と
 COUNT(A2:B2)<2 の2の意味がわかりません。

 こんなこと!と笑われてしまうかもしれませんが、
 教えていただけるととても参考になります。

 もしかして・・・。
 1440は60*24のことですね?

 >1440は60*24のことですね?
 そうです。時間(シリアル値)を分単位にしています。
 そして、ROUND関数で分単位の整数値にしています。
 >COUNT(A2:B2)<2 の2の意味がわかりません。
 A2:B2セルに数値が入力されているかどうかを調べています。
 IF(COUNT(A2:B2)<2,"",・・・としてA2,B2セル両方に数値の入力がない時、
 空白(長さ0の文字列)を返すようにしています。
 そのため、計算式中に空白(文字列)があるとエラーとなるのを回避するため、
 ・・・-ROUND(SUM(F2)*1440,0)-540)・・・のようにSUM関数を入れてあります。
    (Hatch)


 Hatch さま

 ありがとうございました。
 今日の午前中いっぱいかかって計算式の意味をすべて理解しました。(時間がかかりすぎ?)
 こんな計算式をすぐに作れるなんてすごい!憧れます。
 これからもExcelを勉強しますので、困ったときはまたご相談に乗って下さい。
 よろしくお願いします。
 本当にありがとうございました。

                名古屋嬢 (o^v^o)


コメント返信:

[ 一覧(最新更新順) ]


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