質問: (($F$2*G8)+($F$3*H8)+($F$4*I8))*24 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 24時~出勤なら表が作動しますが 23時以前からの24時を跨ぐ出勤なら表が作動しません 色々Googleなどで検索しましたが最終的にここまででした 誰か詳しい方ヒントor答えを教えていただけませんか?
回答: 其々の関数式を次の通り提言します。 >年度と月分から自動で割り出す =IF(DATE($B$1,$B$2,ROWS(B$7:B7))<=EOMONTH(DATE($B$1,$B$2,1),0),DATE($B$1,$B$2,ROWS(B$7:B7)),"") >日付から自動で割り出す =TEXT(B7,"aaa") >通常時給の時間での労働時間 =MIN("22:00",MAX("5:00",E7*1))-MAX("05:00",MIN("22:00",D7*1)) >深夜時給の時間での24時までの労働時間 =MIN("24:00",MAX("22:00",E7))-MAX("22:00",D7) >上記の残りの0時~5時の労働時間 =MIN("05:00",E7)-MAX("00:00",MIN("5:00",D7)) >1日(土)の場合の計算式 >F8(休憩) = IF((G8+H8+I8)*24>=8,TIME(0,30,0),TIME(0,0,0)) 貼付画像では1日(土)は7行目のようです。 従って、提示の計算式は1行ずれています。 また、G、H、I列の時間計算に誤りがあります。 「出勤時間をhh:mmで記入」としていればD列とE列は時刻のシリアル値なので直接計算できます。 MIN("22:00",TIME(E8,,) → E8に入力された時刻はすべて 0 と評価されます。 MAX("05:00",TIME(D8,,)) → D8に入力された時刻はすべて 0 と評価されます。 ∴ MIN("22:00",TIME(E8,,))-MAX("05:00",TIME(D8,,) → 0 代わりに次の式を適用しても正しい値を導けない条件もあります。 =MIN("22:00",E8)-MAX("05:00",D8) >23時以前からの24時を跨ぐ出勤なら表が作動しません 日付を跨ぐ計算は複数行を使う方法と出勤時刻より退勤時刻が小さいとき退勤時刻に整数の1を加える方法で対処します。 何れにしても深夜勤務に係わる22:00~5:00の扱いを論理的に正しい判断を組み入れないと算出時間に誤りが生じます。