[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『タイムカードの計算方法について』(さちよん)
いつもお世話になっております。
初めての経験でさっぱりわからなく、過去ログを検索してみたのですが、
自分のものと当てはまるものがみあたらなく困っています。
時間の算出の方法について教えてください。
A B C D E F G
1 出勤時間 退社時間 休憩時間 実働時間 通常残業 深夜残業
2 9:22 18:36
3 9:10 18:49
4 9:28 8:57
5 8:57 19:12
6 9:24 22:32
7 9:26 24:01
8 10:58 19:32
9 合計
定時は、9:30〜18:30で出勤は9:30前に来ても9:30からとする。
9:30〜18:30の間で昼休み1時間、18:30からの15分間、22:00からの15分間、3:15からの15分間は必然的に実務時間からひかれる。
18:45〜22:00までは通常残業。22:00以降は深夜残業とする。
として
@C列に休憩時間の合計
AD列にはC列休憩時間を拘束時間からひいた実働時間を求める
BE列は通常残業時間をもとめる
CF列は深夜残業時間をもとめる
DC9,D9,E9,F9にはそれぞれの合計時間を求めたい。
単位は、18:00のようにしたい。
どうぞよろしくお願いします。(さちよん)
それぞれの計算式を作るのは大変なので、各時間区分における時間を計算し、必要な部分を合計したらどうでしょう。 作業列として、D〜L列を使用しています。見たくないならグループ化して折りたためばよいと思うのですが・・・ 3〜4行目に時間区分を入力します。表示形式は[h]:mmとし、24時以降は25:00のような表記とします。 D5:=IF(OR(COUNT($B$5:$C$5)<2,$B5-D$4>=0,$C5-D$3<=0),"",TEXT(MIN($C5,D$4)-MAX($B5,D$3),"h:mm")*1) として、L5までコピーし、更に下方向に必要行分コピーします。 M5:=IF(OR(COUNT(B5:C5)<2,SUM(E5,G5,I5,K5)=0),"",SUM(E5,G5,I5,K5)) N5:=IF(OR(COUNT(B5:C5)<2,SUM(D5,F5,H5,J5,L5)=0),"",SUM(D5,F5,H5,J5,L5)) O5:=IF(OR(COUNT(B5:C5)<2,SUM(H5)=0),"",SUM(H5)) P5:=IF(OR(COUNT(B5:C5)<2,SUM(J5,L5)=0),"",SUM(J5,L5))
分単位で計算するには D5:=IF(OR(COUNT($B$5:$C$5)<2,ROUND($B5*1440,0)-ROUND(D$4*1440,0)>=0,ROUND($C5*1440,0)-ROUND(D$3*1440,0)<=0),"", TEXT((MIN(ROUND($C5*1440,0),ROUND(D$4*1440,0))-MAX(ROUND($B5*1440,0),ROUND(D$3*1440,0)))/1440,"h:mm")*1) こんな感じで合っていますか? # Excelからコピペしたため、B2セルから始まっていますのでご注意ください。 (Hatch) B C D E F G H I J K L M N O P 2 出勤 退勤 定時1 休憩1 定時2 休憩2 残業 休憩3 深夜1 休憩4 深夜2 休憩時間 実働時間 通常残業 深夜残業 3 開始時間 9:30 12:00 13:00 18:30 18:45 22:00 22:15 27:15 27:30 4 終了時間 12:00 13:00 18:30 18:45 22:00 22:15 27:15 27:30 33:00 5 9:22 18:36 2:30 1:00 5:30 0:06 1:06 8:00 6 9:10 18:49 2:30 1:00 5:30 0:15 0:04 1:15 8:04 0:04 7 9:28 32:57 2:30 1:00 5:30 0:15 3:15 0:15 5:00 0:15 5:27 1:45 21:42 3:15 10:27 8 8:57 19:12 2:30 1:00 5:30 0:15 0:27 1:15 8:27 0:27 9 9:24 22:32 2:30 1:00 5:30 0:15 3:15 0:15 0:17 1:30 11:32 3:15 0:17 10 9:26 24:01 2:30 1:00 5:30 0:15 3:15 0:15 1:46 1:30 13:01 3:15 1:46 11 10:58 19:32 1:02 1:00 5:30 0:15 0:47 1:15 7:19 0:47
詳しいご説明ありがとうございます。 教えていただいた関数を使わせていただきました。 1点書き忘れた項目がありまして、残業計算のところで、残業代の発生が5分刻みなんですがどのように関数に組み込んだらいいでしょうか? 例えば、退社時間が19:04だと残業代の計算は19:00まで、23:16だと23:00という具合になります。H列、J列、L列に設定をしたいのですがよろしくお願いします。(さちよん)
>5分刻みなんですが >19:04だと残業代の計算は19:00まで >23:16だと23:00という具合になります 矛盾してます。「15」分でしょうか? O,P列で丸めたらどうでしょう? O5:=IF(OR(COUNT(B5:C5)<2,SUM(H5)=0),"",TEXT(FLOOR(H5,"0:15"),"h:mm")*1) P5:=IF(OR(COUNT(B5:C5)<2,SUM(J5,L5)=0),"",TEXT(FLOOR(TEXT(SUM(J5,L5),"h:mm")*1,"0:15"),"h:mm")*1) なお、残業が15分未満なら「0:00」と表示され、0なら空白になります。 (Hatch)
説明不足と入力ミスで重ね重ね申し訳ありませんm(__)m >19:04だと残業代の計算は19:00まで >23:16だと23:15という具合になります です。申し訳ありません。 教えていただいたものをいれてみたところ G列の休憩時間は18:30〜18:45までに退勤すると休憩とはみなされないので『0:00』と表示させたく、I列、K列も同様にしたいのです。 また、 休憩時間 M5:=IF(OR(COUNT(B5:C5)<2,SUM(E5,G5,I5,K5)=0),"",SUM(E5,G5,I5,K5)) 実務時間 N5:=IF(OR(COUNT(B5:C5)<2,SUM(D5,F5,H5,J5,L5)=0),"",SUM(D5,F5,H5,J5,L5)) に5分以下は切り捨て(『8:04』は『8:00』に)と設定したいのですが、どのように付け加えたらいいでしょうか? (さちよん)
理解できていませんが、退勤時刻を15分単位で丸めると読み取りました。 よって元の計算の方を変更してみました。それに伴い、M〜P列も変更します。 D5:=IF(OR(COUNT($B$5:$C$5)<2,ROUND($B5*1440,0)-ROUND(D$4*1440,0)>=0,ROUND($C5*1440,0)-ROUND(D$3*1440,0)<=0),"", TEXT((MIN(FLOOR(ROUND($C5*1440,0),15),ROUND(D$4*1440,0))-MAX(ROUND($B5*1440,0),ROUND(D$3*1440,0)))/1440,"h:mm")*1) L5までコピーし、更に下方向へコピーします。 M5:=IF(OR(COUNT(B5:C5)<2,SUM(E5,G5,I5,K5)=0),"",TEXT(SUM(E5,G5,I5,K5),"h:mm")*1) N5:=IF(OR(COUNT(B5:C5)<2,SUM(D5,F5,H5,J5,L5)=0),"",TEXT(SUM(D5,F5,H5,J5,L5),"h:mm")*1) O5:=IF(OR(COUNT(B5:C5)<2,SUM(H5)=0),"",TEXT(SUM(H5),"h:mm")*1) P5:=IF(OR(COUNT(B5:C5)<2,SUM(J5,L5)=0),"",TEXT(SUM(J5,L5),"h:mm")*1) # 出社時刻はこの様な丸め処理は要らないのでしょうか? (Hatch)
返信遅くなりました。
回答ありがとうございます。
いろいろ自分でもいじってみます。
また行き詰ってしまったらご指導よろしくお願いします。(さちよん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.