Slik markerer du duplisert tekst / ord i Excel-celle

  • Dele Denne
Michael Brown

Opplæringen viser hvordan du fremhever dupliserte ord eller tekststrenger i en celle ved hjelp av VBA.

Excel Conditional Formatting gjør det mulig å fremheve duplikater på alle mulige måter du kan tenke deg: med eller uten første forekomst, i en enkelt kolonne eller flere kolonner, påfølgende dupliserte celler og hele rader basert på identiske verdier i en nøkkelkolonne. Men som vanlig er det et «men». Regler for betinget formatering fungerer på cellenivå mens du kanskje vil fremheve duplisert tekst i stedet for hele celler. Dette kan bare gjøres med makroer. Selv om du ikke har noen erfaring med VBA, vennligst ikke skynd deg å lukke denne siden. Her finner du kodeeksempler som er klare til bruk og detaljerte instruksjoner om hvordan du bruker dem i regnearkene dine.

    Uthev dupliserte ord i en celle og ignorer store og små bokstaver

    Dette eksemplet viser hvordan du skygger dupliserte ord eller tekststrenger i en celle i rød skriftfarge som vist i bildet nedenfor. Vær oppmerksom på at små og store bokstaver behandles som de samme tegnene. For eksempel anses oransje , ORANGE og Oransje å være det samme ordet.

    makroens kode er som følger:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Skriv inn skilletegnet som skiller verdier i en celle" , "Delimiter" , ", " ) For hver celle iApplication.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) Next End Sub Sub HighlightDupeWordsInCell(Cell 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 Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (ord) To UBound (ord) - 1 ord = ord(ordindeks) matchCount = 0 For nesteWordIndex = wordIndex + 1 To UBound (ord) If word = words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Så tekst = "" For Index = LBound (ord) Til UBound (ord) tekst = tekst & words(Index) If (ord(Index) = word) Then Cell.Characters(Len(tekst) - Len(ord) + 1, Len(ord)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Sub

    Uthev duplisert tekst i en celle som skiller mellom store og små bokstaver

    I de fleste situasjoner har vi en tendens til å ignorere store og små bokstaver når vi arbeider med tekstoppføringer i Excel. Under visse omstendigheter har tekstsaken imidlertid betydning. For eksempel, hvis du har å gjøre med IDer, passord eller andre poster av den typen, strengene som 1-AA , 1-aa og 1-Aa er ikke duplikater og skal ikke utheves:

    I dette tilfellet,bruk følgende versjon av koden:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Skriv inn skilletegnet som skiller verdier i en celle" , "Delimiter" , ", " ) For hver Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End Sub Sub HighlightDupeWordsInCell(Cell 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 Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (ord) To UBound ( ord) - 1 ord = ord(ordindeks) matchCount = 0 For nesteWordIndex = wordIndex + 1 To UBound (ord) If word = words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Så tekst = "" For Index = LBound (ord) Til UBound (ord) tekst = tekst & words(Index) If (ord(Index) = word) Then Cell.Characters(Len(tekst) - Len(ord) + 1, Len(ord)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Sub

    Hvordan bruke makroene til å markere duplikatord i Excel

    Hvis du er en nybegynner i bruk av VBA, vil trinnvise instruksjoner nedenfor lede deg gjennom . Erfarne brukere kanbare velg nedlastingslenken og hopp over resten :)

    Legg til koden i arbeidsboken din

    Du starter med å sette inn makroens kode i Excel-arbeidsboken. Slik gjør du:

    1. Åpne arbeidsboken der du vil markere duper.
    2. Trykk Alt + F11 for å åpne Visual Basic Editor.
    3. På venstre rute, høyreklikk ThisWorkbook og velg Sett inn > Modul fra hurtigmenyen.
    4. Lim inn koden i kodevinduet.
    5. For å beholde makroen for fremtidig bruk, sørg for å lagre arbeidsboken som en makroaktivert .xlsm-fil.

    Alternativt kan du laste ned eksempelarbeidsboken vår og kjøre makroen derfra. Eksempelarbeidsboken inneholder følgende makroer:

    • HighlightDupesCaseInsensitive - skygger duplikater i en celle og ignorerer store og små bokstaver.
    • HighlightDupesCaseSensitive - highlights duper i en celle med tanke på store og små bokstaver.

    For mer informasjon, se Hvordan sette inn VBA-kode i Excel.

    Kjør makroen

    Med koden lagt til din egen arbeidsbok eller prøvefilen vår lastet ned og åpnet, kjør makroen på denne måten:

    1. I regnearket ditt, velg cellene der du ønsker å markere duplikattekst. Dette kan være ett område eller flere ikke-tilstøtende områder.
    2. Trykk Alt + F8.
    3. Velg makroen du er interessert i, og klikk på Kjør .

    4. Makroen vil be deg spesifisere skilletegnetsom skiller verdiene i de valgte cellene. Det forhåndsinnstilte skilletegnet (et komma og et mellomrom i vårt tilfelle) vil automatisk vises i inndataboksen. Avhengig av dine behov, kan du la standard skilletegn eller skrive inn et annet, og deretter klikke OK.

    Et øyeblikk senere vil alle dupliserte strenger i de valgte celler vil være skyggelagt i rød farge (eller hvilken skriftfarge som er angitt i koden din).

    Tips. For raskt å fjerne duplikater i en celle, kan du bruke Remove Duplicate Substrings, et av mange tidsbesparende verktøy inkludert i Ultimate Suite.

    Hvordan justere koden etter dine behov

    Med disse bruksnotatene og den helt grunnleggende kunnskapen om VBA (eller bare følge instruksjonene nedenfor), kan du enkelt endre kodene i nøyaktig samsvar med dine behov.

    Plasser på samme modul

    Som du kanskje legger merke til, kaller begge makroene ( HighlightDupesCaseSensitive og HighlightDupesCaseInsensitive ) funksjonen HighlightDupeWordsInCell . Forskjellen mellom de to makroene ovenfor er kun i den tredje parameteren (CaseSensitive) som sendes til nevnte funksjon.

    For store og små bokstaver settes den til TRUE:

    Call HighlightDupeWordsInCell(Cell, Delimiter, True)

    For søk som ikke skiller mellom store og små bokstaver, er den satt til FALSE:

    Call HighlightDupeWordsInCell(Cell, Delimiter, False)

    For at makroene skal fungere, må koden til HighlightDupeWordsInCell -funksjonen plasseres på samme modul sommakroer.

    Delimiter

    Når den kjøres, vil makroen be deg spesifisere skilletegnet som skiller ord/strenger i de valgte cellene. Standard avgrensningstegn er et komma og et mellomrom (", "), og det er forhåndsinnstilt i inngangsboksen:

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

    I koden din kan du fritt bruke andre tegn(er) som forhåndsdefinert skilletegn.

    Farge

    Som standard er HighlightDupeWordsInCell funksjonen nyansert i rød skriftfarge. Fargen er definert i denne linjen:

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

    Her er vbRed en slags VBA-fargekonstant. For å vise duper i en annen farge, kan du erstatte vbRed med en annen konstant som vbGreen, vbYellow, vbBlue, etc. T listen over støttede fargekonstanter finner du her.

    Det er hvordan du fremhever dupliserte ord i Excel-celler. Jeg takker for at du leser og håper å se deg på bloggen vår neste uke!

    Tilgjengelige nedlastinger

    Kodeeksempler for å fremheve duplikater i en celle (.xlsm-fil)

    Ultimate Suite 14-dagers fullt funksjonell versjon (.exe-fil)

    Michael Brown er en dedikert teknologientusiast med en lidenskap for å forenkle komplekse prosesser ved hjelp av programvareverktøy. Med mer enn ti års erfaring i teknologibransjen, har han forbedret ferdighetene sine i Microsoft Excel og Outlook, samt Google Sheets og Docs. Michaels blogg er dedikert til å dele sin kunnskap og ekspertise med andre, og gir enkle å følge tips og veiledninger for å forbedre produktivitet og effektivitet. Enten du er en erfaren profesjonell eller nybegynner, tilbyr Michaels blogg verdifull innsikt og praktiske råd for å få mest mulig ut av disse viktige programvareverktøyene.