• 締切済み

エクセルで勤怠時間(一部分の)計算方法

エクセルで社員の勤怠時間の計算を行いたいのですが 始業から終業までの、全ての時間ではなく 始業から終業までの間で行っている、一部の時間(開始時間~終了時間)だけを取り出し計算し さらにそれを、日中時間・残業時間・深夜残業時間に振り分けを行いたいです。 始業時間は、バラバラで午前の人もいれば午後の人もいます。 また、始業=開始でない場合もあります。 色々と類似質問を参照し、式を入れているのですが振り分けがうまくいきません 以下に振り分けの際の条件と例を記載します。 C1:始業時間(手入力) D1:終業時間(C1+TIME(9,0,0)) E1:開始時間(手入力) F1:終了時間(手入力) G1,H1,I1:各時間帯から控除する休憩時間(手入力) J1:日中時間(始業時間~終業時間内の、8時間までの開始時間~終了時間) ※ここの式 K1:残業時間(22時までの終業時間を超過した、開始時間~終了時間) ※ここの式 L1:深夜残業時間(22時以降の終業時間を超過した、開始時間~終了時間) ※ここの式 例) (1)始業/9:00 終業/18:00 開始/13:00 終了/23:00 休憩1/0:30 休憩2/0:15 休憩3/0:00 結果→日中/4:30 残業/3:45 深夜残業/1:00 (2)始業/13:00 終業/22:00 開始/13:00 終了/24:00 休憩1/1:00 休憩2/0:00 休憩3/0:15 結果→日中/8:00 残業/0:00 深夜残業/1:45 お知恵をお貸し下さい

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 ANo.2です。 >こちらを以下の様に変更したいのですが、どのようにすればよろしいでしょうか? >例)「6:00→6.00」 「6:15→6.25」 「6:30→6.50」 >  「6:45→6.75」「6:10→6.17」「6:25→6.42」  それでしたら、各セルに入力する関数を以下の様に修正して下さい。  J2セルに入力する関数 =IF(COUNT($C2,$D2,$E2,$F2,$G2)=5,(IF(MAX(MIN($D2,$F2,"22:00"+0),"5:00"+0)-MIN(MAX($C2,$E2,"5:00"+0),"22:00"+0)-$G2>0,IF(MAX(MIN($D2,$F2,"22:00"+0),"5:00"+0)-MIN(MAX($C2,$E2,"5:00"+0),"22:00"+0)-$G2>"8:00"+0,"8:00"+0,MAX(MIN($D2,$F2,"22:00"+0),"5:00"+0)-MIN(MAX($C2,$E2,"5:00"+0),"22:00"+0)-$G2),0))*24,"")  K2セルに入力する関数 =IF(COUNT($J2,$H2)=2,(IF(AND($F2>$D2,$D2<"22:00"+0),MIN($F2,"22:00"+0)-MAX($D2,$E2),0)+IF(AND($E2<$C2,$C2>"5:00"+0),MIN($F2,$C2)-MAX($E2,"5:00"+0),0)+IF($J2<8,0,MAX(MIN($D2,$F2,"22:00"+0),"5:00"+0)-MIN(MAX($C2,$E2,"5:00"+0),"22:00"+0)-$G2-"8:00")-IF(OR(AND($F2>$D2,$D2<"22:00"+0),AND($E2<$C2,$C2>"5:00"+0),$J2>=8),$H2,0))*24,"")  L2セルに入力する関数 =IF(COUNT($C2,$D2,$E2,$F2,$I2)=5,(IF($F2>"22:00"+0,MIN($F2,"29:00"+0)-MAX($E2,"22:00"+0),0)+IF($E2<"5:00"+0,MIN($F2,"5:00"+0)-$E2,0)-IF(OR($F2>"22:00"+0,$E2<"5:00"+0),$I2,0))*24,"")

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 確認したいのですが、以下の様な条件と考えれば宜しいのでしょうか? ●C列に始業時間、E列に開始時間、F列に終了時間、G列に休憩時間1(日中時間時間から控除する休憩時間)、H列に休憩時間2(残業時間から控除する休憩時間)、I列に休憩時間3(深夜残業時間から控除する休憩時間)を手入力すると、 D列に終業時間、J列に日中時間、K列に残業時間、L列に深夜残業時間が自動的に表示される様にする。 ●各列の1行目は、その列の項目名が入力されていて、実際のデータは2行目以下に入力されたり、自動表示される。 ●終業時間は必ず始業時間の9時間後 ●日中時間は、始業時間~終業時間の時間帯と、開始時間~終了時間の時間帯が重なっている時間から、休憩時間1を差し引いた値。  但し、その値が8時間を超える場合には、日中時間は一律で8時間とする。 ●日中時間で8時間を超えている分に関しては、残業時間扱いとなる。 ●22時~24時の時間帯、及び0時~5時(24時~29時を含む)に行われた労働の時間は、始業時間~終業時間の時間帯と重なっているか否かには関係なく、一律で深夜残業時間となる。 ●終業時間以降で、22時以前に行われた労働の時間は残業時間となる。 ●早出で始業時間以前に行われた労働の時間の内、5時以降に行われた労働の時間もまた残業時間としてカウントする。 ●始業時間が5時よりも前の時刻となったり、終業時間が22時よりも後の時刻となる場合もあり得る。  もし、上記の条件で構わないのでしたら、以下の様にされると宜しいかと思います。  まず、J2セルに次の関数を入力して下さい。 =IF(COUNT($C2,$D2,$E2,$F2,$G2)=5,IF(MAX(MIN($D2,$F2,"22:00"+0),"5:00"+0)-MIN(MAX($C2,$E2,"5:00"+0),"22:00"+0)-$G2>0,IF(MAX(MIN($D2,$F2,"22:00"+0),"5:00"+0)-MIN(MAX($C2,$E2,"5:00"+0),"22:00"+0)-$G2>"8:00"+0,"8:00"+0,MAX(MIN($D2,$F2,"22:00"+0),"5:00"+0)-MIN(MAX($C2,$E2,"5:00"+0),"22:00"+0)-$G2),0),"")  次に、K2セルに次の関数を入力して下さい。 =IF(COUNT($J2,$H2)=2,IF(AND($F2>$D2,$D2<"22:00"+0),MIN($F2,"22:00"+0)-MAX($D2,$E2),0)+IF(AND($E2<$C2,$C2>"5:00"+0),MIN($F2,$C2)-MAX($E2,"5:00"+0),0)+IF($J2<"8:00"+0,0,MAX(MIN($D2,$F2,"22:00"+0),"5:00"+0)-MIN(MAX($C2,$E2,"5:00"+0),"22:00"+0)-$G2-"8:00")-IF(OR(AND($F2>$D2,$D2<"22:00"+0),AND($E2<$C2,$C2>"5:00"+0),$J2>="8:00"+0),$H2,0),"")  次に、L2セルに次の関数を入力して下さい。 =IF(COUNT($C2,$D2,$E2,$F2,$I2)=5,IF($F2>"22:00"+0,MIN($F2,"29:00"+0)-MAX($E2,"22:00"+0),0)+IF($E2<"5:00"+0,MIN($F2,"5:00"+0)-$E2,0)-IF(OR($F2>"22:00"+0,$E2<"5:00"+0),$I2,0),"")  次に、J2~L2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  以上です。

koji_w
質問者

お礼

kagakusukiさん ご回答ありがとうございます、急な出張に出ており返答返せず申し訳有りません。 記入頂きました上記9個の条件で大丈夫と思われます。 お教え頂きました式を導入し、データの入力を順次行っており まだ計算結果違いなどは出てきておりませんが もうひとつ以下を追加としてお教えいただければ幸いです。 現状お教え頂いた式では、日中・残業・深夜の結果が「XX:XX」の結果で出力されております。 こちらを以下の様に変更したいのですが、どのようにすればよろしいでしょうか? 例)「6:00→6.00」 「6:15→6.25」 「6:30→6.50」   「6:45→6.75」「6:10→6.17」「6:25→6.42」 お手数をおかけしますがよろしくお願いします。

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

C1セルからL1セルまでにはお示しの各項目名が有るとして、各データが2行目から下方にあるとしたらJ2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(C2:F2)<>4,"",MIN(D2,F2)-E2-G2) K2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(C2:F2)<>4,"",MIN(F2,"22:00")-D2-H2) L2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(C2:F2)<>4,"",MAX(F2,"22:00")-"22:00"-I2)

関連するQ&A

  • エクセルで時間計算(勤怠)の仕方を教えて!!

    エクセルを使って、勤怠時間表を作りたいんです。 <決まりごと> 始業時間…後の時間で30分単位(例 8:47→9:00、9:12→9:30) 終業時間…前の時間で30分単位(例18:20→18:00、19:59→19:30)休憩時間…1時間    残業時間…18:00以降、30分単位 深夜残業…22:00以降、30分単位 ※9:15に始業18:15に退社だと、実働時間は7.5時間で残業は0です。 例えば A始業時間 B終業時間 C実働時間 D通常残業 E深夜残業   9:17   22:40   12.0H   4.0H    0.5H AとBを入力すれば、C~Eがでてくる、というエクセルの計算式を教えて下さい。  

  • エクセルの出勤簿の計算式を教えて下さい。

    はじめまして。今月から出勤簿をエクセルで管理したいと思っています。 始業時間9.00終業時間18:00休憩が1時間です。 残業は18.:30からの30分単位になります(18:00~18:30は休憩時間です)。また、深夜残業と早朝出勤はほとんどありませんので無視して下さい。 始業時間と終業時間を入力したら実質労働時間が計算されるような関数を教えて下さい。 出来れば終業が20:30でしたら20.5で入れたいです。(0.5単位) 上手く説明できていないかもしれませんが、宜しくお願い致します。

  • エクセルで勤怠の残業手当を計算したいのですが...

     エクセルにて勤怠表を作成しようと思っております。各セルに開始時間、終了時間、拘束時間、休憩時間、実働時間、残業時間、残業手当が表示されるようにしてあります。開始、終了、休憩は手入力でそれ以外は計算式が入っています。  そこで質問なのですが、例えば開始時間8:30、終了時間18:00、休憩時間1:00、通常労働時間8:00とすると残業時間が0:30になります。残業手当は30分毎に500円つけたいので残業手当のセルにROUNDDOWNを使っていて、この場合本来500円と表示されるところ0円となってしまいます。仮に残業時間が0:31となるように入力すると500円と表示されますが、残業時間がちょうど0:30だと0円になってしまいます。ちなみに計算式は=ROUNDDON(I2/"0:30",0)*500です。I2セルは0:30となっております。  ご回答よろしくお願いいたします。

  • エクセルで時間外計算の仕方

    始業から終業時間がまちまちで、下記のような表を作成したいのですが上手くいきません。 何かいい方法はありましたら教えてくださいm(__)m 作りたい表↓ 超過時間は10時間以上、15分未満切捨てとし、残業代は1時間当り500円とした場合 始業時間  終業時間 稼動時間  超過時間   残業代  7:00    18:15    11:12     1:00       500  5:00    13:13     8:13      0:00         0 23:00     12:16    13:16       3:15        1625 作ってみて失敗した表↓ A1に10:00 B1に500と入力し A2に始業時間 B2に終業時間 C2に稼動時間 D2に残業時間 E2に残業代 として A2   B2      C3              D4                 E2 7:00   8:15  =FLOOR(B2+1-A2,"1:0")  =FLOOR(C3+1-A1,"0:15")  =D4*B1 ※稼動時間が10時間未満で残業がつかない場合の計算ができない ※残業時間に残業代を掛けた計算の計が違う 以上、IF関数を使えばいいのかとも思ったのですが、どう使えば有効なのかも判らずにおりました。 よろしくお願いします。   

  • エクセルで勤怠管理を行いたいのですが、時間計算の為の設定がよく分かりません。

    私の会社では大変複雑な勤務形態となっています。 給与を計算するためにエクセルを使用していますが、 残業した時間については、手入力となっています。 下の例のように、開始時間(24時間表示)と終了時間(24時間表示) を入力すると自動的に勤務時間(10進法)と深夜時間(10進法)が 自動で表示されるようにしたいのですが、 いろいろやってみましたができませんよい方法を教えてください。   開始時間  18:00   終了時間  22:30   残業時間  04.50   深夜時間  00.50 00:00を超えた場合でも計算できる方法はありますか。

  • エクセルを使って勤怠の集計をしています。

    エクセルを使って勤怠の集計をしています。 出社時間と退社時間を入力すれば、労働時間が出るような、関数式を教えて下さい。 開始時間 終了時間 総時間数 休憩時間 労働時間 通常時間 割増時間  8:40    17:15    8:35    1:10    7:25    7:25   0:00 12:50    17:15    4:25    0:10    4:15    4:15   0:00 8:40    19:15    11:05    1:40    9:25    8:00   1:25 8:40    21:10    12:30    1:55    10:35    8:00   2:35 8:40~10:00、10:00から10分休憩、10:10~12:00、12:00から50分休憩 12:50~14:50、14:50から10分休憩、15:00~17:15、17:15から30分休憩 17:45~19:45、19:45から15分休憩、20:00~22:00、22:00~10分休憩 22:10から深夜残業となります。 割増時間は8時間以上の労働時間から付きます。 (10時、12:50からなど、途中から勤務が始まる人もいますので。) 現在手計算をしていますが、間違いが多くて困っています。 どうぞ宜しくお願いします。

  • Excelで給料計算したいのですが…

    Excelで、バイトの給料計算をしたいと思って、自分で表を作ってみました。 検索して、一番簡単で使いやすそうなやつを探して、作ってみたのですが、計算が合わなくて、 どんな式にしたらいいか分かる方いたら、教えて下さい。 現在、表は始業時間、終業時間、休憩時間、実労働時間、契約内時間、残業時間で作ってます。 時給計算は、ひとつにまとめるやり方が分からなくて、契約内日給と残業日給に分けました。 始業時間、終業時間、休憩時間はセルの書式設定で「h:mm」で表示。 実労働時間は「=終業時間-始業時間-休憩時間」。 契約内時間は「=MIN("8:",終業時間-始業時間-休憩時間)」で最大8時間まで書き出すようにして、残業時間は、「=実労働時間-契約内時間」です。 そして、給料計算なのですが、 契約内日給は「=契約内時間*1000*24」、残業日給は「=残業時間*1250*24」にしたのですが、 うちの仕事場は5分単位で残業代が出るため、労働時間が8時間5分とか、8時間20分というのが出てきます。 この時、例えば20分の場合、0.3333…に1250をかけて、417とExcelは解答するのですが、 実際は、0.34時間*時給で、小数点2ケタ表示で切り上げっぽいのです。 ROUNDUPで切り上げ設定できるらしい事は分かったのですが、今の計算式にどう入れていいのか分かりません。 時間を入れただけで、、Excelで全て自動的に計算してもらう方法はありますか?

  • Excelで勤務時間の集計をしたいのですが、ウマくいきません。ヘルプお願いします。

    A列⇒始業時間、B列⇒終業時間、C列⇒休憩開始時間、D列⇒休憩終了時間を入力し、E列に定時(通常)時間数、F列に定時(深夜)時間数、G列に残業(通常)時間数、H列に残業(深夜)時間数を出すような形にしたいのですが、どうもウマくいきません。例えば、A⇒15:00、B⇒26:00、C⇒21:30、D⇒22:30と入力した時にE⇒6.5、F⇒1.5、G⇒スペース、H⇒2.0となるためにはE~Hまでどの様な式を入れたらよいのでしょうか?

  • エクセルでタイムカード計算

    初心者です。エクセルで次のような計算をしたいのですが 基本の 始業時間19:00  終業時間1:10 で 実働 5:30 です 21:00~21:20 まで20分休憩を引きます 23:10~23:30 まで20分休憩を引きます 19:00より前は早出になります 1:20から残業ですが2Hに10分ずつ休憩が入ります 残業は30分単位です   それで第2の設定として A 19:00~21:59 普通時間(早出含む) B 22:00~1:10  普通残業 C 1:20~      深夜残業   作成したい表は 始業時間と 終業時間をいれると A(定時だと2:40) B(定時だと2:50) C               と3段階で表示されるものです 何とかできないでしょうか? フリーソフトも色々みたのですが? 困っています 宜しくお願いいたします

  • 勤怠の集計表をエクセルで作成しました。

    勤怠の集計表をエクセルで作成しました。 実際に手計算すると0:00になるのに、関数を組んだところ、###########・・・と表示されます。 どうしてですか? 内容は・・・ 『時』『分』を分けてセルに入力(例:A1セル→8、B1セル→:、C1セル→30)すると、 一日の労働時間を求めるようになっており、『残業』、『深夜残業』も求めるようにしています。 さらに表の下部に求められた時間の合計が表示するように作りました。 実際にテストで入力してみたところ、始業が14:00、終業が22:00(休憩なしで、8時間労働) にすると労働時間が求められ、『深夜残業』が0:00と表示されますが、『残業』が ##############・・・となり、カーソルを合わせると「負の日付又は時間は########と表示します」 とメッセージが表示されます。 しかし、実際は0:00と表示されてきてほしいのですが、上記のように表示され、表下部『残業』合計 が正しい数字になってきません。 いろいろと関数を組みなおしてみたのですが、結果は同じでした。 教えてください。よろしく御願いします。 ちなみに、私が組んだ関数は以下の通りです。 =IF(J6>"22:00",O6-"8:00"-R6-P6,IF(J6<"22:00",O6-"8:00"-P6)) 上記セルの内容は以下の通りです。   J6・・・終業、O6・・・労働時間、R6・・・深夜残業、P6・・・早出時間  基本となる時間は、   始業・・・8:30、終業・・・17:30です。

専門家に質問してみよう