Eerste maandag van de maand genereren mits in week 1 anders ......

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
901
Beste Helpmij'ers,

Ik ben op zoek naar een script in Excel (vba) die in Cel A1 van werkblad [Kastadm.] de datum genereert van de eerste maandag van het huidige jaar, mits deze zich in week 1 bevindt. Wanneer de eerste maandag zich echter in de tweede week van het huidige jaar bevindt, dan dient deze de datum te genereren van de laatste maandag van het vorige jaar. De code moet in actie komen wanneer cel A1 van werkblad [Kastadm.] leeg is.

Hopelijk dat iemand mij hiermee kan helpen, ik vind het in ieder geval een erg lastig probleem.

Alvast heel hartelijk dank.

Robert
 
Probeer eens of deze functie doet wat je wilt:
Code:
Function MaandagWeek1(sJaar As Integer) As Date
    Dim sDag As Long
    
    sDag = CLng(DateSerial(sJaar, "01", "01"))
    
    For i = sDag To sDag + 7
        If Weekday(i) = 2 And DatePart("ww", i, 2, 2) = 1 Then
            MaandagWeek1 = i
            Exit Function
        End If
    Next i
    
    For i = sDag To sDag - 7 Step -1
        If Weekday(i) = 2 Then
            MaandagWeek1 = i
            Exit Function
        End If
    Next i
End Function

Voorbeelden in document:
Bekijk bijlage Eerste maandag.xlsm

Aanroep volgens je voorwaarden:
Code:
=ALS(A1="";MaandagWeek1(JAAR(VANDAAG()));"")
 
Laatst bewerkt:
Het zal wel werken al heb ik het zelf nooit uitgeprobeerd, maar waarom zou je in een functie die getallen vraagt, twee teksten zetten?
PHP:
DateSerial(sJaar, "01", "01")
Of ga je straks beweren dat dat een betere datum oplevert dan
PHP:
DateSerial(sJaar, 1, 1)
?
 
Je hebt gelijk dat DateSerial integers als parameters vraagt maar zoals het er staat werkt het ook.
Verder beweer ik helemaal niks.
Ik probeer alleen TS te helpen.
 
Heel hartelijk dank voor de oplossingen. Helaas ben ik niet bekend met PHP-codes. Is hier iets van hoe ik dat kan implementeren in mijn excelbestand?
 
Er staan helemaal geen PHP codes, alleen VBA.
En alles zit al in het voorbeeld document.
 
Klopt, die gebruik ik nu ook en werkt super :thumb: Ik was alleen benieuwd wat voor techniek dit was wat ik wellicht ook zou kunnen gebruiken.

Wat ik mij nog afvroeg of ik die code zou kunnen gebruiken voor een andere willekeurige dag. Wanneer ik bijv. een dinsdag invoer geeft deze een fout: #NAAM.
 
Je hebt ook gevraagd om de maandag, daar heb ik de code voor gemaakt. Het simpelweg intikken van dinsdag levert uiteraard de fout #NAAM! op omdat die functie niet wordt gevonden.
 
Laatst bewerkt:
Klopt, ik ben ook geïnteresseerd in de maandag, ik vroeg dit omdat ik een handleiding aan het samenstellen ben met alle codes die ik tot dusver heb ontvangen, dit om te voorkomen dat ik hier ooit eenzelfde vraag ga stellen. Ik put dus eerst uit mijn eigen handleiding en zet dan pas de vraag uit als ik die hier ook niet kan vinden.
 
Als je de dinsdag wilt hebben kan je er simpel een dag bij optellen:
Code:
=ALS(A1="";MaandagWeek1(JAAR(VANDAAG()))[COLOR="#FF0000"]+1[/COLOR];"")
 
Betekent je vraag niet gewoon dat je het (onzinnnige) Amerikaanse systeem wil gebruiken ?

Dan volstaat de Excelformule:

PHP:
=DATE(YEAR(TODAY());1;1)-WEEKNUM(DATE(YEAR(TODAY());1;1);2)+1
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan