Avatar billede benneweis Juniormester
29. juni 2010 - 15:24 Der er 10 kommentarer og
1 løsning

Timeregnskab

Hej

Jeg er ved at forsøge at lave et excelark, som kan bruges til at holde styr på en række ansattes timer.

Jeg havde tænkt at man for hver dag kunne skrive en af følgende ud for hver ansat, antal timer,syg,ferie. Jeg skal på en eller anden måde have summeret for hele perioden antal timer, antal sygetimer og antal ferietimer.

hvis bare alle dage var ens kunne jeg fikse det med sumhvis. men arbejdstiden fredag er kortere end de andre.

Jeg har ugedagen på alle dagene, så der er en værdi der indikere at det er fredag.

Er der nogen der har en ide til hvordan jeg kan gøre dette.

Håber det giver mening.

På forhånd tak for hjælpen
/Benneweis
Avatar billede supertekst Ekspert
29. juni 2010 - 15:29 #1
Hvilken version af Excel?
Avatar billede benneweis Juniormester
29. juni 2010 - 15:35 #2
Det er excel 2007

/Benneweis
Avatar billede supertekst Ekspert
29. juni 2010 - 15:36 #3
Prøv med funktionen  =HVIS(ugedag="Fredag";6;8)

i den celle hvor timer skal beregnes. Ugedah er synonym for cellen med ugedag.
Timer er f.eks. 6 om fredagen ellers 8
Avatar billede benneweis Juniormester
29. juni 2010 - 15:48 #4
Det var ikke ved den enkelte dag jeg mente, der har jeg allerede en hvis funktion der gør at jeg automatisk får det antal timer der er standard hvis ikke andet er tastet ind.

Det jeg skal bruger til når hele perioden er gået (en måned) kan jeg summere så jeg får arbejdstimerne (nemt nok) også får jeg ferie- og sygetimer udfra at der ved de dage er skrevet henholdsvis syg og ferie i feltet.

Jeg kan sende mit foreløbige ark til dig hvis det måske kan hjælpe med at forklare hvad det er jeg mener.

/Benneweis
Avatar billede ae03 Novice
29. juni 2010 - 15:56 #5
Det kan klares med at indlejre den ene hvis-sætning i den anden.

=HVIS(ugedag = "mandag";8;hvis(ugedag = "tirsdag";8;...))

Det er ikke videre elegant, og du kan risikere at komme i konflikt med en begrænsning i det maksimale antal formeludtryk i en celle. Jeg ved ikke, hvad begrænsningen er på dette i 2007, men i 2003 ville det let give problemer, hvis der både skal tages hensyn til 5 eller 7 ugedage, til ferie og til syg. Det kommer an på dine præcise behov.
Avatar billede Slettet bruger
29. juni 2010 - 16:54 #6
Vil gerne forsøge at hjælpe, hvis du sender filen til (i udtale)
hanspunktumknudsensnabelamailpunktumtelepunktumdk
Avatar billede supertekst Ekspert
29. juni 2010 - 17:05 #7
Er også til disposition - @-adresse under profil
Avatar billede benneweis Juniormester
01. juli 2010 - 10:56 #8
Jeg har fået gode svar fra både dkhanknu og supertekst på mail.
Men hvad gør jeg nu for at tildele dem begge nogle fortjente point?

/Benneweis
Avatar billede supertekst Ekspert
01. juli 2010 - 12:57 #9
Du skal have svar fra hver og så kan du jo dele points..

Den tilsendte inspirationskode var følgende:

Const timeRæk = 9                                  'standard timer
Const startKol = "E"                                'vedr. datoer
Const slutKol = "BP"
Const startRæk = 10                                'vedr. medarbejderne
Const slutRæk = 13
Const fraværsTyper = "syg ferie"
Const offsetTimer = 1
Const offsetSyg = 2
Const offsetFerie = 3

Dim fraKol As Byte, tilKol As Byte
Dim ptCelle As String, ptRæk As Integer, ptKol As Integer, ptVærdi
Private Sub Worksheet_Change(ByVal target As Range)
Rem beregn numeriske værdi for start slutkolonner
    fraKol = beregnNumerisk(startKol)
    tilKol = beregnNumerisk(slutKol)
    target.Select
   
Rem opdater, hvis ændrede celle "vedr. fravær"
    opdaterFravær target
End Sub
Private Function beregnNumerisk(kolonne)
    Range(kolonne & "1").Select
    beregnNumerisk = ActiveCell.Column
End Function
Private Sub opdaterFravær(adr As Range)
Dim plads As Byte, plus As Byte, standardTimer As Byte, timer As Byte
    ptCelle = adr.Address
    ptRæk = adr.Row
    ptKol = adr.Column
    ptVærdi = adr.Value
   
    If ptRæk >= startRæk And ptRæk <= slutRæk And _
        ptKol >= fraKol And ptKol <= tilKol Then
            standardTimer = Cells(timeRæk, ptKol - 1)
       
            If erUdfyldtMedTal(ptVærdi) = True Then
                timer = ptVærdi
                plus = offsetTimer
            Else
                timer = standardTimer
               
                If ptVærdi <> "" Then
                    plads = InStr(fraværsTyper, LCase(ptVærdi))
               
                    If plads = 1 Then
                        plus = offsetSyg
                    Else
                        If plads = 5 Then
                            plus = offsetFerie
                        Else
                            MsgBox ("Fraværstype kendes ikke")
                            regTimer = 0
                            Exit Sub
                        End If
                    End If
                End If
            End If
            Cells(ptRæk, tilKol + plus) = Cells(ptRæk, tilKol + plus) + timer
    End If
End Sub
Private Function erUdfyldtMedTal(værdi)
    If IsNumeric(værdi) = True And værdi <> "" Then
        erUdfyldtMedTal = True
    Else
        erUdfyldtMedTal = False
    End If
End Function
Avatar billede Slettet bruger
02. juli 2010 - 07:26 #10
Giv bare point til Supertekst - han har jo sendt et svar.
Hans
Avatar billede xjpjx Nybegynder
23. november 2013 - 11:10 #11
Hej

Kik engang på denne www.firmaplan.dk
tror den ville kunne være til stor hjælp,
for dig.

mvh jan jensen
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