• ベストアンサー

エクセルで出勤簿を作ってます。

時間をSUMで計算していて、 「退社時間-出社時間-昼休みの時間=就業時間」 という式を入れています。 就業していればちゃんと計算が出るのですが、本日以降の分が、出社時刻と退社時刻が0時間のまま昼休みを引いているので「-1時間」で出てしまいます。 時間が負の数になったら「0時間」で表示させたいと思っているのですが、どうやったらできるのでしょうか? 明日以降の就業時間のセルには式を入れずに”出勤したら式をコピー”で対応できるかもしれないのですが、効率的にやりたいのでわかる方お願いします。

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

  • ベストアンサー
回答No.5

出社時間 A1セル 退社時間 B1セル 昼休み 12:00~13:00 とすれば、 C1セルに =B1-A1-IF(AND(A1<TIME(12,0,0),B1>TIME(13,0,0)),TIME(1,0,0),0) (1)A1セル>B1セル(出社時間より退社時間がはやい) (2)A1セル、B1セルに12:30等の入力 などの入力処理を含めると、 C1セルに =IF(A1>=B1,0,B1-A1-IF(OR(A1>TIME(13,0,0),B1<TIME(12,0,0)),0,MIN(B1,TIME(13,0,0))-MAX(A1,TIME(12,0,0)))) でどうでしょうか? 間違っていたら補足してください。 (できれば、何時~何時と入力した時にうまく表示されないという形でお願いします。)

aogiri
質問者

お礼

教えて頂いた式で問題なく動作しました。 本当に助かりました! ありがとうございました!!

その他の回答 (4)

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.4

>改善点をお願いします! 昼休みを必ず-1しているのが問題なんですね。 昼までに早退した場合、昼から出社した場合は それぞれー1しちゃいけないと。 なので、#3の方の回答のように、邪魔にならないセル(列)に IF(A1<TIME(12,0,0),IF(B1>TIME(13,0,0),1,0),0) として、 これをマイナスするようにするとOKでしょう。 この場合、昼休みを12:00~13:00としてます。 解説しますと、 ・出社時間(A1)が12:00より前なら次のチェックへ、12:00以降なら0 ・退社時間(B1)が13:00より後なら1、13:00以前なら0 となるわけですね。

aogiri
質問者

お礼

無事に解決しました。 ありがとうございました!

  • R34_666
  • ベストアンサー率25% (17/66)
回答No.3

以前私も同じような事でハマりました(笑) 今、思いついたものの例ですがあまりいいものでは無いかも^^; 昼休みをZセル(邪魔じゃないとこ)って感じで用意して、Zセルに以下の計算式を入れる。 IF(出社時間のチェック(1),IF(退社時間のチェック(2),(1)(2)共に真,(1)は真、(2)は偽),(1)(2)共に偽) IF(A1<TIME(12,0,0),IF(B1>TIME(13,0,0),1,0),0) こんな感じで分かります? Zセルには出社&退社が条件クリアすると1が入ります。 (未記入の場合はゼロが入る) さっき聞くの忘れましたが、上の例はセルに「8:00」みたいに入れている場合のものです。 もう少し待ってればもっとキレイな例をくれる人が出てくるでしょう、たぶん(笑)

aogiri
質問者

お礼

無事に解決しました。 ありがとうございました!

  • R34_666
  • ベストアンサー率25% (17/66)
回答No.2

アドバイスと言うかもう少しお聞きしたいのですが、 計算式はどうゆう風にしてますか? 出社時間=Aセル 退社時間=Bセル として、B-A-1 みたいな感じでしょうか? もしこれだと、遅刻や早退した場合、1時間減ったりしますよ

aogiri
質問者

補足

下の方の式を入れたらできたのですが、穴があったのですね(汗) ご指摘の通りの計算式でつくってました。 改善点をお願いします!

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.1

単純にIF関数を使って =IF(今いれている式<0,0,今入れている式) じゃだめですか?

aogiri
質問者

お礼

ありがとうございます 早速試しましたらできました! IFかな?とは思ったのですが、勉強不足で…(汗) とても助かりました!

関連するQ&A