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

Vba

Status
Niet open voor verdere reacties.

kipfiel1

Gebruiker
Lid geworden
26 jan 2014
Berichten
7
Hallo,

Ik wil graag een macro waarin de namen die in kolom A staan, in kolom G moeten staan en dan zo vaak als het aantal dat in Kolom B staat (zie voorbeeld).
Ben zelf aan het knutselen geweest met het opnemen. Maar ik kom er niet uit.

Wie kan me helpen? :)
 

Bijlagen

Zoiets:
Code:
Sub AantalNamen()
    Dim x As Long
    Dim y As Long
    Dim z As Long
    
    x = 2
    While Cells(x, 1) <> ""
        For y = z To z + (Cells(x, 2) - 1)
            z = z + 1
            Cells(z, 7) = Cells(x, 1)
        Next y
        x = x + 1
    Wend
End Sub
 
Laatst bewerkt:
Nog eentje.
Code:
Sub hsv()
Dim sn, i As Long
sn = Cells(1).CurrentRegion.Offset(1)
 For i = 1 To UBound(sn) - 1
   Cells(Rows.Count, 10).End(xlUp).Offset(IIf(Cells(1, 10) = "", 0, 1)).Resize(sn(i, 2)) = sn(i, 1)
 Next i
End Sub
 
of
Code:
Sub M_snb()
   Cells(1, 6).Resize([sum(B2:B100)]) = Application.Transpose(Split(Join([transpose(rept(A2:A7&"|",B2:B7))], ""), "|"))
End Sub
 
Haha! Het wordt steed korter! Wie bied minder! :P
 
Niet normaal. :D
 
Dank jullie wel :) Kan het ook zo, dat het alleen geldt voor de kolommen, als er in kolom C een 1 staat? Ik probeer dit zelf met een if-functie. Maar dat lukt nog niet
 
Met een kleine uitbreiding op mijn manier in #2:
Code:
Sub AantalNamen()
    Dim x As Long
    Dim y As Long
    Dim z As Long
    
    x = 2
    While Cells(x, 1) <> ""
        If Cells(x, 3) = 1 Then
            For y = z To z + (Cells(x, 2) - 1)
                z = z + 1
                Cells(z, 7) = Cells(x, 1)
            Next y
        End If
        x = x + 1
    Wend
End Sub
 
of

Code:
Sub M_snb()
   Cells(1, 10).Resize([sum(B2:B100*C2:C100)]) = Application.Transpose(Split(Join([transpose(rept(A2:A7&"|",B2:B7*C2:C7))], ""), "|"))
End Sub

NB ik ga ervan uit dat in de overige cellen in kolom C niets staat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan