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

Hulp bij isoweek

Status
Niet open voor verdere reacties.

CrashPuppy

Gebruiker
Lid geworden
28 feb 2006
Berichten
399
Wie weet een simpele formule?

Wanneer ik in Cel A1 een jaar ingeeft b.v. 2009 dat dan in Cel A3 de datum komt te staan waarmee de 1e (isoweek) van het jaar 2009 op maandag begint. De uitkomst zou moeten zijn maandag 29-12-2008

Wie helpt me een eindje op weg.

Crashpuppy
 
Laatst bewerkt:
De exacte formule is volgens mij nog afhankelijk van een instelling in Windows en/of Excel ook. Maar het volgende werkt. Je kunt het in 1 formule combineren maar dit legt makkelijker uit.

Stel A1 is het jaartal
Dan zet je in A2 =weekday(date(A1,1,1))

Daar komt bij mij 5 uit (=donderdag)
Nu wil je weten wat de maandag (dag 2) daarvoor is.

Dus in A3 zet je dan =date(A1,1,1)-A2+2
Antwoord is 29/12/2008

In 1 formule wordt het dan: date(A1,1,1)-weekday(date(A1,1,1))+2

Nog ff de help van Excel2000 erbij:
WEEKDAY(serial_number,return_type)

Serial_number is a sequential number that represents the date of the day you are trying to find. Dates may be entered as text strings within quotation marks (for example, "1/30/1998" or "1998/01/30"), as serial numbers (for example, 35825, which represents January 30, 1998, if you're using the 1900 date system), or as results of other formulas or functions (for example, DATEVALUE("1/30/1998")). For more information about how Microsoft Excel uses serial numbers for dates, see the Remarks section.

Return_type is a number that determines the type of return value.

Return_type Number returned
1 or omitted Numbers 1 (Sunday) through 7 (Saturday). Behaves like previous versions of Microsoft Excel.
2 Numbers 1 (Monday) through 7 (Sunday).
3 Numbers 0 (Monday) through 6 (Sunday).
 
Laatst bewerkt:
Hoi folks,

Onderstaande code had ik al, maar er meer spelen tot ik het gewenste resultaat heb is een ander verhaal.
Ik ben niet zo'n VBA bakker.

Public Function ISOWeekNummer(datum As Date) As Integer
Dim Jaar As Integer, JaarNummer As Integer
Dim VorigJaarStart As Date, JaarStart As Date, VolgendJaarStart As Date

Jaar = Year(datum) 'Pak het jaar van de opgegeven datum
JaarStart = BeginJaar(Jaar) 'Eerste maandag van het jaar
VorigJaarStart = BeginJaar(Jaar - 1) 'Eerste maandag van het vorige jaar
VolgendJaarStart = BeginJaar(Jaar + 1) 'Eerste maandag van het volgende jaar

Select Case datum 'Controleer de datum
Case Is >= VolgendJaarStart
ISOWeekNummer = ((datum - VolgendJaarStart) \ 7) + 1
JaarNummer = Year(datum) + 1
Case Is < JaarStart
ISOWeekNummer = ((datum - VorigJaarStart) \ 7) + 1
JaarNummer = Year(datum) - 1
Case Else
ISOWeekNummer = ((datum - JaarStart) \ 7) + 1
JaarNummer = Year(datum)
End Select
End Function

'Deze functie geeft de eerste maandag van het opgegeven jaar terug.

Function BeginJaar(Jaar As Integer) As Date
Dim Weekdag As Integer, NieuwJaar As Date

NieuwJaar = DateSerial(Jaar, 1, 1)
Weekdag = ((NieuwJaar - 2) Mod 7)

If Weekdag < 4 Then
BeginJaar = NieuwJaar - Weekdag
Else
BeginJaar = NieuwJaar - Weekdag + 7
End If
End Function



Wie ?
 
Beste mensen,

Middels het gebruik van bovenstaande code (toevoegen als module binnen werkmap)
een aanroepen met =isoweeknummer(A1) heb ik een tabel gegenereerd tot het jaar 2031.
Wat ik wilde heb ik bereik.

Thnks
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan