• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

M.b.v. Weeknummer en Jaartal naar Datum?

Status
Niet open voor verdere reacties.

MayNiak666

Gebruiker
Lid geworden
6 jan 2003
Berichten
234
Stel:
Ik heb in cel B1 een jaartal staan en in cel B6 een weeknummer. Hoe krijg ik dan in cel A8 de datum van de maandag van die week?
 
De tip van Wigi volgend heb ik niet gevonden dat weeknummer een datum kan teruggeven. Ik vermoed daarom dat het een hulptabel moet gaan worden, waar met verikaal zoeken de juiste datum wordt gevonden, een oplossing die ook hier wordt besproken: http://www.helpmij.nl/forum/showthread.php?t=277205

Groet,
 
Rob

Het was niet de bedoeling om direct een oplossing aan te leveren, wel te wijzen op moeilijkheden met dit soort problemen. Als ik zoiets moet oplossen ga ik altijd eerst daar lezen.

Bedankt voor het opzoekwerk dat je verrichte.

Wigi
 
Zonder hulptabelletje:
=DATUM(B1;1;1)-REST(DATUM(B1;1;1)-2;7)+ALS(MAAND(DATUM(B1;1;1)-REST(DATUM(B1;1;1)-2;7))=12;7;0)+((B6-1)*7)
 
anders

Ik heb het iets anders gedaan, maar wel met behulp van Pearson. ziehier:


Code:
Public Function ISOWeekNum(AnyDate As Date, _
     Optional WhichFormat As Variant) As Integer

'Returns the ISO-standard weeknumber of any given date
'
' WhichFormat: missing or <> 2 then returns week number,
'              = 2 then YYWW
'
Dim ThisYear As Integer
Dim PreviousYearStart As Date
Dim ThisYearStart As Date
Dim NextYearStart As Date
Dim YearNum As Integer

ThisYear = Year(AnyDate)
ThisYearStart = YearStart(ThisYear)
PreviousYearStart = YearStart(ThisYear - 1)
NextYearStart = YearStart(ThisYear + 1)
Select Case AnyDate
    Case Is >= NextYearStart
        ISOWeekNum = (AnyDate - NextYearStart) \ 7 + 1
        YearNum = Year(AnyDate) + 1
    Case Is < ThisYearStart
        ISOWeekNum = (AnyDate - PreviousYearStart) \ 7 + 1
        YearNum = Year(AnyDate) - 1
    Case Else
        ISOWeekNum = (AnyDate - ThisYearStart) \ 7 + 1
        YearNum = Year(AnyDate)
End Select

If IsMissing(WhichFormat) Then
    Exit Function
End If
If WhichFormat = 2 Then
    ISOWeekNum = CInt(Format(Right(YearNum, 2), "00") & _
    Format(ISOWeekNum, "00"))
End If

End Function


Function YearStart(WhichYear As Integer) As Date

'returns the first monday of a given year

Dim WeekDay As Integer
Dim NewYear As Date

NewYear = DateSerial(WhichYear, 1, 1)
WeekDay = (NewYear - 2) Mod 7
If WeekDay < 4 Then
    YearStart = NewYear - WeekDay
Else
    YearStart = NewYear - WeekDay + 7
End If

End Function

Function DatumWkYr(WelkJaar As Integer, WelkeWeek As Integer) As Date

'geeft de datum van de maandag van de gegeven week in het gegeven jaar
Dim FirstMonday As Date


FirstMonday = YearStart(WelkJaar)
WeekFirstMonday = ISOWeekNum(FirstMonday)

DatumWkYr = ((WelkeWeek - WeekFirstMonday) * 7) + FirstMonday

End Function

Hierdoor kan ik in een cel de formule DatumWkYr(B1,B6) plaatsen en daar keurig netjes de datum van de maandag van de week terugvinden. Alles op basis van de ISO-weeknummering, uiteraard. :thumb:
 
Laatst bewerkt:
Bedankt om je oplossing te melden. Zal zeker van pas komen voor voorbijgangers hier op het forum.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan