Finns det nån som har en smart lösning på nedanstående: Hej Jag har funderat lite och tror att detta kan fungera... men lite testning skadar ju inte :) Okej, fint jobbat!!! Nu har jag inte lagt ner någon tid på att göra denna funktionen så kort som möjligt, så det går säkert att förkorta, men det får du göra själv! ;) Lysande!Datumräkning
Function CalcObservations(Date1 ,Date2) as long
'Functionen ska retunera antalet dagar mellan datumen.
'Lördag och söndag ska inte räknas med
'Detta ska göras utan att man går genom datum för datum
end function
/JensaKSv: Datumräkning
Klart att det går att fixa !
Tar jag som en utmaning , kommer att presentera ett förslag.
mvh
SvenSv: Datumräkning
<code>
Function CalcObservations(Date1 As Date, Date2 As Date) As Long
Dim intNumWeeks As Integer
Dim intNumDays As Integer
intNumDays = DateDiff("d", Date1, Date2)
intNumWeeks = (intNumDays - (intNumDays Mod 7)) / 7
intNumDays = intNumDays Mod 7
Select Case Weekday(Date1, vbMonday) + intNumDays
Case Is < 6
CalcObservations = intNumWeeks * 5 + intNumDays
Case 6
CalcObservations = intNumWeeks * 5 + intNumDays - 1
Case Is > 6
CalcObservations = intNumWeeks * 5 + intNumDays - 2
End Select
End Function
</code>
/JohanSv: Datumräkning
Men nu en lite svårare grej:
Function CalcDate(StartDate as date , lObservations) as Date
'Functionen ska räkna ut datum för sista observationen.
'Lördag och söndag räknas inte in i observationerna
'Detta ska igen göras utan att man går genom datum för datum
end function
Den som skriver detta med kortaste koden vinner en guldstjärna :)
/JensaKSv: Datumräkning
<code>
Function CalcDate(StartDate As Date, lObservations) As Date
Dim intNumWeeks As Integer, intNumDays As Integer, intNumDaysTot As Integer
intNumWeeks = (lObservations - (lObservations Mod 5)) / 5
intNumDays = lObservations Mod 5
If Weekday(StartDate, vbMonday) + intNumDays > 5 Then
intNumDaysTot = intNumWeeks * 7 + intNumDays + 2
Else
intNumDaysTot = intNumWeeks * 7 + intNumDays
End If
CalcDate = DateAdd("d", intNumDaysTot, StartDate)
End Function
</code>
/JohanSv: Datumräkning
Startdatumet ska också räknas in
Dateadd blir alltså : intNumDaysTot - 1
/JensaK