Dagomzetten in een matrix

Status
Niet open voor verdere reacties.

Oude leerling

Gebruiker
Lid geworden
30 aug 2010
Berichten
566
Het lijkt mij een mega probleem maar misschien toch nog wel door een macro te realiseren.

In de bijlage ziet u een matrix waar de dagomzetten ingevuld worden en waaruit ik de maandomzetten wil distilleren.
Hier omschrijf ik het probleem ook verderBekijk bijlage Matrix Dagomzetten.xlsx

Vriendelijke groet ,
Jaap
 
Laatst bewerkt:
Ik zou het inderdaad met een macro oplossen, want omdat je geen datums gebruikt, maak je het jezelf wel heel erg lastig. Waarom niet gewoon een tabel gemaakt met daarin een datum en een dagomzet waarbij je de dag en het weeknummer berekent, en daar dan een draaitabel van maken? Veruit de simpelste oplossing.
 

Bijlagen

matrix met dagomzetten

Bedankt voor u reactie.
Wat u voorstelt kan natuurlijk ook.
Maar kunt u me toch niet verder helpen met een oplossing met een macro.

Deze zou volgens mij maar 2 dingen moeten doen.

a) Bij een nieuw jaar op de juiste plaats in de matrix weer de gele cellen met 1 Jan.--1 Feb.--enz. plaatsen

b) In de tabel met de Maandomzetten dan weer de juiste SOM-formule maken.

Vriendelijke groet , Jaap
 
Ik snap je werkwijze niet helemaal. Je wilt in de kolommen B:H de betreffende eerste dag van de maand hebben indien van toepassing, maar wat doe je dan met de omzet op de betreffend dag? Daar heb je dan geen cel voor. Of moet die dan worden overschreven? Dan weet je niet meer wat de eerste dag van de maand is. Erg onlogisch allemaal.
Overigens kan het best geprogrammeerd worden, maar dan wel graag een voorbeeldje met zinvolle data erbij (dus ook waarden op de cellen met de eerste dag van de maand). We zijn heer geen van allen typist voor beroep ;).
 
matrix met dagomzetten

Bedankt voor uw geduld.

De gele cellen met eerste v/d maand gebruik ik als hulp om de SOM-formule , onder maandomzetten , te kunnen maken.
Ze worden inderdaad in de loop van het jaar allemaal overschreven.

Het gaat mij er om dat ik ergens in de eerste week v/h jaar de matrix leeg maak , en dan bv. op een knop wil drukken welke
een macro in werking zet welke dan weer op de juiste plek de gele cellen maakt met 1 Jan.--1 Feb.--enz.

Tevens moet deze macro dan een nieuwe SOM-formule maken onder maandomzetten want de oude zijn niet meer juist.

Ik heb een tabelletje gemaakt , Datum--Week--Dag , en Bekijk bijlage Matrix Dagomzetten 2.xlsxtoegevoegd.
Deze genereerd , als je een bepaald jaar invul , in welke week en dag 1 Jan.--1 Feb.--enz. vallen. (Staat in de nieuwe bijlage)

Vriendelijke groet Jaap
 
Jaap,

Het maken van de somformule is natuurlijk wel mogelijk, maar je bent er niet erg flexibel mee dat ben ik met OctaFish wel eens.
Het is beter om de gegevens en de presentatie van elkaar te scheiden.
Ik heb dan ook het overzicht van OctaFish uitgebreid door ook de maandcijfers op te nemen.

Bekijk bijlage 227113

Veel Succes.
 
Omdat het bestand van Elsendoorn niet jofel werkt (nooit eerder een bestandje meegestuurd? :D ) hier mijn versie met extra draaitabel.
 

Bijlagen

Dag Jaap,

voor ik verder ga met de formules
kan je even zien of de weken nu kloppen ?

mvg

Leo
 

Bijlagen

matrix met dagomzetten

Leo,

Mijn complimenten.
Helemaal goed , nooit gedacht dat er een oplossing voor zou zijn.
Dank je wel.

Ik ben letterlijk en figuurlijk een oude leerling en heb het met macro's programmeren mezelf aangeleerd uit het boek van Wim de Groot.
In dat boek staan echter niet alle technieken welke jij paraat heb , ik snap bepaalde dingen niet.
Ik wil , als het kan , er ook graag wat van opsteken.

Bv.

If Cells(1, 14).Value <> 1 Then Wat doet deze code en waar verwijzen de cijfers naar?

