• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで時間計算を教えてください!!)

エクセルで勤務表の自動計算方法とは?

このQ&Aのポイント
  • エクセルで勤務表を作成する際、残業や深夜勤務などを自動計算する方法を知りたいです。
  • 総労働時間や残業時間を手入力するのではなく、エクセルの関数を使って自動計算させたいです。
  • さらに、遅刻や早退があった場合にはその時間も自動で計算させたいです。どうやれば実現できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

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))

maririn8a_a8
質問者

お礼

回答ありがとうございました。 とても勉強になりました。 作業が、はかどりそうです。 またわからないことがありましたら 宜しくお願いします。

その他の回答 (4)

回答No.5

No.2・3です。No.2の「G2」で、どういうわけか「=-min(…」などと書いてしまいましたが、その式はもちろん、次のより短い式でも同じ結果になります。すみません。 =max(0,8/24-f2)

maririn8a_a8
質問者

お礼

親切に教えていただき ありがとうございました。

回答No.3

No.2です、何度もすみません。言い忘れました。 時間として「0」が算出されているセルでも、「ユーザー定義書式」を使えば、見かけ上は空白であるように見せることは可能です。 設定したいセルを選択した状態で「セルの書式設定>表示形式>ユーザー定義」と進み、「種類」ボックスに「h:mm;;」と入力してOKボタンを押すだけです。「0」だけど、見かけは空白同様になります。

maririn8a_a8
質問者

お礼

回答ありがとうございます。 『空白』の問題が解決いたしました。 またわからないことがありましたら宜しくお願いします。

回答No.2

質問文には「空白」と何回か書かれていますが、「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のエラーではなく、マイナスの時間を表示する際のルールです。日付を表中に導入すればマイナス回避の必要がなくなるので、式がもっと簡単になるし、入力ミスなどもしにくい分かりやすいものとなりそうですが。 あと、日勤/夜勤の別を表示する列もあったほうが、紛れがなくて好ましいと思いました。上の計算にも利用できます。

参考URL:
http://okwave.jp/qa/q7354714.html
maririn8a_a8
質問者

お礼

回答ありがとうございました。 とても勉強になりました。 またわからないことがありましたら 宜しくお願いします。

  • googoo900
  • ベストアンサー率44% (82/184)
回答No.1

いろいろなケースを入力してみて、正しいことを確認してから使用下さい。 質問者さんが書かれた例の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行目を必要な日数分だけコピーすれば完成です。

maririn8a_a8
質問者

お礼

回答ありがとうございました。 とても勉強になりました。 またわかならいことがありましたら 宜しくお願いします。

関連するQ&A