Gizport
3 回答
0
Share (facebook)
159
view
全般

Excelで勤務表を作成しています。法定内残業時間の算式をご教授くだ...

Excelで勤務表を作成しています。法定内残業時間の算式をご教授ください。
さきほど質問に不足があったので、再度質問致します。 どうぞよろしくお願い致します!


<労働条件>
・所定勤務時間:始業9:00〜終業18:00の8時間
・昼休憩:12:00~14:00の間に1時間(それ以外の休憩は考慮しない)
・残業時間:7:00〜9:00、18:00〜22:00
・深夜勤務時間:22:00〜7:00
・所定休日:土日祝日、年末年始(12/30-1/3) 所定休日勤務時は別途振替休日を取得する
・半日有休:午前休の場合、14:00〜18:00勤務、午後休の場合、9:00〜14:00勤務となる(いずれも休憩0)


<法定内残業時間>
所定勤務時間が8時間のため、通常勤務者は法定内残業は発生し得ない(常に[0:00])のですが、雇用契約書で個別に基本勤務時間が決まっている時短勤務者も何名かいるため、法定内残業時間算出が必要。
仮に9:30〜17:30勤務、つまり基本勤務時間が7時間の場合を例とする。
・あらかじめ、M2セルに基本出勤時刻[9:30]、O2セルに基本退勤時刻[17:30]を手入力しておく。
・残業時間が法定勤務時間(8時間)内に収まる時間ならば、[0:01〜1:00]を算出表示する。
・残業時間が法定勤務時間(8時間)よりも超える場合、[1:00]を算出表示する。
・時短勤務ではない通常勤務者は、法定内残業が発生しないため[0:00]と算出表示する。


