私が働いている場所では残業代は支払われませんが、残業のために休日が発生します。私は次のスプレッドシートを持っています。これは、私が行った残業の量を計算し、それを合計しD15
ます。
ここで、1日8時間に基づいて、これが何日であるかを計算したいと思います。でD16
、を実行=D15/8
してフォーマットしましh.mm \d\a\y\s
たが、これはの2.26 days
代わりにとして表示され2.4375 days
ます。
で使用する正しい式は何D16
ですか?
私が働いている場所では残業代は支払われませんが、残業のために休日が発生します。私は次のスプレッドシートを持っています。これは、私が行った残業の量を計算し、それを合計しD15
ます。
ここで、1日8時間に基づいて、これが何日であるかを計算したいと思います。でD16
、を実行=D15/8
してフォーマットしましh.mm \d\a\y\s
たが、これはの2.26 days
代わりにとして表示され2.4375 days
ます。
で使用する正しい式は何D16
ですか?
読者への注意:この質問は複数の解決策につながり、そのうちのいくつかはコメントで議論されました。ここに見つけた解決策の要約があります。
最初の解決策
=(HOUR(D15)+MINUTE(D15)/60)/8
説明
Excel の日付と時刻はシリアル番号として格納されているため、19:30
実際にはそうです0.8125
。
したがって、 で割ると8
、 になります0.1015625
。
この後者の値は価値があります2.26 days
OP のバージョン(Danny Becket (OP) に感謝) - 以下のコメントを参照してください。
このソリューションは現在、24 時間以上を処理します。
=((DAY(D20)*24)+HOUR(D20)+(MINUTE(D20)/60))/8
=((INT(D20)*24)+HOUR(D20)+(MINUTE(D20)/60))/8
前者の式には大きな値に対する制限があり、おそらくここでは関係ありませんが、D20
800:00 の場合、間違った答えが得られます (100 日ではなく 7 日)。これはおそらく、DAY
関数が 31 で「リセット」される暦日を与えているためです。INT
代わりに使用するのが最適ですDAY
。
別のわかりやすいバージョン
時間値としての 1 日の長さで割ります。
=D15/"8:00"
労働日の長さが変わると、より簡単に変更できます
入る:
B3
8:3で16:
3
でC3
D3
=IF(B3<C3,C3-B3-1/3,2/3-B3+C3)
を選択B3:D3
し、次のようにフォーマットしてhh:mm
、必要なだけ下にコピーします。
合計して数式にColumnD
追加*3
しますが、数値として書式設定します。
ColumnB
および/または必要に応じてセルを上書きしてデータを追加しますColumnC
(デフォルトでは合計に追加されません)。
次の定時開始時刻までの時間外労働に対応(例:午前0時過ぎ、新しいシリアル番号を含む)。1/3
標準稼働時間は 8 時間です (日付シリアル カウンターは 24 時間単位です)。B3
ハードコーディングすることもC3
できますが、(i) その必要がなく、(ii) 柔軟性が向上します。非標準の開始/終了を簡単に特定するには、条件付き書式を使用できます。
週末の残業には対応していませんが、簡単に変更できます (例: 列を追加し、追加の列に 8 で週末の日にフラグを立て、その 8 [1/3] を終了時刻に追加します)。