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

Unieke rijen nummeren

Status
Niet open voor verdere reacties.

fotoflip

Gebruiker
Lid geworden
16 apr 2009
Berichten
17
Ik wil mits VBA een nummering van rijen met een unieke waarden krijgen. En dit ter hoogte van de eerste rij met de unieke waarde. De volgende rijen met dezelfde waarde als de vorige dienen niet genummerd te worden.
De VBA-code moet deze stappen herhalen tot er niets meer staat ingevuld in de kolom met de unieke waarden.
Een voorbeeldje in bijlage met het gewenste resultaat.
Alvast bedankt!
 

Bijlagen

laat eens zien welke code je zelf gemaakt hebt.
dan kunnen we ( de helpers hier ) je wel een beetje verder helpen met je huiswerk.
 
Sylvester, ik heb heel weinig kennis van VBA. Ik ben op zoek naar een eerste aanzet. Ik had gedacht aan iets in de zin van: met geselcteerde cel A1, ALS de waarde in de cel B2 gelijk is aan de vorige cel, dan niets invullen, anders 1. Verhoog de teller met 1. Ga naar de volgende rij. Als de waarde in cel B3 gelijk is aan de vorige cel, dan niets invullen, anders 1+1, enz...
 
misschien heb je hier iets aan:
Code:
Sub NummerenVanGegevens()
    Dim R1 As Range, R2 As Range, Nummer As Long
    Set R1 = [B2]
    Nummer = 1
    R1.Offset(, -1) = Nummer
    
    For Each R2 In [B3:B10]
        If R1 <> R2 Then
            Nummer = Nummer + 1
            Set R1 = R2
            R1.Offset(, -1) = Nummer
        End If
    Next R2
    
End Sub
als je uitleg nodig hebt dan gewoon vragen.
 
Arrie, Sylvester.
Beide oplossingen werken perfect. Dit is wat ik zocht.
Bedankt!
 
In een gesorteerde lijst volstaat de de formule van arrie23. In een niet gesorteerde lijst kan het zo.

PHP:
=ALS(AANTAL.ALS($B$2:B2;B2)=1;MAX($A$1:$A1)+1;"")

Wat het doel ervan is en waarom je het via VBA wil oplossen ontgaat mij even.:d
 
VenA.
Het betreft een reeks wagonnummers op een spoor. Op die wagons worden containers geladen. Op sommige wagons wordt meer dan een container geladen en dan komt het wagonnummer meer dan eens voor in de lijst. De rijnummers bepalen de positie van de wagon op het spoor.
Waarom in VBA. Wel, de lijst met wagons verandert uiteraard elke dag. Vandaag zijn het 20 wagons met 60 containers, maar morgen kan het een lijst zijn van 22 wagons met 52 containers bijvoorbeeld. Dat alleen al maakt dat een vaste formule in een lijst onbruikbaar is. De gegeven zijn te variabel. Bovendien hebben de mensen die met deze gegevens moeten werken niet allen een uitgebreide kennis van Excel. Daarom dat ik het met "een druk op de knop" voor die mensen een stuk eenvoudiger wil maken. Er zit trouwens nog veel meer VBA-code achter hoor.
Maar ik begrijp dat sommige vragen voor buitenstaanders niet altijd begrijpelijk overkomen.
Het is ook niet de eerste keer dat ik hier met vragen terecht kom. Ik mag wel stellen dat ik telkens prima geholpen werd.
Waarvoor mijn dank!
 
Sylvester
Zoals ik reeds aangaf werkte de VBA-code die je hierboven voorstelde. Maar de range in kolom B is beperkt. Omdat de range dagelijks variabel is, had ik een loop gewild tot er in kolom B geen waarde meer voorkomt. Het zal ergens iets zijn met Do Until... en Loop, maar mijn VBA kennis is niet toereikend om dit voor elkaar te krijgen. Kun je me daarmee helpen a.u.b.
 
Helemaal begrijpen doe ik het nog steeds niet (je kan niet filteren, niet logisch sorteren etc). Maar op basis van jouw voorbeeldje kan je deze eens proberen.

Code:
Sub VenA()
With Sheets("Blad1")
    ar = .Cells(1).CurrentRegion
    For j = 2 To UBound(ar)
        If ar(j, 2) <> ar(j - 1, 2) Then
            c00 = c00 & t + 1 & "|"
            t = t + 1
            Else: c00 = c00 & "|"
        End If
    Next j
    .Cells(2, 1).Resize(UBound(ar) - 1) = Application.Transpose(Split(c00, "|"))
End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan