重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつもお世話になります。
WINDOWS XP EXCELL2003

出勤時間をA1に、退社の時間をB1に入れて勤務時間をC1にしたいのです
が。

出勤は
例えば8時出勤
08:00~08:05  08:00の出勤と見なす

退社は
例えば17:00退社
16:50~17:00  17:00の退社と見なす

上は例でシフト制になっていて、人それぞれに出勤時間、退社時間は固定はされていません。

※ ところでこの場合

A1に08:00~08:05と入力したときは0800に、
B1に16:50~17:00と入力したときは1700に

なるような数式はどうすればいいですか。

ご指導いただけませんか。
宜しく御願いします。

A 回答 (6件)

解答No4です。

付属のご質問についてお答えします。
出勤時間については次の式を使います。
=IF(MOD(A1,"1:00")-"0:00:1"<="0:05"*1,FLOOR(A1,"0:30"),CEILING(A1,"0:30"))
ここでMOD関数にマイナスして0:00:1を使っているのは計算上の策です。
退社時間については次の式を使います。
=IF(MOD(B1,"1:00")+"0:00:1">="0:50"*1,CEILING(B1,"0:30"),FLOOR(B1,"0:30"))
    • good
    • 0
この回答へのお礼

クリモトさん、本当にやっかいなことを私のために頑張っていただいて誠に有難うございました。
いつもいつもお世話になります。
こんなに難しい数式はどなたかに甘えるしか手段がありません。

小生の力の及ばないところです。
今後とも宜しく御願いします。

テストをしてお礼が送れました。

お礼日時:2009/11/15 22:50

要するに、5分足したり10分引いたりしてから処理すればよいということでしょうか。



=FLOOR(B1+"0:10","0:30")-CEILING(A1-"0:05","0:30")
    • good
    • 0
この回答へのお礼

ご協力いただき有難うございました。
今後とも宜しく御願いします。

お礼日時:2009/11/15 22:53

出勤や退社の時間付近では細かな時間指定が必要のようですが、それ以外の時間になれば30分単位で出勤の時間では切り上げる、退社の時間では切り捨てることになるでしょう。

例えば30分単位で切り上げるときはCEILING関数を、切り捨てるときはFLOOR関数を使いますね。
出勤における時間は次のような式になりますね。
=IF(OR(A1<"8:00"*1,A1>"8:05"*1),CEILING(A1,"0:30"),"8:00"*1)
退社における時間は次のようになりますね。
=IF(OR(B1<"16:50"*1,B1>"17:00"*1),FLOOR(B1,"0:30"),"17:00"*1)
したがってC1セルへの入力の式は次のようになりますね。
=IF(OR(B1<"16:50"*1,B1>"17:00"*1),FLOOR(B1,"0:30"),"17:00"*1)-IF(OR(A1<"8:00"*1,A1>"8:05"*1),CEILING(A1,"0:30"),"8:00"*1)

なお、セルの表示形式は時刻にしておきます。

この回答への補足

いつもKURIMOTOさんにはお世話になります。
テストしました。
この場合は 0800~1700の時間の範囲みたいです。

下記は複雑な条件付きですが可能でしょうか。
ご苦労掛けますがもし可能ならばご教示いただけませんか。

A1(出勤時間) B1(退社時間)の値は24時間シフトですので上の範囲に当てはまりません。
ということは 0800~1700以外の勤務があります。

A1の値に対して5分迄は許容範囲(時間に遅れても認める)
 但し5分以上は30分後の出勤になる
例1
  A1=0905 0900
例2
  A1=2304  2300
例3
  A1=1006  1030
例4
  A1=2307  2330
B1の値も10分前は許容範囲(早く帰っても認める)
 但し10分以前は30分繰り上げ
例1
  B1=1455 1500
例2
  B1=2253 2300
例3
  B1=1350 1400
例4
B1=1249  1230

補足日時:2009/11/15 09:55
    • good
    • 0

ご参考程度で。


使っている人がいない気がしますが、添付資料のように表を使う方法もあります。
左の表の判別は、右の表の判定の値を表示しています。
「勤務時間の設定方法」の回答画像3
    • good
    • 0
この回答へのお礼

ご協力いただき有難うございました。
今後とも宜しく御願いします。

お礼日時:2009/11/15 22:53

> A1に08:00~08:05と入力したときは0800に、


> B1に16:50~17:00と入力したときは1700に
8時何分までが「08:00」なんですか?
「16:49」はどうします?
お昼休みはどうします?
1時間単位?0.5時間は無し?

条件提示が不十分かも。

この回答への補足

説明不足で大変ご迷惑を掛けます。
18時何分までが「08:00」なんですか?
 08時05分までです。(~0800~0805)
  08時05分以上は08時30分になります。
   当然、08時00分前は08時00分です。
2「16:49」はどうします?
 16時30分の退社です。
3お昼休みは無視です。 引きません。
4出勤、退社の時間は30分単位です。

大変申し訳ありません。
宜しく御願いします。

補足日時:2009/11/15 00:53
    • good
    • 0
この回答へのお礼

ご協力いただき有難うございました。
今後とも宜しく御願いします。

お礼日時:2009/11/15 22:54

計算式を簡単にする為に


c列を出勤時間の補正に使う、式はIF関数とAND関数を組合わせて8時を決める。
d列は出勤と同様に補正に使う
簡単な計算ですが人から教えて貰ったものをそのまま使うと
後でメンテナンスが出来なくなります。
自分で計算式は入れて下さい。
    • good
    • 0
この回答へのお礼

ご協力いただき有難うございました。
今後とも宜しく御願いします。

お礼日時:2009/11/15 22:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!