• ベストアンサー

エクセルで時間表示させる関数(勤務時間)

勤務表管理のため、表を作成しています。 通常勤務は9:00-17:30で残業時間が15分の休憩を挟んだ後17:45-21:30までです(その後深夜残業がありますがここでは割愛します) C22に仕事開始時間、D22に仕事終了時間を入れています。 例えば9:00-22:00で仕事したとします。そして、あるセルに、残業時間開始時間、終了時間を表示させたいのですが、残業時間開始を =IF(D22> "17:30","17:45","") と入れたのですが空白で返されてしまいます。">"を"<"にするとなぜか17:45が表示されます。 終了時間は、IF(D22>="21:30",MIN(D22,"21:30"),D22) だと空白で返されます。逆にするとMIN(D22,"21:30")が返されて例えばD22に17:30とか入れると21:30と返されてしまいます。 時間計算の場合、何か特殊な設定をしないと逆になってしまうのでしょうか?

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

> =IF(D22> "17:30","17:45","") ⇒D22は数値、時刻は文字列だから数値<文字列でFALSEになります。  よって、時刻の文字列をTIMEVALUE("17:45")、又は"17:45"*1として下さい。  一例.=IF(D22>"17:30"*1,"17:45"*1,"") セルの書式設定で表示形式を時刻にして下さい。     因みに"17:30"は"17:45"では無いでしょうか。

yesQP
質問者

お礼

ありがとうございます。 *1とするというのを始めて知りました。 今試して見ましたが、おかげさまで出来そうです。

その他の回答 (3)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

=IF(D22> "17:30","17:45","")は =IF(D22> "17:30"*1,"17:45"*1,"") で試してみてください。 =IF(D22>="21:30",MIN(D22,"21:30"),D22) の意味もよくわからないのですが D22が21:30より大きければD22と21:30の小さいほう? MIN(D22,"21:30")は常に21:30? =MIN(D22,"21:30"*1) 或いは =IF(D22>="21:30","21:30"*1,D22) と同じでは。

yesQP
質問者

お礼

ありがとうございます。 =IF(D22>="21:30",MIN(D22,"21:30"),D22) については、深夜残業の関係があり、こうしてみたのですが、おっしゃる通り、=IF(D22>="21:30","21:30"*1,D22)というのに私も先ほど気づきました。 参考にさせていただきます。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.2

""でくくると、時間という値ではなく、文字列と扱われます。 比較式では文字列は0として扱われるので、=IF(D22> "17:30","17:45","") の D22>"17:30" は常に真として扱われ、常に""が返されます。 どこかのセルに17:30や17:45と記入して、そのセルを計算式で使うと楽ですよ。

yesQP
質問者

お礼

ありがとうございます。 参考にさせていただきます。

回答No.1

空白になるのは「D22」に何も入ってないからなのでは? そういう関数を組んでありますもんね? 時間の計算について特殊な事といえば「*24」をするって事ぐらいでしょうか。

yesQP
質問者

お礼

ありがとうございます。 D22入力はしています。

専門家に質問してみよう