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

Aantal keer weergeven adhv waarde cel

Status
Niet open voor verdere reacties.

LauravT

Gebruiker
Lid geworden
14 jun 2012
Berichten
156
Hallo,..

Ik ben op zoek naar een formule of VBA-code die een lijst geeft met (dubbele) namen adhv een overzicht!

Stel ik heb onderstaande lijst:

Puk 0
Clara 2
Piet 0
Klaas 3
Arjan 0
Bella 1
Karin 0
Laura 4
Albert 0
Harrie 0
Corne 0
Koos 0
Andre 1

Dan wil ik dus dat hij onderstaande lijst laat zien:

Clara
Clara
Klaas
Klaas
Klaas
Bella
Laura
Laura
Laura
Laura
Andre

De aantallen kunnen variëren!

Alvast bedankt!
 
Stel je lijst begint in A1 en naar beneden, dan in D1 en naar beneden de resultaten.
Code:
Sub tst()
    Dim sn3
    ReDim sn3(0, 0)
    sn = Cells(1).CurrentRegion.Value
    For i = 1 To UBound(sn)
        If Split(sn(i, 1), " ")(1) > 0 Then
            For ii = 1 To Split(sn(i, 1), " ")(1)
                sn3(0, UBound(sn3, 2)) = Split(sn(i, 1), " ")(0)
                ReDim Preserve sn3(0, UBound(sn3, 2) + 1)
            Next
        End If
    Next
    Cells(1, 4).Resize(UBound(sn3, 2), 1) = WorksheetFunction.Transpose(sn3)
End Sub
 
Stel ik heb een voorbeeld bestand en stel dat ik deze niet plaats dan stel ik dat het mogelijk ook zo kan zijn.

Code:
Sub VenA()
With Sheets(1)
    ar = .Cells(1).CurrentRegion
    For j = 1 To UBound(ar)
        For jj = 1 To ar(j, 2)
            c00 = c00 & "|" & ar(j, 1)
        Next jj
    Next j
    .[d1].Resize(UBound(Split(c00, "|"))) = Application.Transpose(Split(Mid(c00, 2), "|"))
End With
End Sub

Het blijft natuurlijk wel gokken op deze manier.
 
Misschien ook goed om een oplossing met formules in stelling te brengen.
 

Bijlagen

Super!

De VBA-code is in dit geval wat ik zoek,.. aangezien de aantallen altijd kunnen variëren!
Hartstikke bedankt!
 
Code:
Sub hsv()
 Cells(1, 10).Resize([sum(b1:b10000)]) = Application.Transpose(Split(Join([transpose(rept(A2:A10000&"|",B2:B10000))], ""), "|"))
End Sub
 
@ Harry

Alhoewel ik 'm heel mooi gevonden vind is het qua snelheid wel een afknappertje.:o
Over 100 rijen kom ik uit op 0.6 sec. De code van VenA en mij komt uit op 0.1 sec. Dus op nog grotere bereiken vrees ik er al helemaal een beetje voor.
 
@Rudi,
Op precies het aantal rijen (14) is de mijne 2x sneller, maar helaas niet dynamisch.
Mijn Pc.
msgbox format(timer -t,"0.000")
@VenA - 0.016
@hsv - 0.008
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan