タイムカードから就業時間計算
Excel2000でタイムカードの出勤・退出時刻を入力して、就業時間を出そうとしています。
定時は8:30~17:15、休憩は12:00~12:50、14:50~15:00、17:15~17:30です。
http://www.h3.dion.ne.jp/~sakatsu/WorkingTimeCalc.htm
↑このサイトを参考に、
A列に出勤時刻(手入力)、
B列に退出時刻(手入力)、
C列に24時補正、
=IF(OR(A2="",B2=""),"",IF(A2<B2,B2,B2+1))
D列に深夜1(0:00~8:30)、
=IF(OR(A2="",C2=""),"",IF(AND(A2<TIMEVALUE("8:30"),C2>=TIMEVALUE("0:00")),MIN(C2,TIMEVALUE("8:30"))-MAX(A2,TIMEVALUE("0:00")),0))
E列に午前(8:30~12:00)、
=IF(OR(A2="",C2=""),"",IF(AND(A2<TIMEVALUE("12:00"),C2>=TIMEVALUE("8:30")),MIN(C2,TIMEVALUE("12:00"))-MAX(A2,TIMEVALUE("8:30")),0))
…の要領で、F列に午後1(12:50~14:50)、G列に午後2(15:00~17:15)、H列に夜(17:30~24:00)の式をそれぞれ入力し、I列でD~H列を合計しています。=SUM(D2:H2)
このうち午前・午後1・午後2は正確に表示されるのですが、深夜・夜が0:00のままで表示されません。(退出を夜or深夜にしても0:00のままです)
午前・午後と同じような式を使っているのにどうしてなのでしょうか。どうすれば正確に出るのでしょうか。
セルの書式設定はユーザー定義で[h]:mmにしています。
今日午後から連休明けまではここを覗けないのでお礼ができませんが、よろしくお願いします。
お礼
SI299792さん、教えてくださり大変有難うございました。 簡潔な式でできること、目からウロコでした。 そして、ユーザー定義に ;; を使うとどうなるか、知らなかったので勉強になりました。 A列の空白の部分に実際は式が入っていたので、SI299792さんが教えてくださった式の前に=IF(A1="","",を追加しました。 そうすると、=MAXで始まる式はユーザー定義「h:mm;;」に変更しなくても良かったので、一番簡潔な下段のMAXを採用することにしました。 助かりました。 ありがとうございます。