Ynhâldsopjefte
De tutorial lit sjen hoe't jo dûbele wurden of teksttekens binnen in sel markearje kinne mei VBA.
Excel Conditional Formatting makket it mooglik om duplikaten op alle mooglike manieren te markearjen wêr't jo oan kinne betinke: mei of sûnder 1e foarfallen, yn ien kolom of meardere kolommen, opienfolgjende dûbele sellen, en hiele rigen basearre op identike wearden yn in kaai kolom. Mar, lykas gewoanlik, is der in "mar". Regels foar betingsten opmaak wurkje op selnivo, wylst jo dûbele tekst miskien wolle markearje ynstee fan folsleine sellen. Dit kin allinich dien wurde mei makro's. Sels as jo gjin ûnderfining hawwe mei VBA, haast asjebleaft net om dizze side te sluten. Hjir fine jo klearebare koadefoarbylden en de detaillearre ynstruksjes oer hoe't jo se kinne brûke yn jo wurkblêden.
Markearje dûbele wurden yn in sel mei negearjen fan tekstfallen
Dit foarbyld lit sjen hoe't jo dûbele wurden of tekststrings binnen in sel yn in reade lettertypekleur skaadje kinne lykas werjûn yn 'e ôfbylding hjirûnder. Tink derom dat lytse en haadletters wurde behannele as deselde karakters. Bygelyks, oranje , oranje en oranje wurde beskôge as itselde wurd.
De macro's code is as follows:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Fier de delimiter yn dy't wearden skiedt yn in sel" , "Delimiter" , ", " ) Foar elke sel ynApplication.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 (wurden) To UBound (wurden) - 1 wurd = wurden (wordIndex) matchCount = 0 Foar nextWordIndex = wordIndex + 1 To UBound (wurden) As wurd = wurden (nextWordIndex) Dan matchCount = matchCount + 1 Ein As Folgjende nextWordIndex As matchCount & GT; 0 Dan tekst = "" Foar Index = LBound (wurden) To UBound (wurden) tekst = tekst & amp; wurden (yndeks) As (wurden (yndeks) = wurd) Dan Cell.Characters (Len (tekst) - Len (wurd) + 1, Len (wurd)).Font.Color = vbRed End As tekst = tekst & amp; Delimiter Folgjende Ein As Folgjende wurdIndex End SubMarkearje dûbele tekst yn in sel haadlettergefoelich
Yn 'e measte situaasjes negearje wy de letterkast as wy wurkje mei tekstyngongen yn Excel. Under beskate omstannichheden docht de tekstsaak lykwols wol ta. As jo bygelyks te krijen hawwe mei ID's, wachtwurden, of oare records fan dat soarte, binne de snaren lykas 1-AA , 1-aa en 1-Aa binne gjin duplikaten en moatte net markearre wurde:
Yn dit gefal,brûk de folgjende ferzje fan de koade:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Fier de delimiter yn dy't wearden skiedt yn in sel" , "Delimiter" , ", " ) Foar elk 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 wurd As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then wurden = Split(Cell.Value, Delimiter) Oare wurden = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (wurden) To UBound ( wurden) - 1 wurd = wurden (wordIndex) matchCount = 0 Foar nextWordIndex = wordIndex + 1 To UBound (wurden) As wurd = wurden (nextWordIndex) Dan matchCount = matchCount + 1 Ein As Folgjende nextWordIndex As matchCount & GT; 0 Dan tekst = "" Foar Index = LBound (wurden) To UBound (wurden) tekst = tekst & amp; wurden (yndeks) As (wurden (yndeks) = wurd) Dan Cell.Characters (Len (tekst) - Len (wurd) + 1, Len (wurd)).Font.Color = vbRed End As tekst = tekst & amp; Delimiter Next End If Next wordIndex End SubHoe kinne jo de makro's brûke om duplikaatwurden yn Excel te markearjen
As jo in begjinner binne yn it brûken fan VBA, sille de hjirûnder stap-foar-stap ynstruksjes jo noflik trochrinne . Erfarne brûkers kinnekies gewoan de downloadkeppeling en sla de rest oer :)
Foegje de koade ta oan jo wurkboek
Jo begjinne mei it ynfoegjen fan de koade fan 'e makro yn jo Excel-wurkboek. Hjir is hoe:
- Iepenje it wurkboek wêr't jo dupes markearje wolle.
- Druk op Alt + F11 om de Visual Basic Editor te iepenjen.
- Op it linker paniel, Rjochtsklik op ThisWorkbook en selektearje Ynfoegje > Module út it kontekstmenu.
- Plak de koade yn it Koadefinster.
- Om de makro te hâlden foar takomstich gebrûk, wês wis dat jo jo wurkboek opslaan as in makro-ynskeakele .xlsm-bestân.
Alternatyf kinne jo ús foarbyldwurkboek downloade en de makro dêrwei útfiere. It foarbyldwurkboek befettet de folgjende makro's:
- HighlightDupesCaseInsensitive - skadet duplikaten binnen in sel mei it negearjen fan de letter-case.
- HighlightDupesCaseSensitive - highlights dupes yn in sel sjoen it letterfalle.
Sjoch foar mear ynformaasje Hoe VBA-koade ynfoegje yn Excel.
De makro útfiere
Mei de koade tafoege oan jo eigen wurkboek of ús foarbyldbestân ynladen en iepen, fier de makro op dizze manier:
- Selektearje yn jo wurkblêd de sellen wêr't jo dûbele tekst wolle markearje. Dit kin ien berik wêze of meardere net-oangrinzjende berikken.
- Druk op Alt + F8 .
- Selektearje de makro fan belang en klik op Utfiere .
- De makro sil jo freegje om it skiedingsteken op te jaandat skiedt de wearden yn de selektearre sellen. De foarôf ynstelde skiedingsteken (in komma en in spaasje yn ús gefal) sil automatysk ferskine yn it ynfierfak. Ofhinklik fan jo behoeften kinne jo it standert skiedingsteken ferlitte of in oare typearje, en klikje dan op OK.
Ein momint letter, alle dûbele stringen yn 'e selektearre sellen wurde skaad yn reade kleur (of hokker lettertype kleur is ynsteld yn jo koade).
Tip. Om fluch duplikaten te ferwiderjen binnen in sel, kinne jo Duplicate Substrings fuortsmite, ien fan in protte tiidbesparjende ark opnommen yn ús Ultimate Suite.
Hoe kinne jo de koade oanpasse foar jo behoeften
Mei dizze gebrûksnotysjes en de heule basiskennis fan VBA (of gewoan de folgjende ynstruksjes nau folgje), kinne jo de koades maklik oanpasse yn krekte oerienstimming mei jo behoeften.
Plaze op deselde module
Sa't jo miskien merke kinne, neame beide makro's ( HighlightDupesCaseSensitive en HighlightDupesCaseInsensitive ) de HighlightDupeWordsInCell funksje. It ferskil tusken de twa makro's hjirboppe is allinnich yn de 3e parameter (CaseSensitive) trochjûn oan de neamde funksje.
Foar haadlettergefoelige sykjen is it ynsteld op TRUE:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
Foar haadletter-ûngefoelige sykjen is it ynsteld op FALSE:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
Om de makro's te wurkjen, moat de koade fan de funksje HighlightDupeWordsInCell pleatst wurde op deselde module as demakro's.
Delimiter
As it útfiert, sil de makro jo freegje om it skiedingsteken oan te jaan dat wurden/strings skiedt yn de selektearre sellen. It standert skiedingsteken is in komma en in spaasje (", ") en it is foarôf ynsteld yn it ynfierfak:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
Yn jo koade binne jo frij om alle oare tekens te brûken. as it foarôf definieare skiedingsteken.
Kleur
Standert is de HighlightDupeWordsInCell funksje duplikaat yn reade lettertypekleur. De kleur is definiearre yn dizze rigel:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Hjir is vbRed in soarte fan VBA-kleurkonstante. Om dupes yn in oare kleur wer te jaan, kinne jo vbRed ferfange troch in oare konstante lykas vbGreen, vbYellow, vbBlue, ensfh. T hy list mei stipe kleurkonstanten is hjir te finen.
Dat is hoe't jo dûbele wurden yn Excel-sellen markearje. Ik tankje jo foar it lêzen en hoopje jo nije wike op ús blog te sjen!
Beskikbere downloads
Koadefoarbylden om duplikaten te markearjen yn in sel (.xlsm-bestân)
Ultimate Suite 14-dagen folslein funksjonele ferzje (.exe-bestân)