r = Cells(at, 14) .Value + 2 Wat doet deze code en waar verwijzen de cijfers naar?
k = Cells(at, 15).Value + 1 Wat doet deze code en waar verwijzen de cijfers naar?

Cells(r, k).Value = "1 "& Left(Cells(at + 1, 19), 3) & "." Wat doet deze code en waar verwijzen de cijfers naar?

Nog een punt is heel belangrijk voor mij.
Wat als het gebied wat overschreven word , ik graag op een andere plaats wil hebben. Bv. H64:J75 . Wat veranderd er dan in welke code's??

Groetjes Jaap
 
Laatst bewerkt:
Hoi Jaap,

ik ben helemaal niet goed in uitleggen maar ik heb een poging gedaan
heb op verschillende plaatsen in de macro wat leesvoer bijgezet.

mocht er iets nog niet duidelijk zijn dan roep je maar

mvg

Leo
 

Bijlagen

matrix met dagomzetten

Leo,

Het is mij allemaal duidelijk op 2 punten na.

Cells(r, k).Value = "1 " & Left(Cells(at + 1, 19), 3) & "."

1e) De 19 in bovenstaande code , wat wil dat zeggen?

2e) Als ik onderaan in de matrix ook nog 1 Jan. van het volgende jaar wil hebben,
hoe kan ik dat realiseren?
Heb geprobeerd met , For at = 1 To 13 maar dat werkt niet.

Vriendelijke groet , Jaap
 
Dag Jaap,

19 staat voor Kolom S, daar worden de drie karakters gehaald.

voor de 1 ste jan van volgend jaar heb ik in deze bijgevoegd.

mvg
Leo
 

Bijlagen

matrix met dagomzetten

Hoi Leo,

Alles werkt zoals ik het wilde hebben.
Grandioos!!
Ik heb van jou , en ook de andere forumleden , veel geleerd.

Dank je wel hiervoor.

Vriendelijke groet , Jaap
 
matrix met dagomzetten

Hoi Leo.

Je heb het me zo goed uitgelegd dat ik waarschijnlijk een fout ontdekt heb in de Maand omzet codes.

Vlgs. mij zijn de eerste 4 codes goed maar 5 t.e.m. 7 moeten met regel nul zijn (week nul)
Cells(1, 14).Value = 0
In Week nul komen alleen maar de Vrijdag--Zaterdag en Zondag

Dit zelfde geld ook voor de schrikkeljaren.

Ik heb de codes zelf gecorrigeerd en het werkt goed.

Vriendelijke groet Jaap
 
Dag Jaap,

begrijp niet echt wat je wil zeggen, regel of rij 0 bestaat niet
eerste regel of rij in je matrix is 2


mvg

Leo
 
matrix met dagomzetten

Leo,

Misschien heb ik het wel fout hoor.

In N1 staat , vlgs. mij , ook wel eens een weeknummer nul , en dat wordt dan niet gevonden in een van de 14 maandcodes

If Cells(1, 15).Value = 1 And Cells(1, 14).Value = 1 And Range("m3").Value - Range("m1").Value = 59 Then

Vriendelijke groet , Jaap
 
Het kan ook met VBA:

Code:
Sub M_snb()
    ReDim sn(53, 1 To 7)
    
    For j = 1 To 12
      y = DateSerial(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

    Cells(2, 2).Resize(UBound(sn)+1, UBound(sn, 2)) = sn
End Sub
 
Laatst bewerkt:
Jaap,

heb volgende dingen nog eens nagekeken
voor de schrikkeljaren van maandag tot zondag, jaren 2024,2036,2048,2032,2016,2028 en 2040
voor de gewone jaren van maandag tot zondag, jaren 2018,2019,2025,2026,2021,2022 en 2023

en ben volgende foutjes tegengekomen en in deze bijlage verbeterd

1. schrikkeljaren die beginnen op donderdag, in vorige fout in maand maart
2. schrikkeljaren die beginnen op zondag, in vorige tevens fout in maart
3. ook werd in vorige versie de 1 ste januari verkeerd geplaatst als deze in week 1 viel

Verder heb ik in het if statement voor het plaatsen van de maandformules een overbodig deel weggehaald.

@ SNB

kan je code maar deels volgen en wil die daarom wel eens uittesten maar waar plaats ik die juist om draaiend te krijgen ?


mvg

Leo
 

Bijlagen

Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan