こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセル 勤務表 休憩時間について

エクセル2003を使用しています。
また勤務表の作成にあたり困ってしまいました。
今回も宜しくお願いします。

残業時の休憩です。
1)18:10~19:09の間に終了した場合は 10分の休憩
2)19:10~21:09に 〃        20分
3)21:10~23:09に 〃        30分
4)23:10~25:09に 〃        40分      想定されるのはこのあたりまでです。

この休憩時間を休憩のセルに0:20などと入れたいのです。
if(and(time(18,10,0)>=A2、などと長々いれてみましたが
最後の4)が表示できません。。
きっと24時を超えているからだろうと思うのですが
色々試してもうまくできません。。
うまくできる方法をお願いします。。

関係ないかもしれませんが、終了時刻はタイムカード打刻からFLOOR関数で15分に丸めた
時刻のセルを参照しています。

投稿日時 - 2011-07-15 23:15:14

QNo.6878235

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

 どの様なデータがどのセルに入力されているのかに関して、何も記述されていないため、仮に、B2セルに出勤時刻が、C2セルに退勤時刻が、それぞれ入力され、残業終了時と休憩時間の関係がI列とJ列に、次の様に入力されているものとします。

      I列       J列
1行目 残業終了時  休憩時間
2行目   18:10       10
3行目   19:10       20
4行目   21:10       30
5行目   23:10       40

 その場合、残業時の休憩時間は、次の様な関数で求める事が出来ます。

=IF(AND(COUNT($B2,$C2)=2,$C2>"18:10"*1),VLOOKUP($C2+($B2>$C2),$I:$J,2),"")

 Excelでは、判定式の判定結果が、[真]である場合には、その判定結果は、計算上は数値データとしての「1」と同様に取り扱われ、[偽]である場合には、その判定結果は、計算上は数値データとしての「0」と同様に取り扱われます。
 そのため、上記数式中の

($B2>$C2)

の部分は、出勤時刻が退勤時刻よりも早い時刻の場合には、判定結果は[偽]になるため、数値の0として扱われますから、

$C2+($B2>$C2)

の部分の計算結果は、C2セルに入力されている退勤時刻に、0日を加えた値、即ち、入力した退勤時刻と同じ値となります。
 そして、退勤時刻が真夜中を過ぎた時刻である場合には、退勤時刻は「0:01」等の様に、出勤時刻よりも早い時間帯の時刻が入力される事になる訳ですから、

($B2>$C2)

の判定結果は[真]となり、計算上は数値の1として扱われますから、

$C2+($B2>$C2)

の部分の計算結果は、C2セルに入力されている退勤時刻に、1日(=24時間)を加えた値、即ち、翌日の時刻となります。

投稿日時 - 2011-07-16 03:37:57

お礼

記載が足りなくすいませんでした><
知識が足りなく内容を理解するのに時間がかかるので><先にお礼を書かせて頂きます。
細かくご説明ありがとうございます!
教えて頂いた式をあてはめ色々試してみようと思います。

投稿日時 - 2011-07-17 20:10:20

ANo.1

0:00~1:09分に出社ということがなければ
=LOOKUP(TEXT(IF(A2<"01:10"*1,A2+1,A2),"[h]:mm"),{"18:10","19:10","21:10","23:10","25:10"},{10,20,30,40,50})

投稿日時 - 2011-07-15 23:54:33

お礼

LOOKUP関数は全然思いつきませんでした。参考になりました!
ありがとうございました!

投稿日時 - 2011-07-17 20:10:57

あなたにオススメの質問