Sadržaj
Udžbenik pokazuje kako istaknuti duplicirane riječi ili tekstualne nizove unutar ćelije pomoću VBA.
Uvjetno oblikovanje programa Excel omogućuje isticanje duplikata na svaki mogući način koji vam padne na pamet: sa ili bez prvog pojavljivanja, u jednom stupcu ili više stupaca, uzastopnim dupliciranim ćelijama i cijelim redovima na temelju identičnih vrijednosti u ključnom stupcu. Ali, kao i obično, postoji "ali". Pravila uvjetnog oblikovanja rade na razini ćelije, a možda ćete htjeti istaknuti duplicirani tekst, a ne cijele ćelije. To se može učiniti samo pomoću makronaredbi. Čak i ako nemate iskustva s VBA, nemojte žuriti sa zatvaranjem ove stranice. Ovdje ćete pronaći primjere koda spremne za korištenje i detaljne upute o tome kako ih koristiti u svojim radnim listovima.
Označite duple riječi u ćeliji zanemarujući velika i mala slova teksta
Ovaj primjer pokazuje kako zasjeniti duplicirane 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, narančasta , NARANČASTA i Narančasta smatraju se istom riječi.
kod makronaredbe je sljedeći:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Unesite graničnik koji razdvaja vrijednosti u ćeliji" , "Razdjelnik" , ", " ) Za svaku ćeliju uApplication.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 (riječi) To UBound (riječi) - 1 riječ = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word = words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Zatim tekst = "" Za indeks = LBound (riječi) U UBound (riječi) tekst = tekst & words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Razdjelnik Next End If Next wordIndex End SubIstakni duplikat teksta u ćeliji osjetljiv na velika i mala slova
U većini situacija skloni smo zanemariti velika slova kada radimo s tekstualnim unosima u Excelu. Pod određenim okolnostima, međutim, bitna je veličina teksta. Na primjer, ako imate posla s 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,upotrijebite 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" , "Razdjelnik" , ", " ) Za svaki 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 riječ 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 (riječi) To UBound ( riječi) - 1 riječ = riječi(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (riječi) If word = words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Zatim tekst = "" Za indeks = LBound (riječi) U UBound (riječi) tekst = tekst & words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Razdjelnik Next End If Next wordIndex End SubKako koristiti makronaredbe za označavanje duplikata riječi u Excelu
Ako ste početnik u korištenju VBA, upute korak po korak u nastavku će vas udobno provesti kroz . Iskusni korisnici mogusamo odaberite vezu za preuzimanje i preskočite ostalo :)
Dodajte kod u svoju radnu knjigu
Počinjete s umetanjem koda makronaredbe u svoju Excel radnu knjigu. Evo kako:
- Otvorite radnu knjigu u kojoj želite istaknuti dupe.
- Pritisnite Alt + F11 da otvorite Visual Basic Editor.
- U lijevom oknu, desnom tipkom miša kliknite ThisWorkbook i odaberite Insert > Module iz kontekstnog izbornika.
- Zalijepite kod u prozor koda.
- Da biste sačuvali makronaredbu za buduću upotrebu, svakako spremite svoju radnu knjigu kao .xlsm datoteku s omogućenom makronaredbom.
Alternativno, možete preuzeti našu oglednu radnu knjigu i pokrenuti makronaredbu iz nje. Uzorak radne knjige sadrži sljedeće makronaredbe:
- HighlightDupesCaseInsensitive - sjenča duplikate unutar ćelije zanemarujući velika i mala slova.
- HighlightDupesCaseSensitive - ističe dupes u ćeliji s obzirom na velika i mala slova.
Za više informacija pogledajte Kako umetnuti VBA kod u Excel.
Pokrenite makronaredbu
S kodom dodano u vašu vlastitu radnu knjigu ili našu oglednu datoteku preuzetu i otvorenu, pokrenite makronaredbu na ovaj način:
- Na svom radnom listu odaberite ćelije u kojima želite istaknuti dvostruki tekst. To može biti jedan raspon ili više raspona koji nisu susjedni.
- Pritisnite Alt + F8 .
- Odaberite makronaredbu od interesa i kliknite Pokreni .
- Makro će od vas tražiti da navedete graničnikkoji razdvaja vrijednosti u odabranim ćelijama. Unaprijed postavljeni razdjelnik (u našem slučaju zarez i razmak) automatski će se pojaviti u polju za unos. Ovisno o vašim potrebama, možete ostaviti zadani razdjelnik ili upisati drugi, a zatim kliknite U redu.
Trenutak kasnije, svi duplicirani nizovi u odabranom ćelije će biti osjenčane crvenom bojom (ili bilo kojom bojom fonta postavljenom u vašem kodu).
Savjet. Za brzo uklanjanje duplikata unutar ćelije, možete upotrijebiti Remove Duplicate Substrings, jedan od mnogih alata za uštedu vremena uključenih u naš Ultimate Suite.
Kako prilagoditi kod svojim potrebama
S ovim napomenama o korištenju i osnovnim poznavanjem VBA (ili samo pomnim praćenjem uputa u nastavku), možete jednostavno modificirati kodove u skladu sa svojim potrebama.
Postavite na isti modul
Kao što možete primijetiti, obje makronaredbe ( HighlightDupesCaseSensitive i HighlightDupesCaseInsensitive ) pozivaju funkciju HighlightDupeWordsInCell . Razlika između dvije gornje makronaredbe je samo u trećem parametru (CaseSensitive) proslijeđenom navedenoj funkciji.
Za pretraživanje osjetljivo na velika i mala slova, postavljeno je na TRUE:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
Za pretraživanje koje ne razlikuje velika i mala slova, postavljeno je na FALSE:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
Da bi makronaredbe radile, kôd funkcije HighlightDupeWordsInCell mora biti postavljen na isti modul kao imakronaredbe.
Razdjelnik
Kada se pokrene, makro će od vas tražiti da navedete razdjelnik koji odvaja riječi/niske u odabranim ćelijama. Zadani razdjelnik je zarez i razmak (", ") i unaprijed je postavljen u okviru za unos:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
U svom kodu možete slobodno koristiti bilo koje druge znakove kao unaprijed definirani graničnik.
Boja
Prema zadanim postavkama, funkcija HighlightDupeWordsInCell sjenča duplikate crvenom bojom fonta. Boja je definirana u ovom retku:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Ovdje je vbRed neka vrsta VBA konstante boje. Za prikaz duplikata u drugoj boji, možete zamijeniti vbRed drugom konstantom kao što je vbGreen, vbYellow, vbBlue, itd. T popis podržanih konstanti boja može se pronaći ovdje.
To je kako istaknuti duple riječi u ćelijama Excela. Zahvaljujem vam na čitanju i nadam se da se vidimo na našem blogu sljedeći tjedan!
Dostupna preuzimanja
Primjeri koda za isticanje duplikata u ćeliji (.xlsm datoteka)
Ultimate Suite 14-dnevna potpuno funkcionalna verzija (.exe datoteka)