Kuidas Exceli lahtris dubleeritud teksti / sõnade esiletoomine

  • Jaga Seda
Michael Brown

Õ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 Sub

    Eristab 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 Sub

    Kuidas 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:

    1. Avage töövihik, kus soovite dubleeringuid esile tõsta.
    2. Vajutage Alt + F11, et avada Visual Basic'i redaktor.
    3. Klõpsake vasakul paanil paremklõpsuga ThisWorkbook ja valige Sisesta > Moodul kontekstmenüüst.
    4. Sisestage kood koodide aknasse.
    5. 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:

    1. Valige oma töölehel lahtrid, kus soovite dubleerivat teksti esile tõsta. See võib olla üks vahemik või mitu mittekõrvalolevat vahemikku.
    2. Vajutage Alt + F8 .
    3. Valige huvipakkuv makro ja klõpsake Käivita .

    4. 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)

    Michael Brown on pühendunud tehnoloogia entusiast, kelle kirg on tarkvaratööriistade abil keerukate protsesside lihtsustamine. Rohkem kui kümneaastase kogemusega tehnoloogiatööstuses on ta lihvinud oma oskusi Microsoft Excelis ja Outlookis, samuti Google Sheetsis ja Docsis. Michaeli ajaveebi eesmärk on jagada oma teadmisi ja teadmisi teistega, pakkudes hõlpsasti järgitavaid näpunäiteid ja õpetusi tootlikkuse ja tõhususe parandamiseks. Olenemata sellest, kas olete kogenud professionaal või algaja, pakub Michaeli ajaveebi väärtuslikke teadmisi ja praktilisi nõuandeid nende oluliste tarkvaratööriistade maksimaalseks kasutamiseks.