Innholdsfortegnelse
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 SubUthev 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 SubHvordan 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:
- Åpne arbeidsboken der du vil markere duper.
- Trykk Alt + F11 for å åpne Visual Basic Editor.
- På venstre rute, høyreklikk ThisWorkbook og velg Sett inn > Modul fra hurtigmenyen.
- Lim inn koden i kodevinduet.
- 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:
- I regnearket ditt, velg cellene der du ønsker å markere duplikattekst. Dette kan være ett område eller flere ikke-tilstøtende områder.
- Trykk Alt + F8.
- Velg makroen du er interessert i, og klikk på Kjør .
- 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)