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

Van datum naar maand

Status
Niet open voor verdere reacties.

youdeni

Gebruiker
Lid geworden
28 feb 2008
Berichten
147
Vraagje:

Ik maak gebruik van een somproductformule (zie tabblad rapport cel F15) om dat uit een matrix te lezen (zie tabblad Indirect) In de matrix staat in kolom D de datum. Echter voor mijn rapportage heb ik de maand nodig (zie voorbeeld in kolom A) nu wil ik graag een formule hebben die van de data in kolom D de corrosponderende maand in kolom A weergeeft. Het probleem is ook dat het aantal rijen fluctueert. Kan iemand mij helpen????

Youdeni
 

Bijlagen

Beste youdeni ;)

Zie bestandje.

Formule voor maand is gewoon =D4 en celeigenschappen veranderen bij aangepast op mmmm zetten.
Hetzelfde voor maand dan celeigenschappen op jjjj zetten.
En een formule voor weeknummer geplaatst.

Groetjes Danny. :thumb:
 

Bijlagen

Laatst bewerkt:
Beste youdeni,

In het bijgevoegde bestand heb ik een macro gezet (zie blauwe knop) die hetgeen geeft dat je graag wilt zien.

Heb je bewust harde getallen in de kolommen B en c gezet? Zo ja dan is dat OK maar kijk anders even naar formules in B4 en C4.

Groet,

Ronald

@Danny147:
Ik zag jouw post net te laat. :) Wat er echter niet goed gaat is dat de Somproduct-formule op het tabblad Rapport dan niet meer werkt.
 

Bijlagen

Laatst bewerkt:
Beste RvanGalenLast ;)

@Danny147:
Ik zag jouw post net te laat. :) Wat er echter niet goed gaat is dat de Somproduct-formule op het tabblad Rapport dan niet meer werkt.

Bestandje is aangepast, en het werkt nu.

Groetjes Danny. :thumb:
 
Beste Danny,

Zou je jouw aangepaste bestand nog eens kunnen plaatsten? Ben nl. nieuwsgierig hoe je het hebt opgelost.

Groet,

Ronald
 
Beste youdeni,

In het bijgevoegde bestand heb ik een macro gezet (zie blauwe knop) die hetgeen geeft dat je graag wilt zien.

Heb je bewust harde getallen in de kolommen B en c gezet? Zo ja dan is dat OK maar kijk anders even naar formules in B4 en C4.

Groet,

Ronald

@Danny147:
Ik zag jouw post net te laat. :) Wat er echter niet goed gaat is dat de Somproduct-formule op het tabblad Rapport dan niet meer werkt.

Beste Ronald,

Als er nieuwe rijen met een datum bijkomen (als in het voorbeeld vanaf rij 163 t/m verder naar beneden) dan werkt de macro niet meer. Kan je de macro AUB dynamisch maken?
Als het niet al te veel moeite is kan je dan mss je macro uitleggen? Ben namelijk beginnende met VBA en wil graag wten hoe je dit voor elkaar heb gekregen. Al vast bedankt.

Youdeni
 
Youdeni,

Wat de macro doet is:
1. Het kijkt wat de laatst gevulde rij in kolom B is en neemt het rijnummer daarvan over. In het eerste bestand was dit rij 162. Wellicht is het beter om kolom D te nemen. Is hieronder verwerkt.
2. Een bepaald bereik in kolom A benoemen (r). Dat bereik is afhankelijk van het aantal gevulde rijen.
3. Binnen het bereik r worden alle cellen eerst met de formule "=TEXT(RC[3],""mmmm"")" gevuld. Dit is dezelfde formule die Danny147 gebruikte.
4. Die formule omgezet in de "platte" tekst.
5. De celinhoud wordt horizontaal gecentreerd.

Je zou in de macro ook de kolommen B en C meteen kunnen laten vullen als dat handig is. Dan wordt de gehele macro:

Code:
Sub MaandToevoegen()
Dim r As Range
Dim Lr As Long    
    Lr = [D65500].End(xlUp).Row
    Set r = Range("a4:a" & Lr)
    With r
        .FormulaR1C1 = "=TEXT(RC[3],""mmmm"")"
        .Value = .Value
        .HorizontalAlignment = xlCenter
        .Offset(, 1).Formula = "=year(rc[2])"
        .Offset(, 2).Formula = "=weeknum(rc[1])"
    End With

End Sub

Groet,

Ronald
 
Youdeni,

Wat de macro doet is:
1. Het kijkt wat de laatst gevulde rij in kolom B is en neemt het rijnummer daarvan over. In het eerste bestand was dit rij 162. Wellicht is het beter om kolom D te nemen. Is hieronder verwerkt.
2. Een bepaald bereik in kolom A benoemen (r). Dat bereik is afhankelijk van het aantal gevulde rijen.
3. Binnen het bereik r worden alle cellen eerst met de formule "=TEXT(RC[3],""mmmm"")" gevuld. Dit is dezelfde formule die Danny147 gebruikte.
4. Die formule omgezet in de "platte" tekst.
5. De celinhoud wordt horizontaal gecentreerd.

Je zou in de macro ook de kolommen B en C meteen kunnen laten vullen als dat handig is. Dan wordt de gehele macro:

Code:
Sub MaandToevoegen()
Dim r As Range
Dim Lr As Long    
    Lr = [D65500].End(xlUp).Row
    Set r = Range("a4:a" & Lr)
    With r
        .FormulaR1C1 = "=TEXT(RC[3],""mmmm"")"
        .Value = .Value
        .HorizontalAlignment = xlCenter
        .Offset(, 1).Formula = "=year(rc[2])"
        .Offset(, 2).Formula = "=weeknum(rc[1])"
    End With

End Sub

Groet,

Ronald


Ronald,

Bedankt voor je uitleg, echt super, ik heb nog een vraagje. Hoe weet de macro dat hij tabblad "Indirect" moet kiezen om de bewerkingen uit te voeren. Stel dat ik deze macro ook op een ander werkblad wil toepassen. Hoe doe ik dit dan?
Thanx

Youdeni
 
Dan worden deze regels

Code:
   Lr = [D65500].End(xlUp).Row
    Set r = Range("a4:a" & Lr)

als volgt:
Code:
Lr = Sheets("indirect").[D65500].End(xlUp).Row
    Set r = Sheets("indirect").Range("a4:a" & Lr)

Groet,

Ronald
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan