20. juli 2005 - 00:22Der er
7 kommentarer og 1 løsning
Ny formel vedr. beregning af overtid
Jeg har behov for at lave en formel der beregner et tillæg på kr. 72,10 pr. time i tidsrummet lørdag kl. 14:00 til mandag kl. 06:00 (samt helligdage)...
Nej, jeg har lavet timeløn for sig, tillæg hverdage for sig og tillæg weekend og helligdage for sig.
Vi har følgende beregninger: 1. Timeløn 2. Skifteholdstillæg hverdage (tidsrummet 18:00 til 06:00) 3. Skifteholdstillæg weekend (lørdag 18:00 til mandag 06:00) samt helligdage
Oops. Jeg har undersøgt lidt mere og definitionen er: 3. Skifteholdstillæg weekend (lørdag 14:00 til mandag vagt slut) samt helligdage. I praksis betyder det, at man får kr. 72,10 ekstra de timer man er på arbejdet mellem lørdag kl. 14:00 og mandag hvor vagten slutter (Helligdage er som søndag). Altså, hvis man er på job søndag kl. 20:00 til mandag 07:30 så får man 72,10 for 11,5 timer. Og hvis man er på job skærtorsdag 12:00 til 01:00 får man tillægget 13 timer
Jeg har sendt en fil... Jeg har dato med i filen og evt. et felt hvor man markerer om det er helligdag, hvis det skulle blive for besværligt. Mvh Johnny
Der er rettet i den der hedder SH_Skifteholdstillæg, i forhold til den jeg sente retur.
Public Function SH_Skifteholdstillæg(ByVal Dato As Long, Start As Date, Slut As Date, NormalStart As Date, NormalSlut As Date, SogH_Tillæg As Double) Dim T As Date, HD As String, ST_Start As Date
SH_Skifteholdstillæg = 0 HD = HelligdagsNavn(Dato) L = Weekday(Dato) ' Lørdage = 7 T = "00:00" ST_Start = "14:00"
If HD = "Ja" Or L = 7 Then If NormalSlut < NormalStart Then NormalSlut = NormalSlut + 1 If Slut < Start Then Slut = Slut + 1
If L = 7 Then
If Slut > ST_Start And ST_Start > Start Then T = Slut - ST_Start SH_Skifteholdstillæg = (T * 24) * SogH_Tillæg Else T = Start - Slut End If
If HD = "Ja" Then T = Slut - Start SH_Skifteholdstillæg = (T * 24) * SogH_Tillæg End If
End If End Function
Function HelligdagsNavn(lngdate As Long) As String Dim InputYear As Integer, PD As Long, OK As Boolean If lngdate <= 0 Then lngdate = Date InputYear = Year(lngdate) PD = Påskedag(InputYear) ' bruger funktionen Påskedag Select Case lngdate ' Tester nedenstående påstande mod datoen Case DateSerial(InputYear, 1, 1): HelligdagsNavn = "Ja" '"Nytårsdag" Case PD - 3: HelligdagsNavn = "Ja" '"Skærtorsdag" Case PD - 2: HelligdagsNavn = "Ja" '"Langfredag" Case PD: HelligdagsNavn = "Ja" '"Påskedag" Case PD + 1: HelligdagsNavn = "Ja" '"2. Påskedag" Case DateSerial(InputYear, 6, 5): HelligdagsNavn = "Ja" '"Grundlovsdag" Case PD + 26: HelligdagsNavn = "Ja" '"Store Bededag" Case PD + 39: HelligdagsNavn = "Ja" '"Kristi Himmelfartsdag" Case PD + 49: HelligdagsNavn = "Ja" '"Pinsedag" Case PD + 50: HelligdagsNavn = "Ja" '"2. Pinsedag" Case DateSerial(InputYear, 12, 24): HelligdagsNavn = "Ja" '"Julaftensdag" Case DateSerial(InputYear, 12, 25): HelligdagsNavn = "Ja" '"1.Juledag" Case DateSerial(InputYear, 12, 26): HelligdagsNavn = "Ja" '"2.Juledag" Case DateSerial(InputYear, 12, 31): HelligdagsNavn = "Ja" '"Nytårsaftensdag" Case Else HelligdagsNavn = "Nej" ' alle andre dage If Weekday(lngdate) = 7 Then HelligdagsNavn = "Nej" '"Lørdag" If Weekday(lngdate) = 1 Then HelligdagsNavn = "Ja" '"Søndag" End Select End Function
Function Påskedag(InputYear As Integer) As Long ' Returnerer datoen for Påskedag Dim d As Integer d = (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) + 21 Påskedag = DateSerial(InputYear, 3, 1) + d + (d > 48) + 6 - _ ((InputYear + InputYear \ 4 + d + (d > 48) + 1) Mod 7) End Function
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.