- ベストアンサー
エクセル関数 検証をお願いします。
勤怠の管理表を作成しています。 先日端数処理の方法を質問して、解決したのですが、また分からない所がでてきてしまいました。 数式の検証をお願いします。 給与は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関数で時間の計算ができるそうですが、通常と、深夜で分けて計算することもできるのでしょうか? 式の問題点や、もっと簡単な関数がありましたら教えてください。 宜しくお願いします。
- みんなの回答 (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)
お礼
出来ました! 人の作った式を真似ただけだったので、意味が理解できていなかったのですが、こんなに簡単な式でよかったんですね。 助かりました。ありがとうございました!