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

Opgelost Hulp bij extra rijen

Dit topic is als opgelost gemarkeerd

Jurgen2807

Gebruiker
Lid geworden
27 jul 2011
Berichten
189
Hallo,

Ik heb wellicht een simpel vraagstuk voor velen van jullie; althans dat hoop ik.

Zie bijlage.

In kolom B van tabblad A staan een aantal medewerkers.

Wat ik graag wil staat op tabblad B. Namelijk een lijst waarin per medewerker het aantal maanden is opgenomen.

Ik heb een personeelsbestand van veel medewerkers.

Hoe kan ik dat eenvoudig voor elkaar krijgen zonder dat ik voor iedere medewerker dit handmatig moet opstellen.
 

Bijlagen

Laatst bewerkt:
Ik zie geen tabblad A en ook geen tabblad B.
 
Ik was vergeten het juiste vraagstuk op te slaan :(. Excuus. De bijlage is als het goed is nu wel juist
 
Is het niet makkelijker om de maanden horizontaal te plaatsen? Zie werkblad C.
Maar het kan natuurlijk ook met een macro:
Code:
Sub GenereerJaar()
    For r = 2 To Sheets("A").Cells(Rows.Count, 2).End(xlUp).Row
        For rr = 1 To 12
            Sheets("B").Cells((r - 2) * 12 + rr + 1, 2).Resize(, 2) = Array(Sheets("A").Cells(r, 2), rr)
        Next
    Next
End Sub
 

Bijlagen

Laatst bewerkt:
Dank jullie wel.. Wat AHulpje aangeeft werkt voor mij het makkelijkst. Maanden horizontaal plaatsen is niet handig ivm andere data die ik heb weggelaten.

nog 1 vraag: wat als ik aan tabblad A een kolom toevoeg zodat tabblad B uit 3 kolommen bestaat? Zie voorbeeld. Ik wil voor de medewerker graag het medewerknummer hebben staan. Ik heb alle combinaties van de code geprobeerd, maar ik krijg niet wat ik graag wil.

Code die ik heb aangepast is:
Sub GenereerJaar()
For r = 3 To Sheets("A").Cells(Rows.Count, 3).End(xlUp).Row
For rr = 1 To 12
Sheets("B").Cells((r - 3) * 12 + rr + 2, 3).Resize(, 2) = Array(Sheets("A").Cells(r, 3), rr)
Next
Next
End Sub


Wat doe ik fout?
 

Bijlagen

Code:
Sheets("B").Cells((r - 3) * 12 + rr + 2, 2).Resize(, 3) = Array(Sheets("A").Cells(r, 2), Sheets("A").Cells(r, 3), rr)
 
Code:
Sub GenereerJaar()
    With Sheets("A")
        sn = .Range("B3", .Range("B" & .Rows.Count).End(xlUp)).Resize(, 2)
    End With
    ReDim res(1 To UBound(sn) * 12, 1 To 3): x = 1
    For i = 1 To UBound(sn)
        For j = 1 To 12
            res(x, 1) = sn(i, 1): res(x, 2) = sn(i, 2): res(x, 3) = j
            x = x + 1
        Next
    Next
    Sheets("B").Range("B3").Resize(UBound(res), 3) = res
End Sub
 
Dag Peter, dank je wel. Dat is voor mij echt nog even een ver van mijn bed show. Ik probeer te snappen wat er gebeurd. Dat lukt mij niet met PQ. Ik ga mij dat op een rustiger moment eigen maken. Ik ben nu te druk met een aantal zaken.
 
@AHulpje.

Dank. Jouw code werkt prima. En ik snap de wijziging. Zodoende heb ik zelf nog een aantal kolommen weten toe te voegen en met succes. Zie bijlage. En daar gaat mijn laatste vraag over.

Als ik kijk naar de code die ik heb aangepast, dan heb ik kolommen E, F en G ook toegevoegd. Maand komt dan in kolom H te staan. Ik zou graag willen dat deze in kolom C komt te staan en dat andere kolommen dan een kolom opschuiven. zie tabblad B en dan rij 7. Daar kom ik niet uit.

Code die ik gemaakt had is:
Sub GenereerJaar()
For r = 3 To Sheets("A").Cells(Rows.Count, 2).End(xlUp).Row
For rr = 1 To 12
Sheets("B").Cells((r - 3) * 12 + rr + 2, 2).Resize(, 7) = Array(Sheets("A").Cells(r, 2), Sheets("A").Cells(r, 3), Sheets("A").Cells(r, 4), Sheets("A").Cells(r, 5), Sheets("A").Cells(r, 6), Sheets("A").Cells(r, 7), rr)
Next
Next
End Sub
 

Bijlagen

Code:
Sub GenereerJaar()
    With Sheets("A")
        sn = .Range("B3", .Range("B" & .Rows.Count).End(xlUp)).Resize(, 6)
    End With
    ReDim res(1 To UBound(sn) * 12, 1 To 7): x = 1
    For i = 1 To UBound(sn)
        For j = 1 To 12
            res(x, 1) = sn(i, 1): res(x, 2) = j
            For jj = 2 To 6
                res(x, jj + 1) = Application.Index(sn, i, jj)
            Next
            x = x + 1
        Next
    Next
    Sheets("B").Range("B3").Resize(UBound(res), 7) = res
End Sub
 
Laatst bewerkt:
Of de aangepaste versie van AHulpje.
Code:
Sub GenereerJaar()
Application.ScreenUpdating = False
With Sheets("A")
    For r = 3 To .Cells(Rows.Count, 2).End(xlUp).Row
        For rr = 1 To 12
            Sheets("B").Cells((r - 3) * 12 + rr + 2, 2).Resize(, 7) = Array(.Cells(r, 2), rr, _
                .Cells(r, 3), .Cells(r, 4), .Cells(r, 5), .Cells(r, 6), .Cells(r, 7))
        Next
    Next
End With
End Sub
 
Dank je wel. Allebei werken. Ik heb ze allebei getest. Die van jou moet ik nog even goed begrijpen. Dat komt goed. Dat is voor later.

Ik heb de indeling qua 1 t/m 12 maanden nodig om data vanuit verschillende bestanden aan elkaar te koppelen. Zoals aangegeven ben ik nog niet zover met Power Query. Ik wil zaken snappen en van daaruit verdere stappen maken.

Als de rijen op tabblad B zijn aangemaakt door de code die ik van jullie heb mogen ontvangen, dan dien ik kolommen I t/m K te vullen met data. Daar wil ik graag een formule voor gebruiken.

De waarden in kolom K komen vanuit kolom I in tabblad DATA.

Kortom voor rij 3:
1. Als het personeelsnummer, boekjaar en maand van tabblad B gelijk zijn aan de waarden op een rij van kolommen B, C en F van tabblad DATA, dan moet de waarde vanuit kolom I van tabblad DATA worden overgenomen in kolom K van tabblad B

Zie bijlage
 

Bijlagen

Klopt! Zelf programmeren lukt mij nog niet. Daar ga ik een training in volgen als het rustiger is. Dat wil ik eerst snappen. Vandaar de vragen hier. De codes die ik krijg bewaar ik allemaal. Veel vraagstukken hier komen steeds terug.

In ieder geval BEDANKT allemaal. Dit waardeer ik echt. Ik sluit de post. Voor mij is het opgelost.
 

Nieuwste berichten

Terug
Bovenaan Onderaan