<設定中のセルについて>
A10: 日付
B10: 曜日
C10: 勤怠 [通常勤務、全日有休、半日有休、休日出勤、振替出勤、代替休暇、振替出勤、振替休日、生理休暇、慶弔休暇、遅刻、早退、欠勤]プルダウンで手入力設定
D10: 始業時間 [9:30] 手入力
E10: 終業時間 [17:30] 手入力
F10: 日数 [=IF(INT((E10-D10)*24)<4,0,IF(INT((E10-D10)*24)<7,0.5,1))] 1日4時間以上勤務したら1.0、それ以下は0.5と算出する
G10: 欠勤 [=IF(C10="欠勤",1,IF(C10="生理休暇",1,""))]
H10: 所定時間内勤務時間数 [MIN(TIMEVALUE("8:00"),E10-D10-I10] ※ただしC10が「休日出勤」である場合は[0:00]
I10: 休憩時間 [MIN(MAX(E10,"13:00"),"14:00")-MIN(MAX(D10,"13:00"),"14:00"] ※ただしC10が「半日有休」である場合は[0:00]
J10: 法定内残業時間数 [未設定]
K10: 所定外残業時間数 [MAX(0,(E10-D10-I10)-TIMEVALUE("8:00")-J10] 法定内残業時間数を超えた残業時間数を算出
L10: 法定休日時間数 [E10-D10-I10] ※ただしC10が「休日出勤」の場合のみ
M10: 深夜勤務時間数 [MIN(MAX(E10,"22:00"),"31:00")-MIN(MAX(D10,"22:00"),"31:00")]
N10: 控除時間数 [MAX(TIMEVALUE("8:00")-(E10-D10-I10),0)] 時短勤務や遅刻・早退などで勤務時間が所定勤務時間(8時間)を下回った場合、その差分を算出表示
O10: 総労働時間数 [H10+J10+K10+L10+M10-N10] 実労働時間合計
Yahoo!知恵袋 3646日前
コメントする
お気に入り
1
投票で選ばれたベストソリューション
何点か質問しましたが、回答がいただけないようなので、推測で再回答します。

やはり少し見にくいですが、下の図のようなことでよろしいでしょうか?

①A10: 日付=IF(ROW()=10,DATE(A$6,C$6,1),IF(A9="","",IF(MONTH(A9)<>MONTH(A9+1),"",A9+1)))
②B10: 曜日=IF(A10="","",TEXT(A10,"aaa"))
③F10: 日数=IF(COUNT(D10:E10)<2,"",IF(IF(AND(E10<=D10,E10<="7:00"*1),E10+1,E10)-D10<"4:00"*1,0.5,1))
④G10: 欠勤=IF(OR(C10={"欠勤","生理休暇"}),1,"")
⑤H10: 所定時間内勤務時間=IF(COUNT(D10:E10)<2,"",IF(C10="休日出勤",0,MIN(O$2,IF(AND(E10<=D10,E10<="7:00"*1),E10+1,E10))-MAX(M$2,D10)-I10))
⑥I10: 休憩時間=IF(COUNT(D10:E10)<2,"",IF(C10="半日有給",0,MIN(MAX(IF(AND(E10<=D10,E10<="7:00"*1),E10+1,E10),"13:00"),"14:00")-MIN(MAX(D10,"13:00"),"14:00")))
⑦J10: 法定内残業時間=IF(COUNT(D10:E10)<2,"",IF(C10="休日出勤",0,IF(AND(OR(D10<M$2,IF(AND(E10<=D10,E10<="7:00"*1),E10+1,E10)>O$2),O$2-M$2-M$6<"8:00"*1),MIN((M$2-MIN(D10,M$2))+(MIN(IF(AND(E10<=D10,E10<="7:00"*1),E10+1,E10),"22:00")-O$2),"8:00"*1-(O$2-M$2-M$6)),0)))
⑧K10: 所定外残業時間=IF(COUNT(D10:E10)<2,"",IF(C10="休日出勤",0,IF(COUNT(D10:E10)<2,0,MAX(0,MAX(0,M$2-D10)+(MIN(IF(AND(E10<=D10,E10<="7:00"*1),E10+1,E10),"22:00"*1)-O$2-J10)))))
⑨L10: 法定休日時間=IF(COUNT(D10:E10)<2,"",IF(C10<>"休日出勤",0,IF(AND(E10<=D10,E10<="7:00"*1),E10+1,E10)-D10-I10))
⑩M10: 深夜勤務時間=IF(COUNT(D10:E10)<2,"",IF(C10="休日出勤",0,MIN(MAX(IF(AND(E10<=D10,E10<="7:00"*1),E10+1,E10),"22:00"),"31:00")-MIN(MAX(D10,"22:00"),"31:00")))
⑪N10: 控除時間=IF(COUNT(D10:E10)<2,"",MAX(TIMEVALUE("8:00")-(IF(AND(E10<=D10,E10<="7:00"*1),E10+1,E10)-D10-I10),0))
⑫O10: 総労働時間=IF(COUNT(D10:E10)<2,"",H10+J10+K10+L10+M10)

1)それぞれの式が長くなっていますが、E列の終業時刻が深夜の2時などになったときに「2:00」などと入力してもエラーにならないように「E10」を「IF(AND(E10<=D10,E10<="7:00"*1),E10+1,E10)」としています。
2)③F10の日数は、文章から判断して少し式を変えています。
3)⑪N10の控除時間は、8時間から、残業も含めた総勤務時間を引くのか、所定時間内勤務時間だけを引くのか、が分からなかったのでそのままの数式にしています。
4)⑫O10の総労働時間の数式については、控除時間を引くとおかしくなるように思いましたので、その部分を削除しました。

以上で、M2セルの基本出勤時刻とO2セルの基本退勤時刻とに通常勤務と時短勤務の2パターンを入れ替えてみて、D10の出勤時刻とE10の退勤時刻とにいろいろと時刻を入れて、試してみて下さい。
貴殿の意図されるところと異なるのであれば、具体的に補足して下さい。

なお、下の画像の基になったエクセル表をヤフーボックスにアップしましたので、許されるならダウンロードしてみて下さい。もちろんウイルスのようなものは入っていません(作れません)。
想定し得るいろんな時刻を入れて検証してみました。

https://box.yahoo.co.jp/guest/viewer?sid=box-l-wteps5mtoszopeb7a6kqxwcrei-1001&uniqid=83c4c3d1-5ed0-4c58-8a94-02c9d15dfcdd&viewtype=detail
Yahoo!知恵袋 3644日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
回答 (2)
1
少し教えて下さい。
通常勤務で、
ア)基本勤務時刻が9:00~18:00の人が、9:00~19:30まで勤務した場合の、①所定内勤務時間と、②法定内残業時間と、③所定外残業時間、
イ)時短勤務者で基本勤務時刻が9:30~17:30の人が、9:30~19:30まで勤務した場合の、④所定内勤務時間と、⑤法定内残業時間と、⑥所定外残業時間、

のそれぞれ①~⑥の時間数を教えて下さい。
Yahoo!知恵袋 3646日前
シェア
 
コメントする
 
1
最初のの質問に答えようと思ったら締め切られてしまったので、それを元に回答します。

最初のの質問文中の式では、2つ目のIF文の条件は所定勤務時間が8時間未満、かつ実勤務時間が所定勤務時間を超えた場合となっていると思います。
これに条件が一致した時に、8時間から実勤務時間を引いたものを残業時間としていますが、ここがおかしいのではないでしょうか?

求める残業時間は実勤務時間から所定勤務時間を引いたものになります。

さらに実勤務時間が8時間を超えた場合の分岐も必要です。
8時間以上勤務を行った場合には、法定内残業時間は8時間と所定勤務時間の差になります。

以上をまとめると↓の式になります。
=IF(OR(D12=0,E12=0),"",IF(AND(($O$2-$M$2-$M$6)<TIMEVALUE("8:00"),(E12-D12-I12)>($O$2-$M$2-$M$6)),IF((E12-D12-I12)<TIMEVALUE("8:00"),(E12-D12-I12)-($O$2-$M$2-$M$6),TIMEVALUE("8:00")-($O$2-$M$2-$M$6)),"0:00"))

おそらく大丈夫だと思いますが、不具合あれば補足でおかしい部分を質問ください。
Yahoo!知恵袋 3646日前
シェア
 
コメントする
 
その他の解決方法を知っていますか?
* 回答期限が過ぎていても投票によってあなたの回答がベストソリューションになるかもしれません
回答する
全般
24
Views
質問者が納得こんばんは。マクロを利用すれば、瞬時に意図する動作を実現できます。サンプルマクロを組んでみたいと思いますので、少し時間をください。
4275日前view24
全般
34
Views
質問者が納得MSIのグラボはグリスがひどい事になっていることがあります 一度塗りなおしてみては エアフローに問題があるかもしれませんが 追記に対して 90度越えはそんなにおかしくないと思いますよ 補足に対して まだ保障があるならショップに言う、持っていくなりした方がいいですね 問題なければそのまま帰ってくるでしょう 2chのBF3を快適~スレでは560TiでLow.Midで普通動いているそうですし そもそもGTX560が推薦されていてTiでカクつくのは... もしだめならばSLIのためにもう一台IY...
4660日前view34
全般
24
Views
質問者が納得とりあえずつくってみた。 上下で人数を表す散布図にマーカーの大きさを人数 わるかあない。 おいらのExcel理解度じゃ集計できないのでAccess君の助けをかりた。 でわかったこと Accessのグラフは暗黙の数値変換してくれるが。。。
5173日前view24
全般
26
Views
質問者が納得質問の式よく確認していまんが A1 22:00 B1 3:00 =IF(B1<A1,B1+1-A1,B1-A1) 表示形式 時刻に で 5:00
5366日前view26
全般
30
Views
質問者が納得今回の場合、新たに買ってきたMBで >最小設定にしても起動しません。ビープ音は鳴らず、ファンも回転していません。P5K-EにはオンボードにスタンバイLEDと言うLEDが装備されており電力が供給されていれば緑に光るとあります。このLEDが光っているので電力供給は問題ないと思います。 を質問者様の文章を見る限り単純にPowerSWのコネクタ差し間違えてるか、通電のまま作業して即死 してしまったとか。。。しか思い浮かびませんが、、、 というのもMBが生きてればビデオカードその他に異常がある場合はボイスなりビ...
5868日前view30