Sadržaj
Vodič pokazuje kako istaknuti duplikate riječi ili tekstualne nizove unutar ćelije pomoću VBA.
Excel uvjetno oblikovanje omogućava isticanje duplikata na svaki mogući način koji vam padne na pamet: sa ili bez 1. pojavljivanja, u jednoj koloni ili više kolona, uzastopnih duplikata ćelija i cijelih redova na osnovu identičnih vrijednosti u ključnoj koloni. Ali, kao i obično, postoji "ali". Pravila uslovnog oblikovanja rade na nivou ćelije, a možda ćete želeti da istaknete duplikat teksta, a ne cele ćelije. Ovo se može uraditi samo sa makroima. Čak i ako nemate iskustva sa VBA, nemojte žuriti da zatvorite ovu stranicu. Ovdje ćete pronaći primjere kodova spremne za korištenje i detaljna uputstva o tome kako ih koristiti u svojim radnim listovima.
Označite duple riječi u ćeliji zanemarujući velika i mala slova
Ovaj primjer pokazuje kako zasjeniti duple riječi ili tekstualne nizove unutar ćelije crvenom bojom fonta kao što je prikazano na slici ispod. Imajte na umu da se mala i velika slova tretiraju kao isti znakovi. Na primjer, orange , ORANGE i Orange se smatraju istom riječju.
The kod makroa je sljedeći:
Public Sub HighlightDupesCaseInsensitive() Zatamni ćeliju kao opseg Zatamniti graničnik kao string Delimiter = InputBox( "Unesite graničnik koji razdvaja vrijednosti u ćeliji" , "Razgraničivač" , ", " ) Za svaku ćeliju uApplication.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) Sljedeći kraj Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Opcijski osjetljiv na velika i mala slova kao Boolean = True ) Zatamnjen tekst Kao String Dim riječi () Niz Dim wordIndex, matchCount, positionInText kao cijeli broj ako je osjetljiv na velika i mala slova Tada riječi = Split(Vrijednost ćelije, graničnik) Ostale riječi = Split(LCase(Cell.Value), graničnik) Kraj ako Za indeks riječi = LBound (riječi) Na UBound (riječi) - 1 word = words(wordIndex) matchCount = 0 Za nextWordIndex = wordIndex + 1 Za UBound (reči) Ako je riječ = riječi(nextWordIndex) Tada matchCount = matchCount + 1 End Ako je Next nextWordIndex Ako matchCount > 0 Zatim tekst = "" Za indeks = LBound (riječi) do UBound (riječi) text = text & riječi(Indeks) Ako (riječi(Indeks) = riječ) Tada Ćelija.Znakovi(Len(tekst) - Len(riječ) + 1, Len(riječ)).Font.Boja = vbRed Kraj Ako je tekst = tekst & Razgraničenje Sljedeći kraj Ako Sljedeća wordIndex End SubOznačite duplikat teksta u ćeliji osjetljiv na velika i mala slova
U većini situacija imamo tendenciju da zanemarimo velika i mala slova kada radimo s unosima teksta u Excelu. Pod određenim okolnostima, međutim, slučaj teksta je važan. Na primjer, ako imate posla sa ID-ovima, lozinkama ili drugim zapisima te vrste, nizovi kao što su 1-AA , 1-aa i 1-Aa nisu duplikati i ne bi trebali biti istaknuti:
U ovom slučaju,koristite sljedeću verziju koda:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Unesite graničnik koji razdvaja vrijednosti u ćeliji" , "Delimiter" , ", " ) Za svaku Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Opciono osjetljiv na velika i mala slova kao Boolean = True ) Dim text () Kao String Dim riječi word As String Dim wordIndex, matchCount, positionInText Kao cijeli broj Ako je osjetljiv na velika i mala slova Tada riječi = Split(Vrijednost ćelije, graničnik) Ostale riječi = Split(LCase(Cell.Value), graničnik) End If For wordIndex = LBound (riječi) To UBound ( riječi) - 1 riječ = riječi(indeks riječi) matchCount = 0 Za sljedećiIndex riječi = indeks riječi + 1 do UBound (riječi) Ako je riječ = riječi(nextWordIndex) Onda matchCount = matchCount + 1 End Ako sljedeći sljedećiWordIndex Ako matchCount > 0 Zatim tekst = "" Za indeks = LBound (riječi) do UBound (riječi) text = text & riječi(Indeks) Ako (riječi(Indeks) = riječ) Tada Ćelija.Znakovi(Len(tekst) - Len(riječ) + 1, Len(riječ)).Font.Boja = vbRed Kraj Ako je tekst = tekst & Razdjelnik Sljedeći kraj Ako Sljedeća wordIndex End SubKako koristiti makroe za isticanje duplikata riječi u Excelu
Ako ste početnik u korištenju VBA, donje upute korak po korak će vas udobno provesti kroz . Iskusni korisnici mogusamo odaberite vezu za preuzimanje i preskočite ostatak :)
Dodajte kod u svoju radnu svesku
Počinjete s umetanjem koda makroa u vašu Excel radnu knjigu. Evo kako:
- Otvorite radnu knjigu u kojoj želite da označite lažne stvari.
- Pritisnite Alt + F11 da otvorite Visual Basic Editor.
- U lijevom oknu, desnom tipkom miša kliknite Ova radna knjiga i odaberite Insert > Module iz kontekstnog izbornika.
- Zalijepite kod u prozor koda.
- Da biste zadržali makro za buduću upotrebu, obavezno sačuvajte svoju radnu knjigu kao .xlsm datoteku s omogućenom makronaredbom.
Alternativno, možete preuzeti naš primjer radne knjige i pokrenuti makro odatle. Uzorak radne knjige sadrži sljedeće makroe:
- HighlightDupesCaseInsensitive - nijanse duplikata unutar ćelije zanemarujući velika slova.
- HighlightDupesCaseSensitive - isticanje dupes u ćeliji s obzirom na velika slova.
Za više informacija, pogledajte Kako umetnuti VBA kod u Excel.
Pokrenite makro
Sa kodom dodali u vašu radnu svesku ili naš uzorak datoteke preuzete i otvorene, pokrenite makro na ovaj način:
- U svom radnom listu odaberite ćelije u kojima želite da istaknete duplirani tekst. To može biti jedan raspon ili više nesusjednih raspona.
- Pritisnite Alt + F8 .
- Odaberite makro koji vas zanima i kliknite Pokreni .
- Makro će od vas tražiti da navedete graničnikkoji razdvaja vrijednosti u odabranim ćelijama. Unaprijed postavljeni graničnik (zarez i razmak u našem slučaju) će se automatski pojaviti u polju za unos. Ovisno o vašim potrebama, možete ostaviti zadani graničnik ili upisati drugi, a zatim kliknuti OK.
Trenutak kasnije, svi duplirani nizovi u odabranom ćelije će biti zasjenjene crvenom bojom (ili bilo kojom drugom bojom fonta koja je postavljena u vašem kodu).
Savjet. Da biste brzo uklonili duplikate unutar ćelije, možete koristiti Remove Duplicate Substrings, jedan od mnogih alata za uštedu vremena uključenih u naš Ultimate Suite.
Kako prilagoditi kod svojim potrebama
Sa ovim napomenama o upotrebi i vrlo osnovnim znanjem o VBA (ili samo pomno slijedeći upute u nastavku), možete lako modificirati kodove u skladu sa vašim potrebama.
Postavite na isti modul
Kao što možete primijetiti, oba makroa ( HighlightDupesCaseSensitive i HighlightDupesCaseInsensitive ) pozivaju funkciju HighlightDupeWordsInCell . Razlika između gornja dva makroa je samo u 3. parametru (CaseSensitive) koji je proslijeđen navedenoj funkciji.
Za pretraživanje osjetljivo na velika i mala slova, postavljeno je na TRUE:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
Za pretraživanje bez obzira na velika i mala slova, postavljeno je na FALSE:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
Da bi makroi funkcionirali, kod funkcije HighlightDupeWordsInCell mora biti postavljen na isti modul kao imakroi.
Razgranič
Kada se pokrene, makro će od vas tražiti da navedete graničnik koji razdvaja riječi/nizove u odabranim ćelijama. Zadani graničnik je zarez i razmak (", ") i unaprijed je postavljen u InputBoxu:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
U vašem kodu možete slobodno koristiti bilo koji drugi znak(e) kao unaprijed definirani graničnik.
Boja
Podrazumevano, funkcija HighlightDupeWordsInCell zasjenjuje duplikate u crvenoj boji fonta. Boja je definisana u ovom redu:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Ovde je vbRed neka vrsta VBA konstante boje. Za prikaz dupes u drugoj boji, možete zamijeniti vbRed sa drugom konstantom kao što je vbGreen, vbYellow, vbBlue, itd. T listu podržanih konstanti boja možete pronaći ovdje.
To je kako istaknuti duplicirane riječi u Excel ćelijama. Zahvaljujem vam na čitanju i nadam se da se vidimo na našem blogu sljedeće sedmice!
Dostupna preuzimanja
Primjeri kodova za isticanje duplikata u ćeliji (.xlsm datoteka)
Ultimate Kompletna 14-dnevna potpuno funkcionalna verzija (.exe datoteka)