Avatar billede haastrup Novice
07. maj 2007 - 22:27 Der 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?

Kan det ikke klares i en god lang formel?

Et lille hovedbrud håber jeg :-)

Som belønning er der maksimum point.

Håber virkelig i kan hjælpe mig

Mange Hilsener
Haastrup
Avatar billede haastrup Novice
07. maj 2007 - 22:28 #1
den skal også kunne regne i kvarter, og man skal kunne sætte et hak eller et 1 tal eller andet, for at vise at der er taget en halv times pause
Avatar billede supertekst Ekspert
08. maj 2007 - 09:26 #2
Har du noget udkast til selve timesedlen?
Er det et ark pr. medarbejder?
Hvis flere, hvormange?

VBA vil nok være løsningen
Avatar billede haastrup Novice
08. maj 2007 - 16:20 #3
Hej Supertekst,

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...

Eller hvad?
Avatar billede supertekst Ekspert
08. maj 2007 - 17:01 #4
Hej Haastrup

For at starte med det sidste - ja - det kan godt komme til at kræve.... - men må vel kunne lade sig gøre.

SPØRGSMÅL:
Møde- & sluttid er det faste - f.eks. opdelt i skiftehold - eller er det flextid.

Hvem skal registrere møde- & sluttid?
Avatar billede kabbak Professor
08. maj 2007 - 18:49 #5
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
Avatar billede supertekst Ekspert
08. maj 2007 - 20:16 #6
Får følgende:

dato            start    slut    Timer    løn
08-05-07    12:00    11:00    23    3304,5
==============================================

Tarif:
06:00    14:00    7    108,3    758,1
14:00    21:00     7    137,75    964,25
21:00    05:00    8    180,55    1444,4
05:00    06:00    1    137,75    137,75
        23        3304,5
Avatar billede kabbak Professor
08. maj 2007 - 22:22 #7
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 ??
Avatar billede supertekst Ekspert
08. maj 2007 - 23:21 #8
Ja - det er total-lønnen for 23 timer - direkte taget fra regnearket..
Avatar billede kabbak Professor
08. maj 2007 - 23:32 #9
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 ??
Avatar billede supertekst Ekspert
08. maj 2007 - 23:35 #10
Det har haastrup ikke beskrevet - men pauser skal angivet med FraKl-TilKl - så skulle det ikke være noget problem - men vi må vel vente haastrup..
Avatar billede supertekst Ekspert
09. maj 2007 - 14:29 #11
Status p.t.:

dato    start    slut    Timer    løn       
08-05-07    12:00    11:00    23    3214,225       
Pause    21:05    21:35    -0,5           

Tarif:        Arb.tid    pause    Netto       
06:00    14:00    7        7    108,3    758,1
14:00    21:00    7        7    137,75    964,25
21:00    05:00    8    -0,5    7,5    180,55    1354,125
05:00    06:00    1        1    137,75    137,75
Total        23    -0,5    22,5        3214,225
Avatar billede haastrup Novice
10. maj 2007 - 21:26 #12
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?

Mvh
Haastrup
Avatar billede kabbak Professor
10. maj 2007 - 22:08 #13
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
Avatar billede supertekst Ekspert
10. maj 2007 - 23:26 #14
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
Avatar billede supertekst Ekspert
14. maj 2007 - 11:21 #15
Sker der mere eller ??
Avatar billede haastrup Novice
14. maj 2007 - 16:10 #16
hej kabbak og supertekst. JEg har lige været uden internet i weekenden, så derfor har jeg ikke kunnet kommentere på det vilde programmering i laver.

Da jeg ikke aner hvordan jeres ting skal startes op/indsættes i excel så skal jeg bruge lidt hjælp dér for at se hvordan det virker.

Supertekst, jeg sender dig en mail.

Kabbak, hvordan bruger jeg dit flote program?

Og lad mig så sige mange tusinde tak for jeres assistance, jeg er glad for at jeg ikke prøvede på det her selv, i excel ;-)

Mvh
Haastrup
Avatar billede haastrup Novice
16. maj 2007 - 09:08 #17
nå, jeg har ikke hørt fra nogen af jer endnu, men formoder at alt det i begge har lavet virker helt fint.

Jeg kan ikke give point hvis i ikke lige smider et svar, så, kan i ikke lige gøre det?
Avatar billede supertekst Ekspert
16. maj 2007 - 12:52 #18
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.
Avatar billede kabbak Professor
16. maj 2007 - 18:47 #19
Min kode sætter du ind i et modul

så kalder du den i en celle med
=Løn(A1;B1;C1)

hvis du har
starttid i A1
sluttid i B1
og et 1 tal i C1 for pause
Avatar billede kabbak Professor
16. maj 2007 - 18:48 #20
skulle være et svar ;-))
Avatar billede stoestoe1978 Nybegynder
05. juni 2007 - 21:15 #21
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
Avatar billede haastrup Novice
31. juli 2008 - 20:38 #22
Der bliver delt ligeligt ud af pointene. Tak for tiden i brugte på det, og beklager tiden det tog at få uddelt pointene
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester