[[20100525153610]] 『残業時間の計算方法について』(みるく) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『残業時間の計算方法について』(みるく)

エクセルで残業時間を計算しています。
色々と調べてみたものの、わからないので教えてください。

退社時間を入力すると、残業時間が計算されるように計算式を入れています。
しかし、正しく表示されない場合もあり、どのように訂正して良いのかわかりません。

定時は18:00で、15分毎に残業がつきます。
22:00以降は深夜残業となります。
残業時間の表示については、18:15退社→0.25、18:30退社→0.5と表示されるようにしています。
※18:20の場合は、0.25です。

残業時間の計算式は、
=IF(退社時間<TIME(22,0,0),(FLOOR(IF(退社時間>TIME(18,0,0),退社時間-TIME(18,0,0),0),"0:15"))*24,4)

深夜残業の計算式は、
=(FLOOR(IF(退社時間>TIME(22,0,0),退社時間-TIME(22,0,0),0),"0:15"))*24

※残業時間と深夜残業は、違うセルに表示されるようにしています。

しかしこの計算式ですと、退社時間が18:15の時に、残業時間が表示されません。
きちんと「0.25」と表示されるような方法を教えてください。
よろしくお願いします。

Microsoft Office Excel 2003です。


  >しかしこの計算式ですと、退社時間が18:15の時に、残業時間が表示されません。

 時間の計算には小数演算誤差の問題がつきまといます。
 なので、Floorを使って丸める時に、僅かな不足から、予期せぬ切り捨てが行われることがあります。

 ご提示の時刻データは分単位なので、1秒余分に足してから丸めれば、良さそうです。

 元式=IF(退社時間<TIME(22,0,0),(FLOOR(IF(退社時間>TIME(18,0,0),退社時間-TIME(18,0,0),0),"0:15"))*24,4) 
 変更=IF(退社時間<TIME(22,0,0),(FLOOR(IF(退社時間>TIME(18,0,0),退社時間-TIME(17,59,59),0),"0:15"))*24,4)

 元式 =(FLOOR(IF(退社時間>TIME(22,0,0),退社時間-TIME(22,0,0),0),"0:15"))*24
 変更 =(FLOOR(IF(退社時間>TIME(22,0,0),退社時間-TIME(21,59,59),0),"0:15"))*24

 (半平太) 2010/05/25 17:12

半平太さん

丁寧な回答ありがとうございます。
解決しました。

本当に助かりました!
ありがとうございました。

みるく


次の式では如何でしょう。

残業時間=IF(退社時間<TIME(22,0,0),(FLOOR(IF(退社時間>TIME(18,0,0),(退社時間*1440-TIME(18,0,0)*1440)/1440,0),"0:15"))*24,4)

深夜残業=(FLOOR(IF(退社時間>TIME(22,0,0),(退社時間*1440-TIME(22,0,0)*1440)/1440,0),"0:15"))*24

時刻計算時に「分」にしてから元に戻します。

<みや>


みやさん

ありがとうございます。

別の方法もあるんですね。
勉強になります。

試してみて、やり易い方でやってみようと思います。

みるく


 >別の方法もあるんですね。
 そうなんですかねぇ?
 小数誤差対策としては何もやっていないような気がしますが。
 単なる結果オーライなんじゃないですか?

 (半平太) 2010/05/27 12:34

みやさんの方法でやってみましたが、確かに「0.25」と表示されませんでした><。
ちゃんと確認せず、すみません。

半平太さんに教えていただいた方法でやっています。
ありがとうございました。

みるく


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.