07. maj 2007 - 22:27Der er
20 kommentarer og 2 løsninger
Et timeregnskab, med forskellige lønsatser alt efter arbejdstid
Hej Eksperter,
Ja, man burde vel egentlig få fat i et lønsystem, men excel er jo så fedt at arbejde med, og kan så mange ting, så kan den ikke også følgende:
Et timeregnskab hvor der kun skal indtastes starttid og sluttid, og hvor regnearket så regner lønnen ud. Tiderne skal bare indtastes simpelt, dag for dag, og så skal lønnen udregnes.
Feks. i rækker med 31/30 alt efter måned (a 28/29 for lige at få februar med). Datoen kan skrives i kolonne a, starttid i b, og sluttid i c, og så skal lønnen stå i kolonne d (medmindre der SKAL være nogle mellemregninger med som ikke kan "samles" i een formel.
Har selv prøvet at lave det med HVIS, mn jeg behersker ikke excel nok til at kunne "flette" HVIS'er sammen.
Et timeregnskab hvor der gælder følgende:
Fra 21-05 er timelønnen:180,55 kr fra 05-06 er timelønnen:137,75 kr fra 06-14 er timelønnen:108,30 kr fra 14-21 er timelønnen:137,75 kr
KAn det ikke lade sig gøre at lave i excel, istedet for at man skal ud i en hulens masse mellemregninger for at lægge sammen til sidst?
Det skal være et ark per medarbejder, men jeg forestiller mig at det er copy/paste.
Layout mæssigt har jeg ikke de store krav. Min forestilling var stille og roligt at lave en kolonne a med datoen 1-31. Så i kolonne b kunne der eks. stå "mødetid" og kolonne c kan være "sluttid".
I kolonne d håber jeg så at man kan udregne lønnen, alt efter arbejdstiden og antallet af timer.
Meget simpelt, bare til at starte med, så kan man jo altid lave små ting om. Men det er bare selve funktionaliteten jeg søger, bare selve den (de) formel som kan udregne lønnnen, afhængig af hvornår folk møder.
Men jeg kan godt se at det nok kommer til at kræve lidt mere end et regnark, hvis det skal klares i een ombæring...
Jeg har været ved at teste denne, men der ryger lidt fra i decimaler( tror jeg), jeg mangler 3,0092 kr, ved et arbejde på 23 timer fra 12:00 til 11:00, er der en der kan finde dem ??
Public Function Løn(Start As Date, Slut As Date) Dim I As Date, Gage As Currency Dim A As Currency, B As Currency, C As Currency, D As Currency ' timelønnen er divideret med 60, så får man minut lønnen A = 180.55 / 60 'Fra 21-05 er timelønnen:180,55 kr B = 137.75 / 60 'fra 05-06 er timelønnen:137,75 kr C = 108.3 / 60 'fra 06-14 er timelønnen:108,30 kr D = 137.75 / 60 'fra 14-21 er timelønnen:137,75 kr
If Slut < Start Then Slut = (Slut + 1) End If For I = (Start + #12:01:00 AM#) To Slut Step #12:01:00 AM# Select Case I ' efter midnat Case Is >= #9:01:00 PM# + 1: Gage = Gage + A Case Is >= #2:01:00 PM# + 1: Gage = Gage + D Case Is >= #6:01:00 AM# + 1: Gage = Gage + C Case Is >= #5:01:00 AM# + 1: Gage = Gage + B ' før midnat Case Is >= #9:01:00 PM#: Gage = Gage + A Case Is >= #2:01:00 PM#: Gage = Gage + D Case Is >= #6:01:00 AM#: Gage = Gage + C Case Is >= #5:01:00 AM#: Gage = Gage + B End Select Next Løn = Gage End Function
det sidste tal 23 3304,5 er det på de 23 timer, fra 12:00 til 11:00, det ser rigtig ud mit var 3 kr og 0092 ører mindre, er det min pc der ikke kan regne ??
Så ser den jo rigtig ud. Det med pausen, ved jeg ikke hvordan man regner ud, Pausen kan jo holdes i forskellige tariffer, men hvilken, er den den til høj løn eller den billigste ??
Wow, i er for vilde, jeg er da blevet hægtet rimeligt godt af.
For at svare på jeres spørgsmål så:
Ja, mødetiderne er skiftende. Folk møder ind for at lave deres eget projekt. Så det kan være i alle segmenterne. Det er "chefen" der registrere start- og sluttid
Pausen bliver holdt i perioden mellem 6-14, så kan i lave en funktion der bare trækker en halv time fra det segment når "pauseboksen" bliver aktiveret vil det være super.
Nu ved jeg ikke helt hvordan det i er i gang med kommer til at køre, er vi stadig i regneark eller hvad? Men kan kan lave en "måneds" oversigt, lidt ligesom fanerne i et excel regneark ville være, altså samme funktionalitet?
Det vildeste er at når i bare såden ruller det ud af ærmet ser det jo pærelet ud, eller hvad, I er måske bare for gode?
Så skulle den også klare pausen Pause er en celle der skal indeholde et 1 tal for afholdt pause, alt andet tal giver ikke pause
Public Function Løn(Start As Date, Slut As Date, Pause As Integer) Dim I As Date, Gage As Currency Dim A As Currency, B As Currency, C As Currency, D As Currency ' timelønnen er divideret med 60, så får man minut lønnen A = 180.55 / 60 'Fra 21-05 er timelønnen:180,55 kr B = 137.75 / 60 'fra 05-06 er timelønnen:137,75 kr C = 108.3 / 60 'fra 06-14 er timelønnen:108,30 kr D = 137.75 / 60 'fra 14-21 er timelønnen:137,75 kr If Slut < Start Then Slut = (Slut + 1) End If For I = (Start + #12:01:00 AM#) To Slut Step #12:01:00 AM# Select Case I ' efter midnat Case Is >= #9:01:00 PM# + 1: Gage = Gage + A Case Is >= #2:01:00 PM# + 1: Gage = Gage + D Case Is >= #6:01:00 AM# + 1: Gage = Gage + C Case Is >= #5:01:00 AM# + 1: Gage = Gage + B ' før midnat Case Is >= #9:01:00 PM#: Gage = Gage + A Case Is >= #2:01:00 PM#: Gage = Gage + D Case Is >= #6:01:00 AM#: Gage = Gage + C Case Is >= #5:01:00 AM#: Gage = Gage + B End Select Next If Pause = 1 Then Gage = Gage - C * 30 Løn = Gage End Function
Registreres arbejdstiden dagligt? På hvilket grundlag?
Har eksperimenteret med indtastning via en Userform, der således kan opdatere den enkelte medarbejders ark på samme dag eller et separat ark, hvor alle medarbejdere er opført - overførsel til den enkelte medarbejder
Der er mange muligheder - som vel også afhænger af, hvad slutprodukterne af registreringen skal anvendes til.
Min kode ser p.t. således ud som nedenfor - idet der på Ark1 også ligger data om de forskellige tariffer - som vist i en tidligere indlæg - således at disse kan ændres direkte i arket - og samtidigt vises de enkelte fordelingen af lønberegningen.
Hvis du er interesseret - så send en mail til pb@supertekst-it.dk så returnere jeg den foreløbige model. ------------------------------------------------------------------- Dim tFra As Variant Dim tTil As Variant Dim tLøn As Variant Dim dato As Date, taberlDato As Date, stKl As Date, slKl As Date Dim stPause As Date, slPause As Date
Dim kl1 As Date, kl2 As Date, xTim As Date, rest As Date Sub beregnLøn() Rem Nulstilling - mangler p.t.
Rem Arbejdsdato dato = Cells(2, 1) tabeldato = dato
Rem Arbejdstid stKl = dato + Cells(2, 2) slKl = dato + Cells(2, 3)
If slKl < stKl Then slKl = DateAdd("d", 1, slKl) End If Cells(2, 4) = decimalKonverter(slKl - stKl)
beregnFordeling stKl, slKl, 3, 1
Rem Pause stPause = dato + Cells(3, 2) slPause = dato + Cells(3, 3)
If slPause < stPause Then slPause = DateAdd("d", 1, slPause) End If Cells(3, 4) = (decimalKonverter(slPause - stPause)) * -1
beregnFordeling stPause, slPause, 4, -1
End Sub Private Sub beregnFordeling(stKl, slKl, kolonne, faktor)
rest = "00:01"
While rest > 0 For r = 11 To 14 kl1 = tabeldato + Cells(r, 1) kl2 = tabeldato + Cells(r, 2)
Rem modificer, hvis slutKl i interval er mindre end startKL If kl2 < kl1 Then kl2 = DateAdd("d", 1, kl2) tabeldato = DateAdd("d", 1, tabeldato) End If
Rem find start-interval If stKl >= kl1 And stKl <= kl2 Then If slKl < kl2 Then xTim = slKl - stKl rest = 0 Else xTim = kl2 - stKl rest = slKl - kl2 stKl = kl2 End If Cells(r, kolonne) = (Cells(r, kolonne) + decimalKonverter(xTim)) * faktor End If Next r Wend End Sub Private Function decimalKonverter(tt As Date) sttime = Hour(tt) stmin = Minute(tt) decimalKonverter = sttime + ((stmin / 60) * 100) / 100 End Function
Du får et svar - er næsten færdig med en version, som jeg nævner i kommentaren af 10/5 - 23:26 - prøvebilleder vil sendt - hvis du er interesseret - indtastning i "Userform" - overførsel til den enkelte medarbejder.
hej kabbak jeg kunne godt tænke mig og se hvordan det virker og hvad er det for et modul man skal lige det ind i jeg vil gerne have en mail hvor jeg måske kunne download en prøve side eller sådan noget min e-mail er stofferschmidt@hotmail.com
Der bliver delt ligeligt ud af pointene. Tak for tiden i brugte på det, og beklager tiden det tog at få uddelt pointene
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.