勤怠の管理表を作成しています。
先日端数処理の方法を質問して、解決したのですが、また分からない所がでてきてしまいました。
数式の検証をお願いします。

給与は15分毎に計算し、00時から深夜です。
出勤時間と退勤時間から通常、深夜、合計の3つの時間を計算しています。
その時間を端数計算する式です。
15分~29分=25、30分~44分=50、45分~59分=75

・02:58~05:30の場合
通常0.0、深夜2.50、合計2.50となります。
でも、現状だと通常2.5、深夜0.0、合計2.5になってしまっています。
出勤時間と退勤時間から深夜時間を計算する式が
if(isblank(退勤時間),"max(退勤時間+(出勤時間>退勤時間)-"24:00",0)-max(退勤時間*退勤時間)-出勤時間、0)-max(出勤時間-"24:00",0)+max(出勤時間-出勤時間)-max(出勤時間-退勤時間,0)*(出勤時間<退勤時間))

if関数なのでごちゃごちゃして分かりづらい式になってしまいました。
FLOOR関数で時間の計算ができるそうですが、通常と、深夜で分けて計算することもできるのでしょうか?
式の問題点や、もっと簡単な関数がありましたら教えてください。
宜しくお願いします。

A 回答 (3件)

提示された式は読みづらかったので見て居ません。



次の様にしてはいかがでしょう。
仮に8時以降の出勤は通常とします。
まず、出勤時間と退勤時間を15分単位で端数処理しましょう。
A1に出勤時間、B1に退勤時間が入っているものとします。

A2に端数処理した出勤時間
=HOUR(A1)+CEILING(MINUTE(A1),15)/60+24*(HOUR(A1)<8)

B2に同じく退勤時間
=HOUR(B1)+FLOOR(MINUTE(B1),15)/60+24*(HOUR(B1)<8)

出勤時間はCEILINGを使って切り上げ、退勤時間はFLOORで切り上げています。
また、日付が変わると判りにくいので1時を25時の様にしています。

ここまでくれば後は簡単
通常の勤務時間:=IF(B2>24,24,B2)-IF(A2>24,24,A2)
深夜の勤務時間:=IF(B2<24,24,B2)-IF(A2<24,24,A2)
    • good
    • 0
この回答へのお礼

出来ました!
人の作った式を真似ただけだったので、意味が理解できていなかったのですが、こんなに簡単な式でよかったんですね。
助かりました。ありがとうございました!

お礼日時:2009/05/15 16:20

No.2です。


タイプミスですが、FLOORで行っているのは「切捨て」です。
失礼しました。
    • good
    • 0

こんにちは



 上記、質問文の式の「if(isblank(退勤時間),」の次に「"」が付いていますが、問題ないですか?
 質問文のタイプミスでしょうか?

この回答への補足

タイプミスです。
”,が抜けてました。退勤時間が空欄なら、空欄にするという式です。
ご指摘ありがとうございます。

補足日時:2009/05/15 14:13
    • good
    • 0

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


人気Q&Aランキング