Sisukord
Õpetus näitab, kuidas VBA abil esile tõsta dubleeritud sõnu või tekstisõnu lahtris.
Exceli tingimuslik vormindamine võimaldab esile tõsta dubleeringuid igal võimalikul viisil, mida te suudate välja mõelda: 1. esinemisega või ilma, ühes või mitmes veerus, järjestikuste dubleerivate lahtrite ja tervete ridade puhul, mis põhinevad võtmesarjas olevatel identsetel väärtustel. Kuid, nagu tavaliselt, on olemas "aga". Tingimusliku vormindamise reeglid töötavad lahtri tasandil, samas kui te võite esile tõsta dubleeringuidteksti, mitte terveid lahtreid. Seda saab teha ainult makrode abil. Isegi kui teil ei ole VBAga kogemusi, ärge kiirustage seda lehekülge sulgema. Siit leiate valmis koodinäited ja üksikasjalikud juhised, kuidas neid oma töölehtedel kasutada.
Rõhutage dubleerivad sõnad lahtris, ignoreerides teksti suurust
See näide näitab, kuidas varjutada dubleerivad sõnad või tekstisarjad lahtris punase kirjavärviga, nagu on näidatud alloleval pildil. Pange tähele, et väikseid ja suuri tähti käsitletakse samade tähtedena. Näiteks, oranž , ORANGE ja Oranž loetakse samaks sõnaks.
Makro kood on järgmine:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that separates values in a cell" , "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 SubEristab dubleeritud teksti lahtris suur- ja väiketundlikult
Enamikus olukordades kipume Excelis tekstikannetega töötades tähtede suurust ignoreerima. Teatud olukordades on aga teksti suurus siiski oluline. Näiteks kui tegemist on ID-de, paroolide või muude taoliste kirjetega, siis on stringid, näiteks 1-AA , 1-aa ja 1-Aa ei ole duplikaadid ja neid ei tohiks esile tõsta:
Sellisel juhul kasutage koodi järgmist versiooni:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that separates values in a cell" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) 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 SubKuidas kasutada makrosid Excelis dubleeritud sõnade esiletõstmiseks
Kui olete VBA kasutamisel algaja, siis allpool toodud samm-sammult juhised aitavad teid mugavalt läbi viia. Kogenud kasutajad võivad lihtsalt valida allalaadimislingi ja jätta ülejäänu vahele :)
Lisage kood oma töövihikusse
Alustate makro koodi sisestamisega Exceli töövihikusse. Järgnevalt on kirjeldatud, kuidas:
- Avage töövihik, kus soovite dubleeringuid esile tõsta.
- Vajutage Alt + F11, et avada Visual Basic'i redaktor.
- Klõpsake vasakul paanil paremklõpsuga ThisWorkbook ja valige Sisesta > Moodul kontekstmenüüst.
- Sisestage kood koodide aknasse.
- Et makro säiliks edaspidiseks kasutamiseks, salvestage oma töövihik kindlasti makrofunktsiooniga .xlsm-failina.
Te võite ka meie näidistööraamatu alla laadida ja käivitada makro sealt. Näidistööraamat sisaldab järgmisi makrosid:
- HighlightDupesCaseInsensitive - varjutab duplikaadid lahtri sees, ignoreerides tähestikku.
- HighlightDupesCaseSensitive - tõstab esile dubleeringud lahtris, võttes arvesse tähtede suurust.
Lisateavet leiate jaotisest Kuidas sisestada VBA-koodi Excelis.
Käivita makro
Kui kood on lisatud teie enda töövihikusse või meie näidisfaili alla laaditud ja avatud, käivitage makro nii:
- Valige oma töölehel lahtrid, kus soovite dubleerivat teksti esile tõsta. See võib olla üks vahemik või mitu mittekõrvalolevat vahemikku.
- Vajutage Alt + F8 .
- Valige huvipakkuv makro ja klõpsake Käivita .
- Makro palub teil määrata eraldaja, mis eraldab väärtused valitud lahtrites. Esialgselt määratud eraldaja (meie puhul koma ja tühik) ilmub automaatselt sisestuskasti. Sõltuvalt teie vajadustest võite jätta vaikimisi eraldaja või sisestada teise ja seejärel klõpsata OK.
Hetk hiljem on kõik valitud lahtrites olevad dubleeritud stringid punase värviga (või mis iganes kirjavärv on teie koodis määratud).
Vihje. Et kiiresti eemaldage duplikaadid lahtri sees, saate kasutada funktsiooni Remove Duplicate Substrings, mis on üks meie Ultimate Suite'i paljudest aja kokkuhoiu vahenditest.
Kuidas kohandada koodi oma vajadustele vastavaks
Nende kasutamismärkuste ja VBA algteadmiste abil (või lihtsalt allpool toodud juhiseid täpselt järgides) saate hõlpsasti muuta koode täpselt vastavalt oma vajadustele.
Asetage samale moodulile
Nagu te ehk märkate, on mõlemad makrotoimingud ( HighlightDupesCaseSensitive ja HighlightDupesCaseInsensitive ) kutsuda HighlightDupeWordsInCell Funktsioon. Erinevus kahe eespool nimetatud makro vahel on ainult nimetatud funktsioonile edastatud 3. parameetris (CaseSensitive).
Suur- ja väiketähtedega otsingu puhul on selle väärtuseks TRUE:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
Juhul, kui otsing ei sõltu suur- ja väiketähendusest, on selle väärtuseks FALSE:
Kutsu HighlightDupeWordsInCell(Cell, Delimiter, False)
Makrode toimimiseks peab koodi HighlightDupeWordsInCell funktsioon tuleb paigutada samasse moodulisse kui makrode.
Eraldaja
Kui makro käivitatakse, palutakse teil määrata eraldaja, mis eraldab valitud lahtrites olevad sõnad/jooned. Vaikimisi on eraldaja koma ja tühik (", ") ja see on sisendkastis eelseadistatud:
Delimiter = InputBox("Määrake eraldaja, mis eraldab väärtused lahtris", "Delimiter", ", ")
Teie koodis võite kasutada mis tahes muud märki (märke) etteantud eraldusmärkidena.
Värv
Vaikimisi on HighlightDupeWordsInCell funktsioon varjutab duplikaadid punase kirjavärviga. Värv on määratletud selles reas:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Siin on vbRed mingi VBA värvikonstant. Et kuvada dubleeringuid teise värviga, võite asendada vbRed mõne teise konstandiga, näiteks vbGreen, vbYellow, vbBlue jne T toetatud värvikonstandite loetelu leiate siit.
Nii saab Exceli lahtrites dubleerivaid sõnu esile tõsta. Tänan teid lugemise eest ja loodan, et näeme teid järgmisel nädalal meie blogis!
Saadaolevad allalaadimised
Koodinäited duplikaatide esiletõstmiseks lahtris (.xlsm fail)
Ultimate Suite 14-päevane täisfunktsionaalne versioon (.exe fail)