Kazalo
V učbeniku je prikazano, kako s programom VBA označite podvojene besede ali besedilne nize v celici.
Excelovo pogojno oblikovanje omogoča poudarjanje podvojitev na vse možne načine, ki si jih lahko zamislite: s 1. pojavitvijo ali brez nje, v enem stolpcu ali več stolpcih, zaporedne podvojene celice in celotne vrstice na podlagi enakih vrednosti v ključnem stolpcu. Kot običajno pa obstaja "ampak". Pravila pogojnega oblikovanja delujejo na ravni celic, medtem ko boste morda želeli poudariti podvojenebesedilo in ne celotne celice. To lahko storite le z makri. Tudi če nimate izkušenj z VBA, ne hitite zapreti te strani. Tu boste našli primere kode, pripravljene za uporabo, in podrobna navodila za njihovo uporabo v delovnih listih.
Označite podvojene besede v celici, pri čemer ne upoštevate velikosti besedila
Ta primer prikazuje, kako podvojene besede ali besedilne nize v celici obarvati z rdečo barvo pisave, kot je prikazano na spodnji sliki. Upoštevajte, da so male in velike črke obravnavane kot enaki znaki. Na primer, oranžna , ORANŽNA in . Oranžna se štejejo za isto besedo.
Koda makra je naslednja:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Vnesite ločilo, ki ločuje vrednosti v celici" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = 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 (words) To UBound (words) - 1 word = 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 Then text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End SubOznačite podvojeno besedilo v celici, ki je občutljivo na velikost črk
V večini primerov pri delu z besedilnimi zapisi v Excelu ne upoštevamo velikosti črk. V določenih okoliščinah pa je velikost besedila pomembna. Če imate na primer opravka z ID-ji, gesli ali drugimi tovrstnimi zapisi, se nizi, kot so 1-AA , 1-aa in . 1-Aa se ne podvajajo in jih ni treba poudarjati:
V tem primeru uporabite naslednjo različico kode:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Vnesite ločilo, ki ločuje vrednosti v celici" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = 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 (words) To UBound (words) - 1 word = 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 Then text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End SubKako uporabljati makre za označevanje podvojenih besed v Excelu
Če ste začetnik pri uporabi VBA, vas bodo spodnja navodila po korakih udobno vodila skozi. Izkušeni uporabniki lahko preprosto izberejo povezavo za prenos in preskočijo vse ostalo :)
Dodajte kodo v delovni zvezek
Najprej vstavite kodo makra v delovni zvezek programa Excel:
- Odprite delovni zvezek, v katerem želite označiti podvojitve.
- Pritisnite Alt + F11, da odprete urejevalnik Visual Basic.
- V levem podoknu z desno tipko miške kliknite Ta delovna knjiga in izberite Vstavite > Modul iz kontekstnega menija.
- Kodo prilepite v okno Koda.
- Če želite ohraniti makro za nadaljnjo uporabo, delovno knjižico shranite kot datoteko .xlsm z omogočenim makrom.
Lahko pa prenesete naš vzorčni delovni zvezek in makro zaženete iz njega. Vzorčni delovni zvezek vsebuje naslednje makroje:
- HighlightDupesCaseInsensitive - odstira podvojitve v celici, pri čemer ne upošteva velikosti črk.
- HighlightDupesCaseSensitive - izpostavi dvojnike v celici, pri čemer upošteva velikost črk.
Za več informacij glejte Kako vstaviti kodo VBA v Excel.
Zaženi makro
Ko je koda dodana v vaš delovni zvezek ali ko je prenesena in odprta naša vzorčna datoteka, zaženite makro na ta način:
- V delovnem listu izberite celice, v katerih želite označiti podvojeno besedilo. To je lahko en razpon ali več nesorodnih razponov.
- Pritisnite Alt + F8 .
- Izberite makro, ki vas zanima, in kliknite Spustite . Poglej tudi: Funkcija Excel LEN: štetje znakov v celici
- Makro vas bo prosil, da določite ločilo, ki ločuje vrednosti v izbranih celicah. Prednastavljeno ločilo (v našem primeru vejica in presledek) se bo samodejno prikazalo v vnosnem polju. Glede na svoje potrebe lahko pustite privzeto ločilo ali vnesete drugo, nato pa kliknite V redu.
Čez trenutek bodo vsi podvojeni nizi v izbranih celicah osenčeni z rdečo barvo (ali katero koli barvo pisave, ki je nastavljena v vaši kodi).
Nasvet. Če želite hitro odstranite podvojitve v celici, lahko uporabite program Odstrani podvojene podrejene nize, ki je eno od številnih orodij za prihranek časa, vključenih v naš paket Ultimate Suite.
Kako prilagoditi kodo svojim potrebam
S temi navodili za uporabo in zelo osnovnim znanjem VBA (ali samo z natančnim upoštevanjem spodnjih navodil) lahko kode preprosto spremenite v skladu s svojimi potrebami.
Postavite v isti modul
Kot ste morda opazili, sta oba makra ( HighlightDupesCaseSensitive in . HighlightDupesCaseInsensitive ) pokličite HighlightDupeWordsInCell Razlika med zgornjima dvema makroma je le v tretjem parametru (CaseSensitive), ki se posreduje omenjeni funkciji.
Za iskanje, ki upošteva velikost črk, je nastavljena na TRUE:
Pokličite HighlightDupeWordsInCell(Cell, Delimiter, True)
Za iskanje brez upoštevanja velikosti črk je nastavljena na FALSE:
Pokličite HighlightDupeWordsInCell(Cell, Delimiter, False)
Da bi makri delovali, mora biti koda HighlightDupeWordsInCell mora biti nameščena v istem modulu kot makri.
Razmejitev
Ob zagonu bo makro zahteval, da določite ločilo, ki ločuje besede/revije v izbranih celicah. Privzeto ločilo je vejica in presledek (", ") in je prednastavljeno v vnosnem polju:
Delimiter = InputBox("Določite ločilo, ki ločuje vrednosti v celici", "Delimiter", ", ")
V kodi lahko kot vnaprej določen ločilnik uporabite kateri koli drug znak ali znake.
Barva
Privzeto je HighlightDupeWordsInCell funkcija obarva podvojitve z rdečo barvo pisave. Barva je določena v tej vrstici:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
V tem primeru je vbRed nekakšna barvna konstanta VBA. Če želite dvojnike prikazati v drugi barvi, lahko vbRed nadomestite z drugo konstanto, na primer vbGreen ali vbYellow, vbBlue itd. T seznam podprtih barvnih konstant najdete tukaj.
To je način za označevanje podvojenih besed v celicah programa Excel. Zahvaljujem se vam za branje in upam, da se naslednji teden vidimo na našem blogu!
Razpoložljivi prenosi
Primeri kode za označevanje podvojitev v celici (.xlsm datoteka)
Ultimate Suite 14-dnevna popolnoma funkcionalna različica (.exe datoteka)