- ベストアンサー
エクセルで勤務表の自動計算方法とは?
- エクセルで勤務表を作成する際、残業や深夜勤務などを自動計算する方法を知りたいです。
- 総労働時間や残業時間を手入力するのではなく、エクセルの関数を使って自動計算させたいです。
- さらに、遅刻や早退があった場合にはその時間も自動で計算させたいです。どうやれば実現できるでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
D2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(B2:C2)<>2,"",IF(F2<="8:00"*1,"",F2-"8:00")) E2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(B2:C2)<>2,"",IF(C2>B2,IF(AND(B2>="5:00"*1,C2<="22:00"*1),"",IF(B2<"5:00"*1,"5:00"-B2+IF(C2>"22:00"*1,C2-"22:00",0),IF(C2>"22:00"*1,C2-"22:00",0))),IF(C2<=B2,"24:00"-MAX(B2,"22:00")+MIN(C2,"5:00"),""))) F2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(B2:C2)<>2,"",IF(C2>B2,IF(C2-B2>="8:00"*1,C2-B2-"1:00"-H2,C2-B2-H2),IF(C2+"24:00"-B2>="8:00"*1,C2+"24:00"-B2-"1:00"-H2,C2+"24:00"-B2-H2))) G2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(B2:C2)<>2,"",IF(F2>="8:00"*1,"","8:00"-F2))
その他の回答 (4)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
No.2・3です。No.2の「G2」で、どういうわけか「=-min(…」などと書いてしまいましたが、その式はもちろん、次のより短い式でも同じ結果になります。すみません。 =max(0,8/24-f2)
お礼
親切に教えていただき ありがとうございました。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
No.2です、何度もすみません。言い忘れました。 時間として「0」が算出されているセルでも、「ユーザー定義書式」を使えば、見かけ上は空白であるように見せることは可能です。 設定したいセルを選択した状態で「セルの書式設定>表示形式>ユーザー定義」と進み、「種類」ボックスに「h:mm;;」と入力してOKボタンを押すだけです。「0」だけど、見かけは空白同様になります。
お礼
回答ありがとうございます。 『空白』の問題が解決いたしました。 またわからないことがありましたら宜しくお願いします。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
質問文には「空白」と何回か書かれていますが、「0」か「空文字列」のいずれかを入力することとなります。完全なる空白にすることは、一発ではできません。なお、「空文字列」の入力されているセルは、見かけ上は空白セルと同様になります。 時間の計算は、単に引き算をするだけです。条件により式が変わる場合は、IFなどを組み合わせます。質問文に書いてある条件を忠実に式に直すと次のとおりです。とりあえず「空白」とお書きになっている箇所には「0」が表示されるようにしてあります。「空文字列」にするには、もう少し式が長くなります。 F2 =if(c2+if(b2>c2,1)-b2-h2>=8,c2+if(b2>c2,1)-b2-h2-1,c2+if(b2>c2,1)-b2-h2) D2 =f2-8/24 E2 =if(b2>c2,min(c2,5/24)+1-max(b2,22/24),) G2 =-min(0,f2-8/24) ??? 気になるのは、質問文に書いてあるとおりだと、労働時間が8時間だとX=7となり、7.5時間だとX=7.5となって、逆転しますが、この理解で合っているのでしょうか? それから、日付が変わるケースがあるようですので、以前私が回答した類似の質問(参考URL)を参照し、全部読んでみてください。マイナスの時間は「####」と表示されますが、Excelのエラーではなく、マイナスの時間を表示する際のルールです。日付を表中に導入すればマイナス回避の必要がなくなるので、式がもっと簡単になるし、入力ミスなどもしにくい分かりやすいものとなりそうですが。 あと、日勤/夜勤の別を表示する列もあったほうが、紛れがなくて好ましいと思いました。上の計算にも利用できます。
お礼
回答ありがとうございました。 とても勉強になりました。 またわからないことがありましたら 宜しくお願いします。
- googoo900
- ベストアンサー率44% (82/184)
いろいろなケースを入力してみて、正しいことを確認してから使用下さい。 質問者さんが書かれた例の3日目、Xは8時間以上ですが『遅・早』が0:50になっているのが理解できませんでした。作成したものでは0:00(空白)になります。 イ、 最上部に3行挿入して、下記のように計算のための値を入力します。(A1~F2セル) ロ、 I,J列に計算のため22:00を0:00に換算した値を表示するセルを作ります。 A B C D E F G H I J 1 休憩時間 所定時間 深夜開始 深夜終了 深夜時間 1日の時間 2 1:00 8:00 2:00 5:00 7:00 24:00:00 3 22:00⇒0:00 4 日 出勤 退勤 残業 深夜 総労働 遅・早 休息 (出勤) (退勤) 5 D5 E5 F5 G5 I5 J5 6 7 ハ、 自動計算させたいD(残業)・E(深夜)・F(総労働)・G(遅刻・早退)と追加したI,J列に以下のように入力します。この例では5行目(D5,E5,・・・)とします。 D5:=IF(F5<=$B$2,"",F5-$B$2) E5:=IF(AND($E$2<J5,J5<K5),"",IF(J5>$E$2,MIN(K5,$E$2),MIN(K5,$E$2)-J5)) F5:=IF(C5>B5,IF(C5-B5-H5>=$B$2,C5-B5-H5-$A$2,C5-B5-H5),IF(C5-B5-H5>=$B$2,C5-B5-H5-$A$2,C5-B5-H5)+$F$2) G5:=IF(F5<$B$2,$B$2-F5,"") I5:=IF(B5>=$C$2,B5-$C$2,B5+$F$2-$C$2) J5:=IF(C5>=$C$2,C5-$C$2,C5+$F$2-$C$2) ニ、 5行目を必要な日数分だけコピーすれば完成です。
お礼
回答ありがとうございました。 とても勉強になりました。 またわかならいことがありましたら 宜しくお願いします。
お礼
回答ありがとうございました。 とても勉強になりました。 作業が、はかどりそうです。 またわからないことがありましたら 宜しくお願いします。