[[20050526175708]] 『勤務時間・休憩時間』(えふ) ページの最後に飛ぶ

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

 

『勤務時間・休憩時間』(えふ)

 出退時間はそれぞれですが、休憩時間は決まってます。
 1日の勤務時間(D)と休憩時間(C)が計算できる方法を教えてください。
 また、休憩時間が2パターンあるので、それぞれの場合の計算方法をお願いします。

 ・休憩時間
 @出退時間に「8:00〜9:00 12:00〜13:00 18:00〜19:00 23:00〜24:00」が
 含まれる場合。

 A勤務時間 休憩時間
 0.0〜6.0   0.0 
 6.5〜12.0   1.0
 12.5〜18.0   2.0
 18.5〜24.0   3.0
  Aのパターンの場合、6.5時間以上勤務時間を越えたら休憩を1時間とりなさいという意味です。

 ・出勤退勤の時間は30分単位とし、休憩時間と勤務時間は少数点表示

       A     B     C      D
     出勤時間  退勤時間  休憩時間  勤務時間
 1(月)  9:00   18:00   1.0     8.0
 3(水)   9:00   23:30   2.5     14.0 
 2(火)  8:30   20:00   2.5     9.0
 4(木)  19:00    4:00   1.0     8.0
           翌日の4時は28:00と表示するべきでしょうか?

 (2)の場合の計算ですが、
 >6.5時間以上勤務時間を越えたら休憩を1時間とりなさいという意味です。
 退勤時刻-出勤時刻が6.5時間以上の場合、休憩を1時間計上すると読みました。
休憩時間D2:=LOOKUP(ROUND(C2*1440,0)-ROUND(B2*1440,0),{0,0;390,1;750,2;1110,3})
勤務時間E2:=(ROUND(C2*1440,0)-ROUND(B2*1440,0))/60-D2
とすると、下のようになりました。
 # (1)と(2)の使い分けの規則?が分からない  (Hatch)
A	B	C	D	E
	出勤時間	退勤時間	休憩時間	勤務時間
1(月)	9:00	18:00	1.0	8.0
3(水)	9:00	23:30	2.0	12.5
2(火)	8:30	20:00	1.0	10.5
4(木)	19:00	28:00	1.0	8.0


 (1)の休憩が基本となります。
  平日勤務の場合は、予め(1)の休憩が時間で設定されてます。
 (2)の場合は休日出勤した場合の休憩時間になります。

 よって、同じ時間勤務しても、平日か休日かによって
 休憩時間、勤務時間が変わってきます。
 (最初に表示したのは(1)のパターンでした)

 休日出勤の判定はどこで行うのでしょうか? (Hatch)


 説明不足ですみません。
 月〜金曜日は平日、土曜、日曜は休日出勤となります。
 1ヶ月単位で管理、集計するので式が混在した表になります。(えふ)

 マクロでの処理を書いてみました。
 時間区分というシートに時間帯を書くようにしています。
 (これが邪魔ならマクロの中に記述することになります)
 テスト結果は下のようになっています。
 サンプルは↓に f_01.xls としてUpしておきます。 (Hatch)
http://www.geocities.jp/hatch4700/index.html
日にち	開始時刻	終了時刻	休憩時間	勤務時間
1(月)	9:00	18:00	1.0	8.0
3(水)	9:00	23:30	2.5	12.0
2(火)	8:30	20:00	2.5	9.0
4(木)	19:00	28:00	1.0	8.0
6(土)	9:00	18:00	1.0	8.0
7(日)	9:00	23:30	2.5	12.0
13(土)	8:30	20:00	1.0	10.5
14(日)	19:00	28:00	1.0	8.0
 
Private Sub Worksheet_Change(ByVal Target As Range)
Dim 時間帯 As Variant
Dim i As Integer, j As Integer
Dim 開始時刻 As Integer, 終了時刻 As Integer
Dim 稼働時間 As Integer, 休憩時間 As Integer
Dim 時間(9) As Integer
Dim 曜日 As Integer
'-----計算をしないでVBAを抜ける条件-----
If Target.Count <> 1 Then Exit Sub
If Target.Column < 2 Or Target.Column > 3 Then Exit Sub
If Target.Row = 1 Then Exit Sub
If (Target.Column = 2 Or Target.Column = 3) And Target = "" Then
    Cells(Target.Row, 4) = ""
    Cells(Target.Row, 5) = ""
    Exit Sub
End If
If Target.Column = 2 And Target.Offset(, 1) = "" Then Exit Sub
If Target.Column = 3 And Target.Offset(, -1) = "" Then Exit Sub
'-----各時間帯と開始/終了時間の読み込み&分換算-----
時間帯 = Worksheets("時間区分").Range("B1:C9").Value
    For i = 1 To 9
        For j = 1 To 2
            時間帯(i, j) = Round(時間帯(i, j) * 1440, 0)
        Next j
    Next i
    開始時刻 = Round(Cells(Target.Row, 2).Value * 1440, 0)
    終了時刻 = Round(Cells(Target.Row, 3).Value * 1440, 0)
'-----各時間帯の在席時間を計算-----
    For i = 1 To 9
        If 開始時刻 >= 時間帯(i, 2) Or 終了時刻 <= 時間帯(i, 1) Then
            時間(i) = 0
        Else
            時間(i) = Application.WorksheetFunction.Min(終了時刻, 時間帯(i, 2)) - _
            Application.WorksheetFunction.Max(開始時刻, 時間帯(i, 1))
        End If
    Next i
'-----稼働時間と休憩時間の計算-----
曜日 = Weekday(Cells(Target.Row, 1).Value)
Select Case 曜日
Case 1 Or 7
    For i = 1 To 9
        稼働時間 = 稼働時間 + 時間(i)
    Next i
    If 稼働時間 <= 360 Then
        休憩時間 = 0
    ElseIf 稼働時間 <= 720 Then
        休憩時間 = 60
    ElseIf 稼働時間 <= 1080 Then
        休憩時間 = 120
    ElseIf 稼働時間 <= 1440 Then
        休憩時間 = 180
    End If
        稼働時間 = 稼働時間 - 休憩時間
Case Else
    稼働時間 = 時間(1) + 時間(3) + 時間(5) + 時間(7) + 時間(9)
    休憩時間 = 時間(2) + 時間(4) + 時間(6) + 時間(8)
End Select
    Cells(Target.Row, 5).Value = 稼働時間 / 60  '1440
    Cells(Target.Row, 5).NumberFormat = "0.0"
    'Cells(Target.Row, 5).NumberFormat = "h:mm"
    Cells(Target.Row, 4).Value = 休憩時間 / 60  '1440
    Cells(Target.Row, 4).NumberFormat = "0.0"
    'Cells(Target.Row, 4).NumberFormat = "h:mm"
End Sub


 とっても恥ずかしいのですが、この計算の意味がわかりません。
 最初の計算方法のような、比較的単純な方法はありませんか。
 月〜金、土日(昨日のを参照します)それぞれの方法でかまいませんので・・・。

 作業列を一杯使い、各時間帯別に勤務時間を求めて、後で合計する方法です。
 # 複雑な計算式を考えずにすむので、ここでの回答に多用しています(^^;)
 説明がしにくいので、サンプルを下に f_02.xls としてUpしておきます。
 計算方法はVBAとほとんど同じで、
 Min(終了時刻, 各時間帯の終了時刻) - Max(開始時刻, 各時間帯の開始時刻) です。(Hatch)
http://www.geocities.jp/hatch4700/index.html


 分かりやすい表を作成して頂きありがとうございます。早速挑戦したいと思います。(えふ)

コメント返信:

[ 一覧(最新更新順) ]


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