Hoe om duplikaatteks / woorde in Excel-sel uit te lig

  • Deel Dit
Michael Brown

Die tutoriaal wys hoe om duplikaatwoorde of teksstringe binne 'n sel uit te lig met VBA.

Excel Conditional Formatting maak dit moontlik om duplikate op elke moontlike manier waaraan jy kan dink, uit te lig: met of sonder 1ste voorkomste, in 'n enkele kolom of veelvuldige kolomme, opeenvolgende duplikaatselle en hele rye gebaseer op identiese waardes in 'n sleutelkolom. Maar soos gewoonlik is daar 'n "maar". Voorwaardelike formateringreëls werk op 'n selvlak terwyl jy dalk duplikaatteks eerder as hele selle wil uitlig. Dit kan slegs met makros gedoen word. Selfs as jy geen ondervinding met VBA het nie, moet asseblief nie haastig wees om hierdie bladsy te sluit nie. Hier sal jy gereed-vir-gebruik kode-voorbeelde en die gedetailleerde instruksies oor hoe om dit in jou werkblaaie te gebruik vind.

    Merk duplikaatwoorde in 'n sel en ignoreer teksletters

    Hierdie voorbeeld wys hoe om duplikaatwoorde of teksstringe binne 'n sel in rooi fontkleur te skaker soos in die prent hieronder. Let asseblief daarop dat kleinletters en hoofletters as dieselfde karakters hanteer word. Byvoorbeeld, oranje , ORANGE en Oranje word geag dieselfde woord te wees.

    Die makro se kode is soos volg:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Voer die skeidingsteken in wat waardes in 'n sel skei" , "Delimiter" , ", " ) Vir elke sel inApplication.Selectie Oproep HighlightDupeWordsInCell(Sel, Delimiter, False ) Next End Sub Sub HighlightDupeWordsInCell(Sell As Range, Optional Delimiter As String = " " , Optional CaseSensitive As Boolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Heelgetal Indien Hooflettergevoelig Dan word woorde = Split(Sel.Waarde, Delimiter) Ander woorde = Split(LCase(Cell.Value), Delimiter) Einde If For wordIndex = LBound (woorde) Om UBound (woorde) - 1 woord = woorde(wordIndex) matchCount = 0 Vir volgendeWordIndex = wordIndex + 1 Om UBound (woorde) As woord = woorde(nextWordIndex) Dan matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Dan teks = "" Vir Indeks = LGebonde (woorde) Om UBound (woorde) teks = teks & woorde(Indeks) As (woorde(Indeks) = woord) Dan Sel.Karakters(Len(teks) - Len(woord) + 1, Len(woord)).Font.Kleur = vbRooi Einde As teks = teks & Delimiter Next End If Next wordIndex End Sub

    Hoog duplikaatteks in 'n sel hooflettergevoelig

    In die meeste situasies is ons geneig om die letterkas te ignoreer wanneer ons met teksinskrywings in Excel werk. Onder sekere omstandighede maak die tekssaak egter wel saak. As jy byvoorbeeld te doen het met ID's, wagwoorde of ander rekords van daardie soort, die stringe soos 1-AA , 1-aa en 1-Aa is nie duplikate nie en moet nie uitgelig word nie:

    In hierdie geval,gebruik die volgende weergawe van die kode:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Voer die skeidingsteken in wat waardes in 'n sel skei" , "Delimiter" , ", " ) Vir elke Sel In Toepassing.Seleksie-oproep HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End Sub HighlightDupeWordsInCell(Sell As Range, Optional Delimiter As String = " " , Optional CaseSensitive As Boolean = True ) Dim text As String Dim words() As String Dim words() As String woord As String Dim wordIndex, matchCount, PosisieInTeks As Heelgetal Indien Hooflettergevoelig Dan woorde = Split(Sel.Waarde, Delimiter) Ander woorde = Split(LCase(Cell.Value), Delimiter) Einde As For wordIndex = LBound (woorde) Om UBound ( woorde) - 1 woord = woorde(wordIndex) matchCount = 0 Vir volgendeWordIndex = wordIndex + 1 Om UBound (woorde) As woord = woorde(nextWordIndex) Dan matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Dan teks = "" Vir Indeks = LGebonde (woorde) Om UBound (woorde) teks = teks & woorde(Indeks) As (woorde(Indeks) = woord) Dan Sel.Karakters(Len(teks) - Len(woord) + 1, Len(woord)).Font.Kleur = vbRooi Einde As teks = teks & Delimiter Next End If Next wordIndex End Sub

    Hoe om die makro's te gebruik om duplikate woorde in Excel uit te lig

    As jy 'n beginner is in die gebruik van VBA, sal die onderstaande stap-vir-stap-instruksies jou gemaklik deurloop . Ervare gebruikers magkies net die aflaai skakel en slaan die res oor :)

    Voeg die kode by jou werkboek

    Jy begin met die invoeging van die makro se kode in jou Excel werkboek. Dit is hoe:

    1. Maak die werkboek oop waar jy dupes wil uitlig.
    2. Druk Alt + F11 om die Visual Basic Editor oop te maak.
    3. Op die linkerpaneel, regskliek ThisWorkbook en kies Voeg in > Module uit die kontekskieslys.
    4. Plak die kode in die Kode-venster.
    5. Om die makro te hou vir toekomstige gebruik, maak seker dat jy jou werkboek stoor as 'n makro-geaktiveerde .xlsm-lêer.

    Alternatiewelik kan jy ons voorbeeldwerkboek aflaai en die makro van daar af laat loop. Die voorbeeldwerkboek bevat die volgende makro's:

    • HighlightDupesCaseInsensitive - kleur duplikate binne 'n sel en ignoreer die letterkas.
    • HighlightDupesCaseSensitive - hoogtepunte dupes in 'n sel met inagneming van die letterkas.

    Vir meer inligting, sien asseblief Hoe om VBA-kode in Excel in te voeg.

    Laat die makro uitvoer

    Met die kode gevoeg by jou eie werkboek of ons voorbeeldlêer wat afgelaai en oopgemaak is, hardloop die makro op hierdie manier:

    1. Kies in jou werkblad die selle waar jy duplikaatteks wil uitlig. Dit kan een reeks of veelvuldige nie-aangrensende reekse wees.
    2. Druk Alt + F8 .
    3. Kies die makro van belang en klik Run .

    4. Die makro sal jou vra om die skeidingsteken te spesifiseerwat die waardes in die geselekteerde selle skei. Die voorafbepaalde skeidingsteken ('n komma en 'n spasie in ons geval) sal outomaties in die invoerkassie verskyn. Afhangende van jou behoeftes, kan jy die verstek skeidingsteken los of 'n ander een tik, en dan OK klik.

    'n Oomblik later, alle duplikaatstringe in die geselekteerde selle sal in rooi geskakeer word (of watter lettertipekleur ook al in jou kode gestel is).

    Wenk. Om duplikate vinnig te verwyder binne 'n sel, kan jy Verwyder duplikaat substringe gebruik, een van baie tydbesparende nutsgoed wat in ons Ultimate Suite ingesluit is.

    Hoe om die kode vir jou behoeftes aan te pas

    Met hierdie gebruiksnotas en die baie basiese kennis van VBA (of net die onderstaande instruksies noukeurig volg), kan jy die kodes maklik in presiese ooreenstemming met jou behoeftes verander.

    Plaas op dieselfde module

    Soos jy dalk opmerk, roep beide makro's ( HighlightDupesCaseSensitive en HighlightDupesCaseInsensitive ) die HighlightDupeWordsInCell funksie. Die verskil tussen die twee makro's hierbo is slegs in die 3de parameter (CaseSensitive) wat na die genoemde funksie oorgedra word.

    Vir hooflettergevoelige soektog is dit op TRUE gestel:

    Call HighlightDupeWordsInCell(Cell, Delimiter, True)

    Vir hoofletter-onsensitiewe soektog is dit gestel op ONWAAR:

    Call HighlightDupeWordsInCell(Cell, Delimiter, False)

    Vir die makro's om te werk, moet die kode van die HighlightDupeWordsInCell -funksie op geplaas word dieselfde module as diemakro's.

    Delimiter

    Wanneer dit uitgevoer word, sal die makro jou vra om die afbakener te spesifiseer wat woorde/stringe in die geselekteerde selle skei. Die verstek skeidingsteken is 'n komma en 'n spasie (", ") en dit is vooraf ingestel in die invoerkassie:

    Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")

    In jou kode is jy vry om enige ander karakter(s) te gebruik. as die voorafbepaalde skeidingsteken.

    Kleur

    By verstek word die HighlightDupeWordsInCell funksie gedupliseer in rooi fontkleur. Die kleur word in hierdie reël gedefinieer:

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

    Hier is vbRed 'n soort VBA-kleurkonstante. Om dupes in 'n ander kleur te vertoon, kan jy vbRed vervang met 'n ander konstante soos vbGreen, vbYellow, vbBlue, ens. D die lys van ondersteunde kleurkonstantes kan hier gevind word.

    Dit is hoe om duplikaatwoorde in Excel-selle uit te lig. Ek bedank jou vir die lees en hoop om jou volgende week op ons blog te sien!

    Beskikbare aflaaie

    Kodevoorbeelde om duplikate in 'n sel uit te lig (.xlsm-lêer)

    Uitmate Suite 14-dae ten volle funksionele weergawe (.exe-lêer)

    Michael Brown is 'n toegewyde tegnologie-entoesias met 'n passie om komplekse prosesse te vereenvoudig deur sagteware-instrumente te gebruik. Met meer as 'n dekade se ondervinding in die tegnologiebedryf, het hy sy vaardighede in Microsoft Excel en Outlook, sowel as Google Sheets en Docs, opgeskerp. Michael se blog is toegewy daaraan om sy kennis en kundigheid met ander te deel, en verskaf maklik-om-te volg wenke en tutoriale vir die verbetering van produktiwiteit en doeltreffendheid. Of jy nou 'n ervare professionele persoon of 'n beginner is, Michael se blog bied waardevolle insigte en praktiese raad om die meeste uit hierdie noodsaaklike sagteware-nutsmiddels te kry.