• 締切済み

Excel:当日勤務時間の計算式のアドバイスを下さい

Excel2002を使用し、勤務表を作成しています。 修正を繰り返しだいぶ計算ができるようになりました。 今回は、開始13:15終了16:15の場合、休憩なし、当日勤務時間3時間と計算させたいのですが、何かアドバイスあればよろしくお願いします。 現在使用している計算式では以下のように計算されます。 開始8:30終了17:05、休憩45分、当日勤務時間7時間50分※定時 開始7:30終了16:05の場合、休憩45分、当日勤務時間7時間50分 開始8:00終了16:35の場合、休憩45分、当日勤務時間7時間50分 開始13:15終了17:05の場合、休憩なし、当日勤務時間3時間50分 開始13:15終了17:50の場合、休憩なし、当日勤務時間3時間50分 -------------------------------------------------------- 開始時刻:C列 終了時刻:D列 開始時刻を15分単位で切り上げる:P列:=CEILING(C6,"0:15") 終了時刻を15分単位で切り上げる:Q列:=CEILING(D6,"0:15") 休憩時間を45分として勤務時間を計算する:R列 -------------------------------------------------------- ■休憩時間 =IF(COUNT(C6:D6)<2,0,IF((P6<"12:30"*1)*(Q6>"13:15"*1),"0:45",IF ((C6>="13:15"*1)*(D6>="17:20"*1),"0:15","0:00")))+IF(R6>="8:00"*1,"0:15","0:00") ■当日 勤務時間 =IF(COUNT(C6:D6)<2,0,IF((C6>="13:15"*1)*(D6>="17:20"*1),R6-"0:15",IF(R6>="8:00"*1,R6-"0:15",R6))) ■休憩時間を45分として勤務時間を計算する =IF(COUNT(C6:D6)<2,0,AND(C6*D6)*(MIN(IF(AND(D6>="12:30"*1,D6<="13:15"*1),"12:30",Q6),"16:05")-MAX(IF(AND(C6>="12:30"*1,C6<="13:15"*1),"13:15",P6),"07:30")-IF((P6<"12:30"*1)*(Q6>"13:15"*1),"0:45","0:00")+FLOOR(MAX(D6,"16:05")-"16:04:59","0:15")))

  • ima15
  • お礼率80% (90/112)

みんなの回答

  • ima25
  • ベストアンサー率13% (6/44)
回答No.4

ima15イコールima25です。 ima15のパスワードを忘れてしまったため、この質問を締め切ることが出来ない状態です。 (パスワード問い合わせフォームでもうまく本人確認ができず、分からずじまい…。) 大変申し訳ありません。 パスワードが分かり次第、すぐに締め切ります。 (05.12.22 記)

  • takkuni
  • ベストアンサー率24% (166/676)
回答No.3

ご質問の意味の理解不足かも分かりませんが、難しく考えすぎのような気がします。 休憩時間は拘束時間を元に考えた方がわかりやすいのでは。 休憩の時間帯もデータとして残すなら別ですが、4時間未満なら休憩無し、定時なら45分、残業などで定時以上なら1時間とか。 開始時刻と終了時刻はその都度入力して差引きする事として、IF関数で入れ子を使えば関数も簡単になると思いますが。

ima15
質問者

お礼

アドバイス、ありがとうございます。takkuniさんの言われるように、難しく考えすぎとも思います(トホホ) 次々追加したためにごちゃごちゃになっていると思います。 アドバイス、参考させていただきます。

  • banker_U
  • ベストアンサー率21% (17/78)
回答No.2

先ほどのアドバイス2の補足です。 正直まだ理解できていないのですが、  始業時間は8:30を基準に、15分単位で切り上げ。  終業時間は17:20を基準に、15分単位で切り捨て。 ってことでいいですよね。 であれば、 「勤務時間」と「休憩時間」という2つのシートを新たにつくり、それぞれに、  縦軸に始業時間(0:00,・・・,7:30,7:45,8:00,8:15,・・・)  横軸に終業時間(0:05,・・・15:05,15:20,15:35,15:50,・・・,23:50) を入力しておきます(別にありえない分は入力する必要ないですが、その場合下記のOFFSET関数に若干の工夫が必要)。 次に、それぞれ始業時間と終業時間の交わるところにその場合の勤務時間(休憩時間)を入力しておきます。 (たくさんあるので、結局計算式を使うことになると思いますが、目で見ながらそこにあった数式を入れていけばいいので、簡単だと思います) この場合、 勤務時間は下記で出てくると思います(休憩時間も同様)。 =OFFSET(勤務時間!$A$1,始業時間(*)/timevalue("0:15"),(終業時間(*)-timevalue("0:05"))/timevalue("0:15")) (*)始業時間と終業時間は、最初の前提で丸めたもの。つまりこのまま書くのではなく、あなたの例だとP列Q列に入っているデータになるのかな?(それにしては若干数式がおかしいと思いますが)。 この方法のメリットは、要するにあらかじめあらゆるパターンの計算をしておくということだから、とにかく表を作っていくうちに頭が整理されてきて、結局うまい数式が思いつくかもしれないという点です。それにあとから追加の要望が出てくる余地もないですよね。 では頑張ってください。

ima15
質問者

お礼

再度のアドバイス、ありがとうございます。アドバイスを参考に再考します。

  • banker_U
  • ベストアンサー率21% (17/78)
回答No.1

【補足要求】そもそも貴社の勤務時間の計算ルールはどうなっているんですか? 前回の質問内容も拝見しましたが、何をしたいのかがよくわかりません。 【アドバイスその1】 一度計算ルールを箇条書きにしてみてください。 あるいは、フローチャートの方がいいかもしれません。 あとはそれを数式に落としていくだけです。 【アドバイスその2】 わたしの思うに、15分刻みでしか計算しないのなら、 あらかじめ、求める時間を計算したパターンテーブルを作っておいて、OFFSET関数でそれを参照に行った方が、あとあと便利なような気がします。

ima15
質問者

お礼

書いていただき、ありがとうございます。 【アドバイスその1、その2】を参考に一度考え直してみます。

ima15
質問者

補足

言葉足らずで大変申し訳ありません。以下のようなルールです。 基本の勤務時間は 開始8:30終了17:05、休憩45分、当日勤務時間7時間50分です。 早く出勤することもあり、その場合以下のように考えます。 開始7:30終了16:05、休憩45分、当日勤務時間7時間50分 開始8:00終了16:35、休憩45分、当日勤務時間7時間50分 お昼12:30~13:15の45分休みをとる。 終了時刻が17:05以降なら17:05~17:20の15分休みをとる。 (45分に加算。結果、休憩60分) 午後出勤(13:15~)で残業なら、17:05~17:20の15分休みをとる。 また、終了17:20から15分切り捨てで勤務時間をカウントする。 以下のような勤務というのはほぼ有り得ないが、 開始13:15終了16:15の場合、休憩なし、当日勤務時間3時間 (現在の計算式では開始13:15終了16:15の場合、休憩なし、当日勤務時 間2時間50分。) 開始13:15終了14:15の場合、休憩なし、当日勤務時間1時間 開始13:15終了15:15の場合、休憩なし、当日勤務時間2時間 となり、終了16:15の場合も同じように計算させたいという要望があり、調べています。 作っているうちにどんどん要望が追加され、混乱しているのも事実です。

関連するQ&A

  • Excel:勤務時間計の計算式がうまくいかない

    Excel2002を使用し、勤務表を作成しています。 以前こちらでアドバイスをいただき、作成することができました。 今回修正で、開始8:30終了17:05の場合、休憩45分、当日勤務時間7時間 50分と計算させたいのですが、何かアドバイスあればよろしくお願いし ます。 現在使用している計算式では以下のように計算されます。 開始8:00終了16:35の場合、休憩45分、当日勤務時間7時間50分 開始8:30終了17:05の場合、休憩60分、当日勤務時間7時間35分 ■8時-16時35分(定時)の場合 開始時刻:C列 終了時刻:D列 開始時刻を15分単位で切り上げる:P列:=CEILING(C7,"0:15") 終了時刻を15分単位で切り上げる:Q列:=CEILING(D7,"0:15") ■休憩時間 =IF(COUNT(C7:D7)<2,0,IF((P7<"12:30"*1)*(Q7>"13:15"*1),"0:45","0: 00"))+IF(D7>="16:50"*1,"0:15","0:00") 休憩時間は12:30から13:15までの45分。 終了時刻が16:35以降なら15分の休憩時間が加算。 開始、終了が入力されていないと0:00表示。 ■当日 勤務時間 =AND(C6*D6)*(MIN(IF(AND(D6>="12:30"*1,D6<="13:15"*1),"12:30",Q6), "16:35")-MAX(IF(AND(C6>="12:30"*1,C6<="13:15"*1),"13:15",P6),"08 :00")-IF((P6<"12:30"*1)*(Q6>"13:15"*1),"0:45","0:00")+FLOOR(MAX (D6,"16:50")-"16:49:59","0:15")) 開始、終了が入力されていないと空白 12:30~13:15の場合は12:30、16:35以降の場合は16:35、それ以外は終 了時刻のまま。 8:00以前は8:00、12:30~13:15の場合は13:15、それ以外は開始時刻の まま。 残業していないケースをIF文を使わずに計算したいため終了時刻が 16:50以前の場合は16:50と補正して、計算結果が00分になるように細工 。 言葉足らずでしたら、進んで補足させていただきますので、よろしくお 願いします。

  • Excel:勤務時間の計算がうまくいかない。

    No.1468024の質問をした者です。 勤務表を作成しています。(Excel2002を使用) 終了時刻(D列)ー開始時刻(C列)ー休憩時間(E列)=当日の勤務時間を計算しています。 No.1468024の質問でアドバイスをいただき、以下のような計算式を記述しました。 <例> =AND(C13*D13)*(MIN(IF(AND(D13>="12:00"*1,D13<="13:00"*1),"13:00",D13),"17:40")-MAX(IF(AND(C13>="12:00"*1,C13<="13:00"*1),"12:00",C13),"09:00")-E13+FLOOR(MAX(D13,"18:00")-"17:59:59","0:15")) ほぼうまくいくのですが、開始時刻9:00終了時刻12:00とした場合、勤務時間4:00となり、間違ってしまいます。(正しくは勤務時間3:00。また開始時刻9:00終了時刻が12時から13時までの間の時刻で入力された場合も勤務時間3:00と出力したいです。) 休憩時間セルに以下のような計算式を書いています。 <例> =IF(COUNT(C13:D13)<2,0,IF(D13-"12:00"*1<=0,0,IF(C13-"12:00"*1>=0,0,IF(D13<"18:00"*1,"1:00","1:20")))) 休憩時間は12時から13時までの1時間。 終了時刻が17:40以降なら20分休憩時間が加算されます。 開始、終了が入力されていないと0:00表示。 言葉足らずでしたら、進んで補足させていただきますので、よろしくお願いします。

  • Excel:特定の時刻から15分単位で表示させるには?

    勤務表を作成しています。 終了時刻ー開始時刻ー休憩時間という具合に当日の勤務時間を出力させるようにしています。 当日の勤務時間を出力するセルには以下のような条件で計算式を書いています。 <例> =IF(COUNT(C13:D13)<2,0,IF(AND(C13<="9:00"*1,D13>="17:40"*1,"18:1 4"*1>=D13),"7:40"*1,IF(AND(C13>="12:00"*1,"13:00"*1>=C13,D13>="1 7:40"*1),"4:40"*1,IF(AND(D13>="12:00"*1,"13:00"*1>=D13),"3:00"*1, FLOOR(D13-P13-E13,"0:15"))))) (1)開始、終了時刻が入力されていない時、0:00と表示。 (2)開始時刻9:00(もしくはその時刻より前)、 終了時刻17:40から18:14の間の時刻で入力された時、7:40と表示する。 (3)開始時刻12:00から13:00の間の時刻、 終了時刻17:40で入力された時、4:40と表示する。 (4)終了時刻12:00から13:00の間の時刻で入力された時、3:00と表示す る。 (5)(1)~(4)の条件以外は終了時刻ー開始時刻ー休憩時間という計算を 行い、15分単位で丸める。 (1)~(4)の条件は変更なしで、(5)の条件を変えます。 (5)終了時刻が18:15以降、当日勤務時間が7時間40分以上になる。 7時間40分から15分単位で丸める。 <例> 開始時刻9:00、終了時刻17:40の時、勤務時間7時間40分。(定時) 開始時刻9:00、終了時刻18:14の時、勤務時間7時間40分。 開始時刻9:00、終了時刻18:15の時、勤務時間7時間55分。 (一番上に書いたの計算式だと勤務時間が7時間45分になる) 開始時刻9:00、終了時刻18:16の時、勤務時間7時間55分。 ※P13は9:00以前の開始時間を9:00と考えさせる、 12-13時の時間を13時と考えさせる、 上記以外はそのまま表示させるという計算式を書いたセル。 (5)のような条件を加えた計算式が可能であれば教えて下さい。(アドバイス、ヒントでもかまいません。) よろしくお願いします。 使用ソフト:Excel2002

  • Excel:特定の条件でFLOOR関数を使うには?

    Excelを使って、勤務表を作成しています。 開始時刻、終了時刻を入力すると、 終了時刻ー開始時刻ー休憩時間という具合に当日の勤務時間を出力させるようにしています。 当日の勤務時間を出力するセルには以下の条件が必要です。 (1)開始、終了時刻が入力されていない時、0:00と表示する。 (2)開始時刻8:30(もしくはその時刻より前)、 終了時刻17:05と入力された時、7:50と表示する。 (3)(2)の条件以外は15分単位で勤務時間を表示する。 15分単位で丸めるということでFLOORを使うのですが、 そうすると(2)の条件がまったく無視されてしまい、うまくいきません。 FLOORを特定の条件の時のみ、適用する方法があれば教えて下さい。 よろしくお願いします。 使用ソフト:Excel2002 ------------------------------------------------- ちなみに以下のような計算式を当日勤務時間が出力されるセルに書いて試してみました。 =IF(D9="17:05","7:50",IF(COUNT(C9:D9)<2,"0:00",FLOOR(D9-P9-E9,"0 :15"))) 計算式の意味↓ 終了時刻に17:05と入力されたら、当日勤務時間のセルに7:50と表示。 開始、終了が入力されないと、0:00と表示。 そうでなければ、終了ー開始(8:30以前を8:30と考えるセル)ー休憩で計算し、15分単位で表示。 とこのように書いてみたものの…うまくいきませんでした。

  • エクセル2003で勤務時間計算をしたいのですが、

    エクセル2003で勤務時間計算をしたいのですが、 現状は下記のように、H列の計算式が30分単位なのですが、 5分単位で給与計算して、小数点以下を切り捨てするには、 H列の計算式のどこを訂正するとよろしいでしょうか? ■現状(時給880円の場合) C列     D列     E列     F列     H列 始業時刻  終業時刻  休憩時間  実働時間  日給 10:00    17:30     0:45    6:45     5720円 H列の計算式 =IF(OR(C9="",D9=""),"",G9*HOUR(F9)+IF(AND(MINUTE(F9)>=0,MINUTE(F9)<=29),0,IF(AND(MINUTE(F9)>29,MINUTE(F9)<=59),G9/2,G9)))

  • (Excel)勤務時間の計算

    エクセルで深夜時間をふくむ時間の計算方法を探しています。 ※8時間以上勤務で25%増 ※22:00~29:00の勤務で25%増 ↓セル番号 A1:(開始)19:00 B1:(終了)32:00 C1:(22時までの休憩)1:00 D1:(22時以降の休憩)0:00 E1:(時間内時間)2:00 F1:(25%増)9:00 G1:(50%増)1:00 上記でそれぞれのセルにどのような式を入れればいいのでしょうか? お分かりになる方がいらっしゃいましたら、 教えていただけないでしょうか? 宜しくお願いします。

  • 【Excel】時間計算について

    Excel2003を使用しています。 残業時間の計算について、下記のような場合、F2とG2には、どのような数式を入力すればいいでしょうか? 22時以降は深夜残業となりますので、終了時刻が22時を過ぎた場合は、その部分の時間をG列の深夜残業に表示し、22時まではF列の残業に表示させたいのです。表示形式は、C列とE列は『時刻』、F列とG列は『h"時間"mm"分"』になっています。    C列     E列        F列      G列 1  開始時刻  終了時刻  残業      深夜残業 2  17時30分  23時30分  4時間30分  1時間30分 IFで条件分岐して入力してみたり、過去の質問も検索してみましたが、思うように表示させることができませんでしたので、質問させていただきました。 よろしくお願いします。

  • 時間の引き算し、勤務時間を出したいが・・・

    すみませんが、教えてください。 勤務開始時間と終了時間を入れて、勤務時間を出す計算をしましたが、正確に出ないときがあるのですがどうしてでしょうか? C2:開始時間 D2:終了時間 =IF(D2>=C2,(D2-C2)*24,(D2+"24:00"-C2)*24) ex 開始時間‐終了時間=勤務時間 ○ 19:00-9:00 14h × 19:00-9:00 -10h 何が影響しているのかわかりません。 分かる方、教えてください

  • エクセル 勤務時間の計算について

    以下の勤務時間とします。 開始  終了  休憩 実労働時間 09:00 17:30  1:00 7:30 この数値をエクセルにすると、 A1 B1 C1 D1 09:00 17:30 1:00 7:30 D1の時間算出 =(A1-B1-C1) となりますが、 このD1の7:30 を 7.5で算出したいのですが 簡単な計算式(セルD1内で計算)を教えてください。

  • Excelで勤務時間の管理表を作成したい

    Excel初心者です。 Excelに詳しい方、どうかご教示いただきたく思います。 現在、タイムカードを元に、Excelで勤務時間の管理をしようとしていますが、 思うように出来ず、大変困っております。 作成したい勤務管理表としては、添付の画像のような形式になるのですが、 出社時刻も退社時刻も、昼休憩の開始時間や昼休憩の時間の長さも 人によってまちまちで特殊な働き方のため、管理が難しいです。 そのため、添付画像のように、 タイムカードの出社時刻と退社時刻を記入するだけではなく、 実際に業務を行った時間の内訳がわかるよう、 午前と午後の開始時間と終了時間の枠を設け(E列~J列)、 それを元に勤務時間合計(K列)を出すようにしています。 そこで、勤務が午前~午後にまたがり昼休憩を挟む場合は、 午前の終了時間(G列)と午後の開始時間(H列)は手入力をするようにし、 それ以外は、タイムカードの出社時刻(C列)と退社時刻(D列)が、 午前の開始(E列)および午後の終了(J列)の欄に反映されるようにしたいです。 なおその際に、以下の4点を考慮して作成したいと考えています。 (1)出社時刻(業務開始時間)は30分単位で切り上げる。 (2)退社時刻(業務終了時間)は30分単位で切り下げる。 (3)タイムカードの出社時刻欄(C列)や退社時刻欄(D列)に何も入力されていない場合は、  午前・午後の開始欄・終了欄(E列~J列)は空欄にさせる。  同様に、午前だけの勤務時は、午後の開始欄・終了欄(H列~J列)を空欄、  午後だけの勤務時は、午前の開始欄・終了欄(E列~G列)を空欄にさせる。 (4)タイムカードの出社時刻(C列)に合せて、その時刻が午前ならば午前の開始欄(E列)に、  午後ならば午後の開始欄(H列)に、(1)で丸めた時間を表示させる。  同様に、退社時刻(D列)に合わせて、その時刻が午前ならば午前の終了欄(G列)に、  午後ならば午後の終了欄(J列)に、(2)で丸めた時間を表示させる。 (※但し、添付画像の6行目の例の様に、午前だけの勤務の際に、終了時間が12時を過ぎていた場合は、午前の終了欄(G列)に表示させる。) 現在は勤務時間合計(K列)だけ計算式を入れており、それ以外は全て手入力のため、 手間がかかるだけでなく、入力ミス等にも繋がるため、 出来るだけミスの少ない管理表を作成したいと思っています。 条件の多い質問で大変恐縮ではありますが、 なるべく簡単な方法を教えていただけると大変助かります。 どうぞ宜しくお願い致します。

専門家に質問してみよう