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

Ontdubbelen

Status
Niet open voor verdere reacties.

katoo_tje

Gebruiker
Lid geworden
25 jul 2001
Berichten
91
Hallo,

Ik heb een vraagje. Ik heb een excel bestand met gegevens die er af en toe dubbel in voorkomen. Hoe kan ik deze ontdubbelen. (eigenlijk lukt me het tot zover, in die zin, met uitgebreid filter krijg ik dan een nieuw bestand waar de dubbele zijn uitgehaald). Echter ... kan ik ook zien welke uiteindelijk dubbel waren.

Bijv. een excel bestandje met

111
121
122
122
142
123

Nummer 122 staat er dubbel in. Met uitgebreid filter kan ik deze verwijderen. Maar kan ik ook op simpele wijze achterhalen welk nummer (in dit geval dus 122) dubbel was?

Ik hoop niet dat mijn verhaal verwarrend is.

:D
 
als je gewoon 1 2 3 4 ....... 111 112 113 114 en zo wilt hebben dan kun je de vulgreep gebruiken.
 
Hoi, bedankt voor je snelle reactie, maar dat bedoel ik helaas niet.

Ik heb een bestand met allemaal artikelen en nummers. Sommige staan er dubbel in.
Deze kan ik ontdubbelen met uitgebreid filter (dus alleen unieke records). Wanneer ik dat doe zie ik dat ik bijv. nog maar 1500 artikelen heb ipv 2000.

Tot zover gaat het goed.

Maar kan ik ook zien welke (dus van die 500 die er niet meer zijn) welke nummers er dubbel in stonden?

Ik moet toegeven, mijn verhaal is wat "warrig". Toch hoop ik dat iemand mij kan helpen.
 
Met een macro is dat goed te controleren.
Onderstaande controleert in kolom A nadat deze gesorteerd is en kleurt de dubbele rood maar verwijdert ze nog niet. Als je de ' weghaalt voor currentCell.EntireRow.Delete dan worden ze wel meteen verwijdert.

Sub sorteertest()
Worksheets("Blad1").Range("A1").Sort _
Key1:=Worksheets("Blad1").Range("A1")
Set currentCell = Worksheets("Blad1").Range("A1")
Do While Not IsEmpty(currentCell)
Set nextCell = currentCell.Offset(1, 0)
If nextCell.Value = currentCell.Value Then
' currentCell.EntireRow.Delete
currentCell.EntireRow.Interior.ColorIndex = 3
End If
Set currentCell = nextCell
Loop
End Sub



Onderstaande macro zoekt in de hele sheet naar waarden die meerdere keren voorkomen en kleurt de betreffende cellen rood.

Sub fdControleerDubbeleWaarden()

Dim rge As Excel.Range
Dim rgeFind As Excel.Range
Dim varValue As Variant

' Behandel elke cel in de selectie van cellen.
' Het geselecteerde gebied is een range,
' maar elke cel in dat gebied ook.
For Each rge In ActiveWindow.RangeSelection
' Welke waarde staat er in de cel?
varValue = rge.Value
' Staat deze waarde ook in een andere cel?
For Each rgeFind In ActiveWindow.RangeSelection
' Maar natuurlijk niet kijken in de cel
' die we al gebruiken.
If rgeFind.Address <> rge.Address Then
' Is de waarde hetzelfde? Dan celkleur rood.
If rgeFind.Value = varValue Then
rgeFind.Font.ColorIndex = 3
End If
End If
Next
Next
End Sub
 
Chapeau Jan, perfecte macro. Ik zat ook al met de kleuren te stoeien, maar kwam er niet helemaal uit. Top !:thumb:
 
Jan,

Twee schitterende stukjes VBA.

Ik probeer reeds enige tijd je eerste macro (sorteertest) aan te passen zodat hij alle waarden die één of meer keer voorkomen verwijdert zodanig dat enkel die waarden overblijven die slechts éénmaal voorkwamen.

Het wordt echter een zootje; het lukt mij niet.
Nochthans heb ik het gevoel dat dit vrij eenvoucig moet
kunnen. Of niet ????

Groetjes van Marrosi
 
Als je het apostrofje voor currentCell.EntireRow.Delete weghaalt zou dat automatisch moeten gebeuren.
 
Dit klinkt als een oplossing, echter ....

ik ben een dombo die niet alles direct oppakt. Ik ben nog maar beginner die al het mogelijke eruit wil halen.

Leuk die macro.
Kan ik die met copy past in visual basic editor invoegen??? (klinkt dit al stom??)
Verder heb ik de NL talige versie excel.
Moet ik dan iets anders doen?

Sorry!
Kan iemand mij helpen.
Ik heb nu namelijk het gevoel dat ik er dichtbij zit en dat dit het dus is.

Alvast bedankt!

Katoo:o
 
Niet vragen als je iets niet begrijpt is stom.
Inderdaad gewoon met copy, paste in de editor van visual basic invoegen bij een module.
Als die er nog geen is dan deze met invoegen, module eerst maken.
Dit werkt op nederlandstalige Excel, daar werk i zelf ook mee. VBA is altijd in het engels, houd daar rekening mee als je via vba functie wil gebruiken.
Het gemakkelijkste is dan om ze op te nemen, da heb je meteen de juiste schrijfwijze. Denk ook om het scheidingsteken bij functies. Normaal bij nederlands is ; , in vba moet je dan , gebruiken.
 
te simpel?

Zet in een extra kolom de formule
=AANTAL.ALS($A$1:$A$400;A1)
A1 t/m 400 vastzetten
Nu de formule doortrekken langs de gehele kolom
Nu kun je voor elke regel zien hoevaak deze voorkomt in kolom A1 t/m A400
de dubbele (of meer) kun je er nu uithalen tot alles op 1 staat
mvg Imod
 
Die formule is minder mooi dan de Visual Basic oplossing maar die VB-oplossing werkt bij mij niet dus de formule geeft bij mij wel het beste resultaat. Bedankt Imod.

Iemand enig idee waarom de visual basic oplossign niet werkt?

Ik heb een excel werkblad 4 tabbladen. De kolom waar de dubbele waarden in staan, zit in tabblad 2 en de kolom is A.

Verder zie ik in Visual Basic editor vier modules staan. In welke module moet ik 'm kopieren?

Ik heb absoluut geen verstand van VB. Waar moet ik de macro van Jan naartoe kopieren en wat moet ik erin veranderen zodat hij werkt?

De foutmelding die ik krijg is "Het subscript valt buiten het bereik".
 
Het maakt niet uit naar welke module je de vb-code kopieert. Meerdere modules is vaak gemakkelijk om te ordenen.
Voor de foutmelding: controleer of de namen van de bladen overeenkomen met degene die in de macro gebruikt zijn, pas de macro aan indien nodig.
In de macro staat een aantal maal: Worksheets("Blad1").Range("A1").
Hiermee wordt uitgegaan van blad1 en kolom A, als jij je gegevens in blad2, kolom A, hebt staan moet je dus blad1 vervangen door blad2. Als je met een engelstalige versie werkt zal het sheet2 zijn.
Als je de bladen zelf een naam gegeven hebt, dan moet je die naam invullen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan