30. juli 2009 - 16:16Der er
6 kommentarer og 1 løsning
Dato-regner i excel ark
Jeg laver et budgetark til mine ansatte, hvor de kan følge deres løn, deres salgsresultater o.l. i hver lønperiode (fra 16. i hver måned til 15. i den efterfølgende måned). Jeg vil gerne lave en beregner til dem, som fortæller hvor meget de skal sælge/opnå pr. dag i forhold til de resterende dage i lønperioden. De noterer deres resultater hver dag, og jeg kunne godt tænke mig, at excel kan fortælle dem, hvor mange(arbejds)dage, der er tilbage ud fra enten et datofelt eller ved at modregne de datoer, hvor der er registreret enten aktivitet i, eller hvor de i hvert fald er overstået. Kan det lade sig gøre, og eventuelt hvordan?
Hvis den ligeledes kan udregne automatisk, hvor mange arbejdsdage der er i de forskellige lønperioder (12 / år), ville det være fantastisk.
Det skal siges arbejdsdage kun er mandag-fredag. Lørdag og søndag medregnes ikke.
Det er jo nok lidt svært at se hvordan du har opbygget dit regneark ud fra de oplysninger, men her er en glimrende artikel om Dato- og tidsberegninger i Excel: http://www.eksperten.dk/guide/681
Her er en funktion som giver dig et væld af muligheder for at tælle data
Public Function TÆLDAGE(StartDato As Long, SlutDato As Long, Optional Tæl As Byte) As Long
Dim AntalDage As Long ' Antal Dage I alt (Default) Dim MAN As Long ' Mandage Dim TIR As Long ' Tirsdage Dim ONS As Long ' Onsdage Dim TOR As Long ' Torsdage Dim FRE As Long ' Fredag Dim LØR As Long ' Lørdage Dim SØN As Long ' Søndage Dim Fridage As Long ' Helligdage + Lørdage Dim HelligDage As Long ' Alle årets helligdage, inkl. søndage Dim Dato As Long ' Den aktuelle arbejdsdato
If StartDato < 1 Then StartDato = 1 If SlutDato < 1 Then SlutDato = Date
AntalDage = SlutDato If StartDato > SlutDato Then SlutDato = StartDato StartDato = AntalDage End If
For Dato = StartDato To SlutDato If Weekday(Dato, vbMonday) = 1 Then MAN = MAN + 1 If Weekday(Dato, vbMonday) = 2 Then TIR = TIR + 1 If Weekday(Dato, vbMonday) = 3 Then ONS = ONS + 1 If Weekday(Dato, vbMonday) = 4 Then TOR = TOR + 1 If Weekday(Dato, vbMonday) = 5 Then FRE = FRE + 1 If Weekday(Dato, vbMonday) = 6 Then LØR = LØR + 1 If Weekday(Dato, vbMonday) = 7 Then SØN = SØN + 1
If HELLIGDAG(Dato) <> "" Then HelligDage = HelligDage + 1 If Weekday(Dato, vbMonday) = 6 Then Fridage = Fridage - 1 End If Next
Fridage = Fridage + LØR + HelligDage
If Tæl = 1 Then TÆLDAGE = MAN If Tæl = 2 Then TÆLDAGE = TIR If Tæl = 3 Then TÆLDAGE = ONS If Tæl = 4 Then TÆLDAGE = TOR If Tæl = 5 Then TÆLDAGE = FRE If Tæl = 6 Then TÆLDAGE = LØR If Tæl = 7 Then TÆLDAGE = SØN If Tæl = 8 Then TÆLDAGE = LØR + SØN If Tæl = 9 Then TÆLDAGE = HelligDage If Tæl = 10 Then TÆLDAGE = Fridage If Tæl = 11 Then TÆLDAGE = AntalDage - Fridage
If Tæl = 12 Then TÆLDAGE = DateDiff("m", StartDato, SlutDato + 1, vbUseSystemDayOfWeek, vbUseSystem) If Tæl = 13 Then TÆLDAGE = DateDiff("ww", StartDato, SlutDato + 1, vbUseSystemDayOfWeek, vbUseSystem) If Tæl = 14 Then TÆLDAGE = DateDiff("yyyy", StartDato, SlutDato + 1, vbUseSystemDayOfWeek, vbUseSystem)
Tak for hjælpen. Jeg har nu fået løst min udfordring. Det blev ved hjælp af dato() funktion og den funktion, "vejmand" henviste til (antal.arbejdsdage) Tak for hurtig og konstruktiv feedback.
Velbekomme, bare for en anden gangs skyld: Husk at sende egne indlæg som "Kommentar" og ikke som "Svar". "Svar" er tiltænkt løsningen, så der kan tildeles point som tak for hjælpen. :-)
Så var det derfor, jeg ikke kunne give dig point :( Sorry, men det er min første gang her, så har ikke helt styr på det. Kan jeg ikke give dig pointene på en anden måde?
Jo, du kan oprette et spørgsmål med titlen: Point til vejmand Og i brødteksten linker du hertil, så der er synligt hvorfor du overfører point til mig. :-)
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.