[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『タイムカードの休憩時間控除について』(つぼ)
エクセルの数式で休憩時間を控除できるか教えてください。
働いているお店で、勤怠の担当になったので手計算ではなく、
エクセルで自動計算ができればと思い、
下記のように作成中です。
A B C D E F G
1 出勤 退勤 A B C 合計
2 4/1 8:00 14:00 3.0 3.0 6.0
3 4/2 8:00 17:00 3.0 6.0 9.0
勤務時間によって時給が違うので、働いた時間を
A(5:00-11:00),B(11:00-22:00),C(23:00-5:00)の
3ブロックに分けて計算する必要があるのですが、
Gの合計が6時間以上超えた場合、一番時給が低いB時間帯から
休憩1時間を控除したいのです。
(上でいうと、4/2のG時間で判断、Bの時間を6.0→5.0になるようにしたいです。)
列や行を増やすことも可能ですので、違うやり方や、数式に詳しい方ご教授ください。
< 使用 Excel:Excel2013、使用 OS:WindowsXP >
回答じゃあないんだけど、 1)BとC勤務の間、22時〜23時は仕事ないのかな? 2)6時間以上ではなく、6時間を超えた場合、でいいんだよね(6時間は含まない) 3)6時間を超えて8時間以下なら、45分が最低休憩時間だけど、就業規則が1時間になっているのかな? 4)8時間を超えた場合はどうすればいいですか? 5)C→A勤務の場合はどっちを優先させて休憩扱いにしますか? 6)Bが仮に1時間未満だった場合、さかのぼってA勤務・またはC勤務から控除しますか?
(稲葉) 2015/04/09(木) 14:36
あとそうだ、8:00〜14:30の場合、5.5時間になるけどそれでもいいのかな? (稲葉) 2015/04/09(木) 14:42
1)すみません!入力間違いました。Cは22時〜5時です。
2)6時間は含まず、超えた場合です。
3)店の単位?が0.5時間になっているので、1時間休憩になっています。
4)8時間を超えた場合は、休憩なしで残業がほとんどなので、1時間休憩のみでOKです。
5)C→A勤務の場合は、Aを優先で休憩扱いにしたいです。
6)Cが1時間未満の場合は、Aから控除したいです。
また、8:00〜14:30の場合、5.5時間になるようにしていただけると助かります。
言葉足りずにすみません。よろしくお願いいたします。
(つぼ) 2015/04/09(木) 17:25
聞いておいてあれだけど、時間の計算苦手なので、エキスパートさんの回答お待ちください!!!
(稲葉) 2015/04/09(木) 18:16
タイムカードならば実際は中途半端な時間だと思いますが
(あ) 2015/04/09(木) 19:32
これだと数式は組めますか?
(つぼ) 2015/04/10(金) 08:44
コメント付かないねぇ・・・ 最初に回答したから責任持ちたいけど、空いた時間に考えてたけど、 やっぱり自信ないっす。
とりあえず、新しいブック作って、下記を実行してください。 新しいシートに、こちらで作った表と数式が入力されるようになっています。 Sub mkData() With Sheets.Add .Range("C1:G2").Value = [{"sTime","5:00","11:00","22:00","0:00";"eTime","11:00","22:00","24:00","5:00"}] .Range("A3:O3").Value = [{"日付","出勤","退勤","T1","T2","T3","T4","A´","B´","C´","休憩","A","B","C","備考"}] .Range("A4:C8").Value = [{"04/01","5:30","13:00";"04/02","20:00","3:30";"04/03","23:30","7:00";"04/04","10:30","22:30";"04/05","21:30","5:30"}] .Range("D4:G8").Formula = "=IF(COUNT($B4:$C4)<2,"""",ROUND(MAX(IF($C4>$B4,MIN($C4,D$2)-MAX($B4,D$1),MAX(D$2-MAX($B4,D$1),0)+MAX(MIN(MIN($C4,D$2)-D$1),0)),0)*24,1))" .Range("H4:I8").Formula = "=D4" .Range("J4:J8").Formula = "=SUM(F4:G4)" .Range("K4:K8").Formula = "=IF(SUM(D4:G4)>6,1,0)" .Range("L4:L8").Formula = "=IFERROR(MAX(H4-(K4-(I4-M4)),0),0)" .Range("M4:M8").Formula = "=IFERROR(MAX(I4-K4,0),0)" .Range("N4:N8").Formula = "=MAX(J4-(1-(SUM(H4:I4)-SUM(L4:M4))),0)" .Range("O4:O8").Value = [{"A-B";"B-C";"C-A";"A-C";"B-A"}] End With End Sub
(稲葉) 2015/04/13(月) 10:52
ありがとうございます!
しばらくコメントがなく、だめだと思い、サイト見てませんでした。
返信遅くなりすみません。
ちなみにこれはマクロですか?
(つぼ) 2015/04/15(水) 09:44
マクロです。 一度実行すれば、計算式と表が作成されますので あとは不要になります。 (稲葉) 2015/04/15(水) 12:49
ありがとうございます!
貴重な時間と知識を私の質問のために使っていただいて
何と御礼を伝えていいのやら・・・
私自身理解ができていないのですが
壊さないように使わせていただきます。
ありがとうございました。
(つぼ) 2015/04/16(木) 14:11
いや、いろんなパターン試して、間違いがないか確認してください。 網羅性検証の才能のなさには自信があります。 (稲葉) 2015/04/16(木) 14:16
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.