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

Hoe automatisch dubbele waarden verwijderen?

Status
Niet open voor verdere reacties.

nicholasvb

Gebruiker
Lid geworden
28 aug 2018
Berichten
9
Beste,

Ik ben op zoek naar een manier om automatisch de dubbele waarden uit een kolom te halen (EXCEL). Ik ben me ervan bewust dat excel een specifieke functie heeft hiervoor, deze functie heet dan ook letterlijk: Dubbele waarden verwijderen.
Nu had ik dit graag automatisch gehad, zonder dat ik zelf op die knop moet drukken.
Dus van zodra er een nieuwe waarde verschijnt in de kolom, wordt die er direct uitgehaald als het een dubbele waarde is.

Hoe kan ik dit bereiken? Ik heb al veel opgezocht maar het enigste dat ik kan vinden zijn tutorials over hoe je met die knop moet werken en dat is niet wat ik wil.

Alvast bedankt,

Met vriendelijke groeten,

Nicholas
 
Laatst bewerkt:
Welkom op het forum, we verwachten dat de topicstarter ook een excel voorbeeld bestand bijvoegen bij hun vraag, je zal dan sneller geholpen worden.
 
Kan iemand van de VBA-goeroes mij uitleggen waarom dit niet werkt als oplossing?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer

For i = 1 To ActiveCell.Row - 1
    If ActiveCell.Value = Cells(i, ActiveCell.Column) Then ActiveCell.Value = ""
Next i

End Sub
Ik gok dat de ActiveCell verschuift nadat je op enter hebt gedrukt en dat 'ie eigenlijk eentje erboven moet kijken.
 
Laatst bewerkt:
Je verteld niet wat het probleem is, maar dit:
For i = 1 To ActiveCell.Row - 1

zorgt ervoor dat i op een gegeven moment 0 is en dan gaat dit uiteraard fout:
Cells(i, ActiveCell.Column)

Probeer het eens zo:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    
    For i = 2 To ActiveCell.Row
        If ActiveCell.Value = Cells(i - 1, ActiveCell.Column) Then ActiveCell.Value = ""
    Next i
End Sub
 
Laatst bewerkt:
Het "probleem" was de vraag van TS. Die wilde graag dat een dubbele waarde in de actieve kolom gelijk verwijderd wordt uit de cel waarin deze ingevoerd wordt. In het kader van "laat ik het voor het leereffect eens zelf wat met VBA proberen" kwam ik op de code in post #3. Maar dit behoeft dus nog verbetering (of is misschien wel ongeschikt) ;)

Feit blijft dat TS-vraagstuk m.i. met VBA moet worden opgelost...
 
Laatst bewerkt:
Het "probleem" was de vraag van TS. Die wilde graag dat een dubbele waarde in de actieve kolom gelijk verwijderd wordt uit de cel waarin deze ingevoerd wordt. In het kader van "laat ik het voor het leereffect eens zelf met VBA proberen" kwam ik op de code in post #2. Maar dit behoeft dus nog verbetering (of is misschien wel ongeschikt) ;)

Feit blijft dat TS-vraagstuk m.i. met VBA moet worden opgelost...

Alvast bedankt voor jullie antwoorden. Ik moet nog wel vermelden dat als ik het over 'waarden' heb, bedoel ik eigenlijk tekst, geen getallen. (Misschien maakt dit niet uit, maar ik kan het je alvast meegeven). Verder ben ik geen geavanceerde Excel gebruiker en weet ik ook niet wat VBA is en hoe het te gebruiken. Is er geen andere Workaround mogelijk?
 
Lees #2 nog eens.
 
Zonder lusje
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
    If Target.Count = 1 Then
      If Application.CountIf(Columns(Target.Column), Target.Value) > 1 Then Target.Value = ""
    End If
  Application.EnableEvents = True
End Sub
 
Laatst bewerkt:
En de suggestie van VenA in #8 heb je al getest?
 
Code van VenA erin zetten (via Alt+F11) en dubbele waarden worden gelijk verwijderd na invoeren.
 
Met 1 regeltje extra om het af te maken ;)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
    If Target.Count = 1 Then
      If Application.CountIf(Columns(Target.Column), Target.Value) > 1 Then
        Target.Value = ""
        [COLOR="#FF0000"]Target.Activate[/COLOR]
      End If
    End If
  Application.EnableEvents = True
End Sub
 
Laatst bewerkt:
Beste,

Ik heb de laatste code van VenA erin gezet en werkt fantastisch maar is nog niet perfect. Het werkt namelijk enkel op de cellen waarin ik iets nieuws typ. Als ik in kolom A een dubbele waarde typ, is die gelijk weg. Maar de dubbele waarden die er nog in staan, blijven staan. Die kolom A neemt trouwens de waarde over van een kolom in een ander tabblad. Als ik dan in die andere kolom een nieuwe categorie typ, wordt die overgenomen in Kolom A en blijft die staan.

Heb een nieuwe Excel toegevoegd:

Bekijk bijlage ForumVraag (1).xlsx
 
Laatst bewerkt:
Is niet van mij maar van VenA ;)
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 Application.EnableEvents = False
   Columns(1).RemoveDuplicates 1, 1
 Application.EnableEvents = True
End Sub
 
Via datavalidatie kun je voorkomen dat er dubbele waarden ingevoerd worden.
Is dit misschien een alternatieve oplossing
 

Bijlagen

Wat nu echt de bedoeling is, is mij onduidelijk. Een draaitabel zal wel voldoende zijn. In de module van 'Blad1'

Code:
Private Sub Worksheet_Activate()
  Sheets("INPUT").Columns(1).AdvancedFilter 2, , Cells(1, 12), True
End Sub

Het unieke lijstje komt in kolom L te staan.
 
De openingspost lijkt me een duidelijk verhaal.

De methode wordt zelfs nog aangehaald.
 
Dus van zodra er een nieuwe waarde verschijnt in de kolom, wordt die er direct uitgehaald als het een dubbele waarde is.

Dit gebeurt dus in mijn voorbeeldje mbv data validatie
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan