- 締切済み
VBAで残業 早退過不足金額の計算コード
エクセルファイルにおきまして セルDi =退勤時刻としまして 基準退勤時刻を18:00とし、18:00ちょうどに 退勤であれば残業代は0となります 18:45であれば0.25*1000 250円が残業代として 加算となります 時給を1000円として 残業または早退のときの 加算または減算金額を計算したいのですが iが1から31となります VBAで計算する場合は どのようになるでしょうか すみません 宜しくお願い致します win10 office365
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kkkkkm
- ベストアンサー率66% (1719/2589)
Cells(i, "I").Value = (Cells(i, "D").Value - TimeValue("17:45")) * 24 * 1000 というやり方もありますがまるめ誤差が出ますので D1を18:45にして実行するとセルの表示は1000ですが数式バーでは999.999999999999になっていると思います。 関数でも1000と表示されますがどこかのセル(たとえばJ1)に1000と手入力して あいているセルに =I1=J1 としたら FALSE となると思います。 ですので一応時間計算は時間を分として整数にして計算する方法でやってみましたので試してみてください。 Cells(i, "i").Value = ((Hour(Cells(i, "D").Value) * 60 + Minute(Cells(i, "D").Value)) - _ (Hour("17:45:00") * 60 + Minute("17:45:00"))) / 60 * 1000
- luka3
- ベストアンサー率72% (424/583)
『18:45であれば0.75*1000 750円が残業代として』のミスだという前提で、 VBAを使わなくても、数式で =(D1-"18:00")*24*1000 で、750 を出せます。 24を掛けているのは、日付計算の単位が"時間"ではなく"日"のためです。
- kkkkkm
- ベストアンサー率66% (1719/2589)
時給についてはよくわからないのですが 時給1000円の人が45分残業して残業代が250円なのでしょうか また、加減算は1分ごとに計算されるのでしょうか。
補足
有り難うございます たとえば17;45を基準として18:00退勤であれば15分の残業として時給1000円とすると0.25*1000の250円の残業代となるわけですが、VBAの一連のコードのなかで それを計算したいので、たとえばセルDに退出時刻 そのときの残業代をセルIに返すのを Cells(i, "I").Value = (Cells(i, "D").Value-17:45)*24*1000 を作ってみましたが 稼働しません 追加質問となりますが お時間あるときにでも宜しくお願い致します
お礼