28. juli 2002 - 10:34Der er
19 kommentarer og 1 løsning
Vi prøver igen - lønberegning
Jeg forsøger at lave et lille program, hvor jeg kan indtaste min arbejdstid. Programmet skal så udregne hvor mange timer jeg har indenfor én bestemt periode.
Eks:
Jeg arbejder fra lørdag kl. 2100 til søndag kl. 0700.
Jeg får nattillæg fra kl. 1800 - 0600. Jeg får lørdagstillæg fra lørdag kl. 1500 - 0000. Jeg får søndagstillæg fra søndag kl. 0000 - 0000.
Dvs.
I ovennævnte tidsrum har jeg altså: 9 timer med nattillæg. 3 timer med lørdagstillæg. 7 timer med søndagstillæg.
Hvordan får jeg excel til at regne det ud?
Mit problem er at "trække" tidsrummene med tillæg ud af den indtastede arbejdstid.
De øvrige udregninger mener jeg, at jeg har nogenlunde styr på!??????????????????
-----------
Jeg kan godt regne ud hvor lang tid jeg har været på arbejde.Mit problem er at lave en udregning, så jeg ikke behøver at indtaste hvor mange timer jeg har under hver kategori (tillæg).
Jeg vil lave det sådan, at jeg kun behøver at indtaste start- og sluttidspunkt.
To simple eksempler:
Jeg indtaster, at jeg er på arbejde fra kl. 1600 - 0000. Jeg får nattillæg fra kl. 1800 - 0600. Excel skal fortælle mig, at jeg får nattillæg i 6 ud af de 8 timer.
Jeg indtaster, at jeg er på arbejde fra kl. 0500 - 1300. Samme tidsrum for nattillæg. Excel skal fortælle mig, at jeg får nattillæg i 1 time.
Kan det overhovedet lade sig gøre, eller er man nødt til at indtaste hvor mange timer man er på arbejde indenfor hver periode?
Du kan naturligvis godt beregne tiderne automatisk. Lav din egen funktion i VBA, eks sådan her hvor jeg har laver en funktion der beregner dine timer med søndagstillæg:
Public Function CalcSun(FraTid As Date, TilTid As Date) As Single Dim Hours As Single, Sunday As Single If TilTid <= FraTid Then GoTo CalcError Hours = (TilTid - FraTid) * 24 If Hours > 24 Then GoTo CalcError If Weekday(FraTid, vbMonday) = 7 Then If Weekday(TilTid, vbMonday) = 7 Then Sunday = (TilTid - FraTid) * 24 Else Sunday = 24 - DecTime(FraTid) End If ElseIf Weekday(FraTid, vbMonday) = 6 Then If Weekday(TilTid, vbMonday) = 7 Then Sunday = DecTime(TilTid) End If End If CalcSun = Sunday Exit Function CalcError: MsgBox "fejl i Input" End Function
Function DecTime(Tidspunkt As Date) As Single Dim t As Integer, m As Integer t = Hour(Tidspunkt) m = Minute(Tidspunkt) DecTime = t + m / 60 End Function
Funktionen indsættes i et modulark, og kaldes fra en excel celle med formlen: =Calcsun(A2;B2) hvor a2 er fratid og b2 er tiltid. Tiderne skal registreres som dato/tid.
Det samme skal i princippes gøres for lørdagstillæg og nattillæg, men du forstår sikkert pointen.
Jan: Jeg har følgende problemer: Hvis jeg indtaster én vagt over to dage, så kan jeg ikke indtaste den efterfølgende dag.
Derudover vil den ikke beregne de timer der ligger efter midnat.
eks.
2200-0600 den 01-07-02. Indtastes som: 22:00 - 24:00 den 01-07-02 og 00:00 - 06:00 den 02-07-02.
Så er den 02-07-02 jo "brugt", og jeg kan ikke indtaste at jeg skal møde igen kl. 2200 den 02-07-02.
Desuden beregnes timerne fra 0000-0600 ikke som nattimer.
Ellers kan du jo prøve med følgende vagter for at se, om du kan få det til at virke: 010702: 22-06 020702: 22-06 030702: 20-08 040702: fri 050702: 14-22 060702: 13-23 070702: 16-01
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.