[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『早朝、深夜残業の計算式』(Emma)
D9に始業時間
E9に就業時間が入っています。
8:30-17:30が通常勤務時間です。
8:30前と17:30以降が残業時間です。
残業時間を求めたいです。
下記のように記述しましたがうまくいきません。
=IF(E9<=TIME(0,0,0),E9-TIME(17,30,0)+TIME(8,30,0)-D9,IF(AND(E9>=TIME(0,0,0),E9<=TIME(8,30,0)),E9+"24:00"-TIME(17,30,0)+TIME(8,30,0)-D9,""))
どのように設定すればよろしいでしょうか。
< 使用 Excel:unknown、使用 OS:unknown >
_____D___________E_________F________G_________H_______ 8 始業時間 終業時間 定時前 定時後 残業時間 9 8:00 18:00 0:30 0:30 1:00
F9セルに「="8:30"-D9」 G9セルに「=E9-"17:30"」
みたいにすればよいから、
H9 ="8:30"-D9+E9-"17:30"
みたくなるとおもうんですが、何故IF関数で分岐させてるんですか?
(もこな2) 2021/04/07(水) 07:25
タイトル >早朝、深夜残業の計算式
本文 >8:30前と17:30以降が残業時間です。 >残業時間を求めたいです。
タイトルは「、深夜残業」となっていますが、本文は単に「残業時間」となっています。 本当はどっちなんですか?
また、「通常時間外の時間」と「残業時間」は必ずしもイコールじゃないですよね? 例えば、始業13:00、終業19:00だったら、残業は0:00と思うんですが、そうじゃないんですか?
(半平太) 2021/04/07(水) 09:24
_____D___________E_________F________G________ 始業時間 終業時間 残業時間 深夜残業 8:30 17:30 0:00 0:00 8:30 18:30 1:00 0:00 8:30 24:30 4:30 2:30 7:30 22:30 5:30 0:30 4:30 17:30 3:30 0:30
定時8:30-17:30
残業 5:00-8:30、17:30-22:00 → 1時間2500円
深夜 5:00前、22:00-5:00 → 1時間3000円
うまく条件分岐できません。
(Emma) 2021/04/07(水) 21:51
(Emma) 2021/04/07(水) 21:53
残業について補足説明がないので適当にやりますよ。
F2セル =MAX(0,E2+(E2<D2)-D2-MAX(0,MIN("17:30",E2+(E2<D2))-MAX("8:30",D2))-G2) G2セル =MAX(0,MIN("5:00",E2+(E2<D2))-D2)+MAX(0,MIN("29:00",E2+(E2<D2))-MAX("22:00",D2))
<結果図> 行 ____D____ ____E____ ____F____ ____G____ 1 始業時間 終業時間 残業時間 深夜残業 2 8:30 17:30 0:00 0:00 3 8:30 18:30 1:00 0:00 4 8:30 24:30 4:30 2:30 5 7:30 22:30 5:30 0:30 6 4:30 17:30 3:30 0:30
(半平太) 2021/04/07(水) 23:21
=IF(E9<=TIME(0,0,0),E9-TIME(17,30,0)+TIME(8,30,0)-D9,IF(AND(E9>=TIME(0,0,0),E9<=TIME(8,30,0)),E9+"24:00"-TIME(17,30,0)+TIME(8,30,0)-D9,""))
これを分解すると
1.E9>="0:00"の場合
2.E9<"0:00"かつ"0:00"<=E9<="8:30"の場合
3.1でも2でもない(この場合は空欄になるようになってるね)
の3パターンに分かれるんだけど2は明らかに矛盾してるから1じゃなかった時点で自動的に3の空欄になる
1の場合は
E9-"17:30"+"8:30"-D9
だから多分あってるけど
2の場合は(絶対FALSEになるって話はおいておいて)
E9+"24:00"-"17:30"+"8:30"-D9
ってもうよくわかんないよね
なんで24時間足しちゃってるの
想定としては日付が変わってから帰った場合みたいなところなんだとは思うけど深夜残業って22時からだよね
"0:00"<=E9<="8:30"が条件じゃ22時から24時退社が抜けてるよね
求め方以前に自分がどういう関数を書いてるか理解してないですよね
(あさ) 2021/04/07(水) 23:35
1.E9<="0:00"の場合
2."0:00"<E9かつ"0:00"<=E9<="8:30"の場合
3.1でも2でもない場合
で2は矛盾してないですね。
代わりに1の場合が実質0時退社しかTRUEにならないのでおかしなことになってますが
(あさ) 2021/04/07(水) 23:50
あと始業:13:00、終業:19:00でも、残業は、19:00-17:30の1:30になるのです。
なので、通常の時間外は、残業時間なのです。
特殊なのですが。
また不明点がでてきましたら、
質問させて下さい。
(Emma) 2021/04/08(木) 07:52
>あと始業:13:00、終業:19:00でも、残業は、19:00-17:30の1:30になるのです。 >なので、通常の時間外は、残業時間なのです。
なら、私の提示した式でOKです。
こう言う計算は、ほぼ定番化しているものがあるのでそれを使うと楽です。
ある時間帯(aからb)と別の時間帯(cからd)のオーバーラップしている時間の計算方法 = Max(0,Min(b,d)-Max(a,c))
何故最初にMax(0,・・)とするかと言うと、 オーバーラップがないとマイナスになるので、それを0に換算するため。
※小数演算誤差で、本来なら0なのだが限りなく0に近いマイナス値もこの効果で補正される。 しかし、本来なら0なのだが限りなく0に近い「プラス」値は補正されない。 このプラス誤差は実務的には無害だが、0を空白表示にする書式を設定しても 0:00 と表示される(完全には0じゃないので)
(半平太) 2021/04/08(木) 09:17
SUMで残業時間を計算してるのですが、
フラグが立っているセルは、空欄を埋めています。""を入れています。
そうすると合計時間がおかしくなってしまいます。
セルの設定は、[h]:mm;;です。
合計値を正しく表示する方法を教えて頂けませんでしょうか。
(Emma) 2021/04/12(月) 01:48
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.