Hoe dubbele waarden markeren met vba?
Bij het werken met grote data zijn dubbele waarden altijd een probleem. Meestal gebruik ik de optie duplicaten verwijderen om al deze waarden te verwijderen. En ik weet zeker dat jij hetzelfde doet.
Maar het verwijderen van deze dubbele waarden of het simpelweg tellen ervan lost het probleem nooit op. Het belangrijkste is om alle dubbele waarden te onderzoeken voordat u ze verwijdert.
Ja het is waar. Nadat u al deze waarden heeft gemarkeerd, kunt u ze controleren en vervolgens verwijderen. Vandaag wil ik in dit artikel 4 verschillende VBA-codes met u delen om dubbele waarden te markeren.
En het punt is dat deze codes cellen op verschillende manieren kunnen markeren. U kunt ze eenvoudig kopiëren en in uw VBA-editor plakken en gebruiken.
1. In elke regel
Deze VBA-code controleert alle cellen op een rij en markeert alle cellen die op een rij worden gedupliceerd. Simpel gezegd: als een rij tweemaal de waarde “522” heeft, wordt deze als een duplicaat beschouwd. Maar als de andere 522 in een andere rij staat, wordt deze als uniek beschouwd.
Sub DuplicateValuesFromRow() 'Declare All Variables. Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count Number of Rows and Columns myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop Each Row To Check Duplicate Values and Highlight cells. For i = 2 To myRow Set myRange = Range(Cells(i, 2), Cells(i, myCol)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub
Als je door deze macro kijkt, zie je dat we een lus hebben gebruikt om elke rij te controleren op dubbele waarden en deze met een kleur te markeren.
Belangrijke punten
- Uw gegevens mogen geen lege rij of kolom bevatten, anders wordt die cel genegeerd.
- De startcel voor uw gegevens moet cel “A1” zijn. En als je het startpunt wilt aanpassen, moet je de code aanpassen.
- De eerste rij en eerste kolom van uw gegevensblad moeten een koptekst zijn.
2. In elke kolom
Deze VBA-code controleert alle cellen in een kolom en markeert alle cellen die in elke kolom zijn gedupliceerd. Simpel gezegd: als een kolom twee keer de waarde ‘231’ heeft, wordt deze als duplicaat beschouwd. Maar als een andere “231” in een andere kolom staat, wordt deze als uniek beschouwd.
Sub DuplicateValuesFromColumns() 'Declare All Variables Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count number of rows & column myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop each column to check duplicate values & highlight them. For i = 2 To myRow Set myRange = Range(Cells(2, i), Cells(myRow, i)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub
3. In de selectie
Stel dat u alleen cellen met dubbele waarden uit de selectie wilt markeren, dan kan deze code u helpen. Om deze code te gebruiken, selecteert u eenvoudig een celbereik en voert u deze code uit. Het controleert elke cel met de selectie en markeert deze in rood als een cel een dubbele waarde heeft.
Sub DuplicateValuesFromSelection() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Selection For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub
4. Gehele gegevens
Als u een grote dataset heeft, kunt u deze macrocode gebruiken om de volledigheid van de gegevens te verifiëren en dubbele waarden te markeren. Deze code doorloopt elke cel één voor één en past de rode kleur toe op alle cellen die duplicaten zijn.
Sub DuplicateValuesFromTable() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Range(“Table1”) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub
Belangrijke opmerking: in de bovenstaande code hebben we de tabelnaam ‘Tabel1’ gebruikt. U kunt deze naam uit de code wijzigen. Als u nu een bereik heeft, kunt u gewoon de bereiknaam gebruiken.
[Bonustip] Tel dubbele waarden
Met deze code kunt u het aantal dubbele waarden uit de selectie tellen. Wanneer u deze code uitvoert, wordt er een berichtvenster weergegeven waarin het nummer wordt weergegeven.
Sub CountDuplicates() Dim i As Integer Dim j As Integer Dim myCell As Range Dim myRange As Integer myRange = Range("Table1").Count j = 0 For Each myCell In Range("Table1") If WorksheetFunction.CountIf(Range("Table1"), myCell.Value) > 1 Then j = j + 1 End If Next MsgBox j End Sub
Ook in de bovenstaande code hebben we een tabelnaam gebruikt en verander of vervang je deze door een bereik.
Voorbeeld bestand
Download dit voorbeeldbestand hier voor meer informatie.
Conclusie
In verschillende situaties moeten we op verschillende manieren controleren op dubbele waarden. En alle bovenstaande codes kunnen in dit opzicht nuttig voor u zijn. Als u wilt, kunt u de markeringskleur van de codes wijzigen met behulp van het kleurindexnummer.
Help me nu met één ding.
Waar kunnen we deze codes verbeteren?
Deel uw mening met mij in het opmerkingengedeelte, ik hoor graag van u. En vergeet deze tip niet met je vrienden te delen.