アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話様です。

説明が難しいので文章がおかしいかもしれません。

時給が違うので、昼の時間と、夜間時間と分けて
0.25で計算出来るように式を組んでいます。
22時以降は夜間時間として計算しています。

例えば20:00~26:00まで働いたとします。
この場合、昼:2時間勤務・夜4時間勤務の合計6時間になります。

しかし何故か、出勤時間にに20:00~と入力すると
昼の勤務時間が1.75になってしまいます。

20:00以外の他の時間は何時に入力しても正しく表示されます。

18:00~24:00 → 4時間
18:00~20:00 → 2時間
19:55~24:00 → 2時間
20:00~24:00 → 1.75時間
となってしまします。

式は
=FLOOR(A1*24,0.25)
を使っています。
A1には働いた合計時間が入っています。(退勤-出勤-休憩の式を入れてます)

A1に、出勤が20:00の時に表示されるお昼の時間2時間のみが、1.75になります。
そのほかの時間の2時間は、2で表示されます。

よくわからなかったらすみません。
改善方法ございましたらご教授ください。

時刻を入力をするのは私ではないので、入力方法は変えずに
できれば式を修正する方法で改善したいです。

よろしくお願いいたします。

質問者からの補足コメント

  • つらい・・・

    ありがとうございます

    mike_g様
    ①15分単位で計算するので1時間を1として
     0.25 0.5 0.75 1 で計算するためです。
    ②昼は9:00~22:00時です。夜はそれ以降です。

    ③休憩は昼の時間帯に取った分を引く設定にしています。

    入力者は 出退勤と休憩だけ入れます。
    私は、その3つの時間から
    昼の時間・夜の時間を割り出して給料を計算できるエクセルを作っているだけなので
    詳しいことはわかりません・・・・・。

    シリアル値もよくわかりません。すみません。
    なぜ20:00だけおかしくなるのか意味が分かりません。
    シリアル値って、20:00だけに反応するのでしょうか?・・・

    No.2の回答に寄せられた補足コメントです。 補足日時:2018/12/19 16:53

A 回答 (4件)

時間のシリアル値は1日が1になる数値です。

たとえば20時は6分の5ですから0.83333333333…と割り切れません。このように割り切れない数値同士を引き算したり足し算してると、最後の方の桁がちょっと多かったりちょっと少なかったりして、2時間だと思ってるのに実際は1時間59分59.99999998秒だったりするわけです。その状態で24倍すると2.0にならなくて1.999999722とかになってしまい、floor関数で正しく1.75に切り捨てられます。逆に1時間0分0.0000000001秒をceiling関数で切り上げても悲惨ですね。

floor関数やceiling関数を使う前に、妥当な単位でまるめましょう。floor(round(時間*24,3),0.25) とか、floor(mround(時間,"0:01")*24), 0.25) みたいな感じです。

ただし、毎日労働時間を切り捨てる処理をしているのは違法です。
    • good
    • 1
この回答へのお礼

ありがとうございます。

=FLOOR(A1*24,0.25)にそれらを入れることは可能ですか?

20:00前も後も異常はないのですがシリアル値は、20:00に反応してるんですか?

毎日労働時間を切り捨てる処理というか
切り捨てでやらないと0.25にならないのです・・・

15分~29分 =0.25
30分~44分 =0.5
45分~59分 =0.75
60分 =1

の認識なのですが、これは違法なのでしょうか??

お礼日時:2018/12/19 16:58

20時だけ、ってのはたまたまあなたの目についたパターンなだけで、いろんな時間で発生します。



> =FLOOR(A1*24,0.25)にそれらを入れることは可能ですか?
例示済みです。

労働時間の切り捨ては違法です。実際に是正勧告も出ていますよ。
https://jsite.mhlw.go.jp/okinawa-roudoukyoku/yok …
https://jsite.mhlw.go.jp/tokyo-roudoukyoku/yokua …
http://www.pref.fukui.jp/doc/roudouiinkaijimukyo …
    • good
    • 0
この回答へのお礼

出来ました!!ありがとうございます!!
小文字だったので違う関数と思ってしまいました・・・・。
感謝です。助かりました。

URLも張っていただきましてわざわざありがとうございます。
ちなみにですがご提示いただいたものは時間外労働のことですが
これは時給計算です~。時給も同じく違法なんでしょうか・・・??

お礼日時:2018/12/19 17:19

》 0.25で計算出来るように式を組んでいます


0.25 の意味あるいは由来は何ですか?

》 例えば20:00~26:00まで働いたとします。
》 この場合、昼:2時間勤務・夜4時間勤務の合計6時間になります
昼時間帯、および、夜時間帯は、それぞれ何時から何時までですか?

時給の計算対象外の時間(例:休憩時間)があるとすれば、それは何時から何時までですか?
この回答への補足あり
    • good
    • 0

0.25の倍数で切り捨てている理由は分かりませんが


私は普通に表示されたので入力している数値に誤りがあるのでは
同じ式にできているかはわかりませんが...

例えば、20:00や24:00と入力している部分は
ちゃんとシリアル値で0.83333333...と1になっていますか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

=MAX(0, MIN(退勤*1, "22:00")-出勤-休憩時間) →これがお昼の時間を出す式

=FLOOR(A1*24,0.25)→上の式で出た時間を0.25で出している

↑お昼の時間を整数で出し、0.25・0.5・0.75・1と出しています。
20:00~24:00の時の2時間だけ、1.75になります。

シリアルは。。。。わかりません・・・・・

お礼日時:2018/12/19 17:05

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

このQ&Aを見た人はこんなQ&Aも見ています