Hoe dubbele tekst / woorden te markeren in Excel-cel

  • Deel Dit
Michael Brown

De handleiding laat zien hoe u dubbele woorden of tekstreeksen in een cel kunt markeren met VBA.

Excel Voorwaardelijke opmaak maakt het mogelijk om duplicaten te markeren op alle mogelijke manieren die u kunt bedenken: met of zonder 1e voorkomen, in een enkele kolom of meerdere kolommen, opeenvolgende dubbele cellen, en hele rijen op basis van identieke waarden in een belangrijke kolom. Maar, zoals gewoonlijk, is er een "maar". Voorwaardelijke opmaakregels werken op celniveau, terwijl u misschien dubbele cellen wilt markeren.tekst in plaats van hele cellen. Dit kan alleen met macro's. Zelfs als u geen ervaring hebt met VBA, haast u dan niet om deze pagina te sluiten. Hier vindt u kant-en-klare codevoorbeelden en de gedetailleerde instructies voor het gebruik ervan in uw werkbladen.

    Markeer dubbele woorden in een cel zonder rekening te houden met hoofdletters en kleine letters

    Dit voorbeeld toont hoe u dubbele woorden of tekstreeksen binnen een cel in een rode letterkleur kunt arceren zoals in de onderstaande afbeelding. Merk op dat kleine letters en hoofdletters als dezelfde tekens worden behandeld. Bijvoorbeeld, oranje , ORANJE en Oranje worden geacht hetzelfde woord te zijn.

    De code van de macro is als volgt:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Voer het scheidingsteken in dat waarden in een cel scheidt" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) Next End Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word =words(nextWordIndex) Dan matchCount = matchCount + 1 End If NextWordIndex If matchCount> 0 Then text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Sub

    Dubbele tekst in een cel hoofdlettergevoelig markeren

    In de meeste situaties zijn we geneigd de hoofdletter te negeren wanneer we werken met tekstinvoer in Excel. Onder bepaalde omstandigheden is de hoofdletter van de tekst echter wel van belang. Bijvoorbeeld, wanneer u te maken heeft met ID's, wachtwoorden, of andere dat soort records, zijn de strings zoals 1-AA , 1-aa en 1-Aa zijn geen duplicaten en moeten niet gemarkeerd worden:

    Gebruik in dit geval de volgende versie van de code:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Voer het scheidingsteken in dat waarden in een cel scheidt" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word =words(nextWordIndex) Dan matchCount = matchCount + 1 End If NextWordIndex If matchCount> 0 Then text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Sub

    Hoe de macro's te gebruiken om dubbele woorden te markeren in Excel

    Als u een beginner bent in het gebruik van VBA, zullen de onderstaande stap-voor-stap instructies u er gemakkelijk doorheen leiden. Ervaren gebruikers kunnen gewoon de downloadlink kiezen en de rest overslaan :)

    Voeg de code toe aan uw werkmap

    U begint met het invoegen van de code van de macro in uw Excel-werkmap. Dit is hoe:

    1. Open de werkmap waarin u duplicaten wilt markeren.
    2. Druk op Alt + F11 om de Visual Basic Editor te openen.
    3. Klik in het linkerdeelvenster met de rechtermuisknop op DitWerkboek en selecteer Plaats > Module uit het contextmenu.
    4. Plak de code in het venster Code.
    5. Om de macro te bewaren voor toekomstig gebruik, moet u uw werkmap opslaan als een .xlsm-bestand dat geschikt is voor macro's.

    U kunt ook onze voorbeeldwerkmap downloaden en de macro van daaruit uitvoeren. De voorbeeldwerkmap bevat de volgende macro's:

    • HighlightDupesCaseInsensitive - schudt duplicaten binnen een cel waarbij de hoofdletter wordt genegeerd.
    • HighlightDupesCaseSensitive - markeert dubbelgangers in een cel, rekening houdend met de hoofdletter.

    Voor meer informatie, zie Hoe VBA-code in te voegen in Excel.

    De macro uitvoeren

    Met de code toegevoegd aan uw eigen werkmap of ons voorbeeldbestand gedownload en geopend, voert u de macro op deze manier uit:

    1. Selecteer in uw werkblad de cellen waarin u dubbele tekst wilt markeren. Dit kan één bereik zijn of meerdere niet-aangrenzende bereiken.
    2. Druk op Alt + F8 .
    3. Selecteer de gewenste macro en klik op Ren .

    4. De macro zal u vragen het scheidingsteken te specificeren dat de waarden in de geselecteerde cellen scheidt. Het vooraf ingestelde scheidingsteken (een komma en een spatie in ons geval) verschijnt automatisch in het invoervak. Afhankelijk van uw behoeften kunt u het standaard scheidingsteken laten staan of een ander scheidingsteken typen, en dan op OK klikken.

    Even later worden alle dubbele strings in de geselecteerde cellen gearceerd in een rode kleur (of welke letterkleur ook is ingesteld in uw code).

    Tip. Om snel duplicaten verwijderen binnen een cel, kunt u gebruik maken van Remove Duplicate Substrings, een van de vele tijdbesparende tools in onze Ultimate Suite.

    Hoe de code aanpassen aan uw behoeften

    Met deze gebruiksaanwijzingen en de basiskennis van VBA (of gewoon de onderstaande instructies nauwkeurig volgen) kunt u de codes gemakkelijk aanpassen aan uw behoeften.

    Plaats op dezelfde module

    Zoals u wellicht opmerkt, zijn beide macro's ( HighlightDupesCaseSensitive en HighlightDupesCaseInsensitive ) de HighlightDupeWordsInCell Het verschil tussen de twee bovenstaande macro's zit alleen in de 3e parameter (CaseSensitive) die aan de genoemde functie wordt doorgegeven.

    Voor hoofdlettergevoelig zoeken wordt het ingesteld op TRUE:

    Bel HighlightDupeWordsInCell(Cell, Delimiter, True)

    Voor hoofdletterongevoelig zoeken is dit FALSE:

    Bel HighlightDupeWordsInCell(Cell, Delimiter, False)

    Om de macro's te laten werken, moet de code van de HighlightDupeWordsInCell functie moet op dezelfde module worden geplaatst als de macro's.

    Scheidingsteken

    Bij het uitvoeren van de macro wordt u gevraagd het scheidingsteken te specificeren dat woorden/strings in de geselecteerde cellen scheidt. Het standaard scheidingsteken is een komma en een spatie (", ") en het is vooraf ingesteld in de InputBox:

    Scheidingsteken = InputBox("Geef het scheidingsteken dat waarden in een cel scheidt", "Scheidingsteken", ", ")

    In uw code kunt u elk ander teken gebruiken als vooraf gedefinieerd scheidingsteken.

    Kleur

    Standaard wordt de HighlightDupeWordsInCell functie geeft duplicaten een rode letterkleur. De kleur wordt in deze regel gedefinieerd:

    Cell.Characters(positionInText, Len(word)).Font.Color = vbRed

    Hier is vbRed een soort VBA-kleurconstante. Om doublures in een andere kleur weer te geven, kunt u vbRed vervangen door een andere constante zoals vbGreen, vbYellow, vbBlue, enz. T e lijst van ondersteunde kleurconstanten vindt u hier.

    Zo markeer je dubbele woorden in Excel-cellen. Ik dank u voor het lezen en hoop u volgende week op onze blog te zien!

    Beschikbare downloads

    Codevoorbeelden om duplicaten in een cel te markeren (.xlsm-bestand)

    Ultimate Suite 14 dagen volledig functionele versie (.exe bestand)

    Michael Brown is een toegewijde technologieliefhebber met een passie voor het vereenvoudigen van complexe processen met behulp van softwaretools. Met meer dan tien jaar ervaring in de technische industrie heeft hij zijn vaardigheden in Microsoft Excel en Outlook, evenals Google Spreadsheets en Documenten aangescherpt. Michael's blog is gewijd aan het delen van zijn kennis en expertise met anderen, met eenvoudig te volgen tips en tutorials voor het verbeteren van de productiviteit en efficiëntie. Of je nu een doorgewinterde professional of een beginner bent, Michaels blog biedt waardevolle inzichten en praktisch advies om het meeste uit deze essentiële softwaretools te halen.