重要なお知らせ

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

【GOLF me!】初月無料お試し

出勤から退勤までの時間を計算したいです。しかし、お昼休憩の1時間は省きます。また、算出した数字は、15分単位で表示し、14分は00分で表示します。C列にいれる式はどうなりますでしょうか?

 A列   B列   C列
(出勤)(退勤)(勤務時間)
 8:45  16:32  7:45

A 回答 (7件)

#1



間違え
=FLOOR(B1-A1,"0:15")-"1:00"

でつ
    • good
    • 0

例からお昼休みを考慮しないとして


A2:出勤時間
B2:退勤時間
=TIME(HOUR(B2-A2),INT(MINUTE(B2-A2)/15)*15,0)
表示書式が変わってしまう場合は、書式のコピー貼り付けして下さい。
    • good
    • 0

こういうのは、ひじょうに難しいですね。



=FLOOR(MAX(B1,"13:00")*1440-"13:00"*1440+MAX(MIN("12:00",B1)*1440-MAX("8:45",A1)*1440,0),15)/1440

朝の開始時間が、8:45 だとした場合の計算です。
8:30 だったら、8:45 を直してください。お昼は、12:00~13:00としました。
なお、早朝労働や夜勤・残業計算などは、もうすこし複雑です。

または、昼食フリータイム制なら、
=FLOOR(B1*1440-A1*1440-60,15)/1440

時間は、引き算,割り算, FLOOR, MOD など減算に関わる計算、また、差分を増加率としてコピーするフィル・ドラッグが出来ません。

両方とも、浮動小数点丸め誤差が生じる可能性があるので、時間をそのまま引数にして、計算せずに、一旦、整数に戻すか、テキスト化してから、もう一度、数値にしてあげなくてはなりませんね。

こういう点が、Excelの問題点かな?
    • good
    • 0

勤務状況管理においては#1さんのFLOOR関数を使用するのが


一般的なようです。
http://www.relief.jp/itnote/archives/001084.php
また、#4さんに補足しておきます。
EXCELでは時刻を表すのにシリアル値を用いて計算しています。
時刻を表すシリアル値は24時間を1とし、昼の12:00は半日
つまり0.5というシリアル値になります。
ご質問者の例で15分単位で考えるということは1日24時間を
96分割・・・・(60分÷15分)×24=96
して考えることになります。そこで#4さんの回答のような
数式が登場するわけです。
#4さんのの数式はA列とB列が逆になっているようです
ので、昼食時間の1時間を考慮すると

=ROUNDDOWN((B1-A1-"1:00")*96,0)/96

となると思います。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu …

参考URL:http://www.relief.jp/itnote/archives/001084.php,http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu …
    • good
    • 0

ちょっと強引ですけど


=ROUNDDOWN((A1-B1)*96,0)/96
すべてのセルの書式は、時間表記にして下さい。
    • good
    • 0

お昼休憩を勤務時間から除くと、6:45になると思うのですが・・



とりあえず、こんな式でどうでしょう?
=INT((B1-A1-"1:00")*24*4)/24/4

-"1:00" はお昼の休憩時間を引いています。

また時刻は、Excelでは24時間を1.0と考えているので、
24*4倍して小数を切り捨てれば、15分単位に丸まります。
    • good
    • 0

1行目に入力されているとして


C1に

=FLOOR(B15-A15,"0:15")-"1:00"

と入力。

6:45
になります。
休憩1時間を考慮しないなら、
後半の
-"1:00"
を削除。

もし、
-"1:00"
を入れる入れないを自動判定したいなら
条件をおっしゃってください
    • good
    • 0

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