Dagomzetten in een matrix

Status
Niet open voor verdere reacties.
@Leo

Wat dacht je van de codemodule van Blad1 ?

Als je hem in een macromodule wil zetten doe je er verstandig aan naar het werkblad te verwijzen (wat jij ten onrechte nalaat in jouw code):

Code:
Sub M_snb()
    ReDim sn(53, 1 To 7)
    
    For j = 1 To 12
      y = DateSerial(Blad1.Cells(3, 12), j, 1)
      sn(IIf(j = 1 And Application.WeekNum(y, 21) > 2, 0, Application.WeekNum(y, 21)), Weekday(y, 2)) = Format(y, "d mmmm")
    Next

    Blad1.Cells(2, 2).Resize(UBound(sn)+1, UBound(sn, 2)) = sn
End Sub

Of voor nog iets geavanceerder zie de bijlage.
 

Bijlagen

Laatst bewerkt:
matrix met dagomzetten

Leo,

Ik ga deze laatste gebruiken. Prachtig man.
Je heb er ondertussen heel veel tijd aan besteed.

Nogmaals bedankt voor alle moeite!

snb,
Met verbazing gekeken naar jou bijdrage , ik ga eens kijken of ik hem helemaal begrijp en of ik er wat mee ga doen.
Al met al heb ik van dit probleem veel geleerd.

Vriendelijke groet, Jaap
 
@ SNB

krijg het niet werkend, versie 2007 kent geen iso weeknummers :confused:

maar het concept is begrepen, je bekomt de gegevens die je nodig hebt
zonder tijdelijke gegevens te plaatsen in je werkblad en dat is altijd beter natuurlijk.
Dank daarvoor


mvg

Leo
 
voor lagere versies dan 2010
zijn deze aanpassingen, 1 van de mogelijkheden


mvg
Leo
 

Bijlagen

Voor versies < Excel 2010 lossen we dat op met:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$J$1" Then
        ReDim sn(53, 1 To 7)
    
        For j = 1 To 12
            y = DateSerial(Target, j, 1)
            sn(IIf(j = 1 And DatePart("ww", y, 2, 2) > 2, 0, DatePart("ww", y, 2, 2)), Weekday(y, 2)) = Format(y, "d mmmm")
        Next

        Cells(2, 2).Resize(UBound(sn) + 1, UBound(sn, 2)) = sn
    End If
End Sub

NB.met deze formule gaat het 1 keer in de 400 jaar mis.
 

Bijlagen

Laatst bewerkt:
Dag Jaap,

bij deze de versie met code van SNB om de maanden te plaatsen in matrix
met kleine aanpassing van mij om ze te kleuren en 1 jan. van volgend jaar te plaatsen.
de maandformules overgenomen van vorige versie.
Dus in deze worden geen cellen tijdelijk gebruikt, altijd beter :D met dank aan SNB

mvg

Leo
 

Bijlagen

Van de omzet berekenig zou ik een UDF maken

de omzet van januari
=F_snb(1)

van februari
=F_snb(2)

de UDF

Code:
Function F_snb(m)
   sn = Range("B2:H55")
   
   y = DateSerial([J1], 1, 1)
   y = y - 7 * IIf(DatePart("ww", y, 2, 2) > 2, 0, DatePart("ww", y, 2, 2)) - Weekday(y, 2)
   
   For j = 1 To 7 * 54
     If Format(y + j - 1, "yyyymm") = [J1] & Format(m, "00") Then p = p + Val(sn((j - 1) \ 7 + 1, (j - 1) Mod 7 + 1))
   Next
   
   F_snb = p
End Function
 
@ SNB

zeker de moeite, zoveel korter ! tijd om mij een boek aan te schaffen.

mvg
Leo
 
@Leotaxi

Dat is immer een goed idee !
Je zult er echter niet dit soort codes in aantreffen.
 
Je zult er echter niet dit soort codes in aantreffen.
Tenzij je alle boeken die ooit zijn uitgegeven hebt gelezen, lijkt mij dat een stelling die je moeilijk hard kunt maken :D.
 
Zolang jij hem niet kunt weerleggen is ie waar. ;)

Ik ben niet zo onder de indruk van de voorbeeldcodes in VBA-boeken met de grootste pretenties.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan