Kuinka korostaa päällekkäistä tekstiä / sanoja Excel-solussa

  • Jaa Tämä
Michael Brown

Ohjeessa näytetään, miten solun sisällä olevat päällekkäiset sanat tai tekstijonot korostetaan VBA:n avulla.

Excelin ehdollinen muotoilu mahdollistaa kaksoiskappaleiden korostamisen kaikin mahdollisin tavoin: 1. esiintymällä tai ilman 1. esiintymää, yhdessä sarakkeessa tai useammassa sarakkeessa, peräkkäisissä kaksoissoluissa ja kokonaisilla riveillä, jotka perustuvat identtisiin arvoihin avainsarakkeessa. Mutta kuten tavallista, on olemassa "mutta". Ehdollisen muotoilun säännöt toimivat solutasolla, kun taas voit haluta korostaa kaksoiskappaleentekstiä kokonaisten solujen sijasta. Tämä onnistuu vain makrojen avulla. Vaikka sinulla ei olisikaan kokemusta VBA:sta, älä kiirehdi sulkemaan tätä sivua. Täältä löydät valmiita koodiesimerkkejä ja yksityiskohtaiset ohjeet niiden käyttämiseen työarkissasi.

    Korosta solun päällekkäiset sanat ottamatta huomioon tekstin oikeinkirjoitustapauksia

    Tässä esimerkissä näytetään, miten solun sisällä olevat kaksoissanat tai tekstijonot varjostetaan punaisella fontin värillä alla olevan kuvan mukaisesti. Huomaa, että pieniä ja isoja kirjaimia käsitellään samoina merkkeinä. Esim, oranssi , ORANSSI ja Oranssi katsotaan olevan sama sana.

    Makron koodi on seuraava:

    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

    Korosta kaksoisteksti solussa tapauskohtaisesti

    Useimmissa tilanteissa meillä on taipumus olla välittämättä kirjainten kirjainkirjaimista, kun työskentelemme tekstimerkintöjen kanssa Excelissä. Tietyissä tilanteissa tekstin kirjainkirjaimilla on kuitenkin merkitystä. Jos esimerkiksi käsittelet tunnuksia, salasanoja tai muita tämäntyyppisiä tietueita, merkkijonot kuten 1-AA , 1-aa ja 1-Aa eivät ole päällekkäisiä, eikä niitä pitäisi korostaa:

    Käytä tässä tapauksessa seuraavaa versiota koodista:

    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

    Kuinka käyttää makroja päällekkäisten sanojen korostamiseen Excelissä?

    Jos olet aloittelija VBA:n käytössä, alla olevat vaiheittaiset ohjeet opastavat sinua mukavasti. Kokeneet käyttäjät voivat vain valita latauslinkin ja ohittaa loput :)

    Lisää koodi työkirjaan

    Aloitat lisäämällä makron koodin Excel-työkirjaan. Näin toimitaan:

    1. Avaa työkirja, jossa haluat korostaa kaksoiskappaleet.
    2. Avaa Visual Basic -editori painamalla Alt + F11.
    3. Napsauta vasemmassa ruudussa hiiren kakkospainikkeella ThisWorkbook ja valitse Lisää > Moduuli kontekstivalikosta.
    4. Liitä koodi Koodiikkunaan.
    5. Jos haluat säilyttää makron myöhempää käyttöä varten, muista tallentaa työkirjasi makrotoiminnot mahdollistavana .xlsm-tiedostona.

    Vaihtoehtoisesti voit ladata esimerkkityökirjamme ja suorittaa makron sieltä. Esimerkkityökirja sisältää seuraavat makrot:

    • HighlightDupesCaseInsensitive - varjostaa kaksoiskappaleet solun sisällä, eikä kirjainten oikeinkirjoitusta huomioida.
    • HighlightDupesCaseSensitive - korostaa kaksoiskappaleet solussa ottaen huomioon kirjainkoko.

    Lisätietoja on kohdassa VBA-koodin lisääminen Exceliin.

    Suorita makro

    Kun koodi on lisätty omaan työkirjaasi tai esimerkkitiedostomme on ladattu ja avattu, suorita makro näin:

    1. Valitse laskentataulukosta solut, joissa haluat korostaa päällekkäistä tekstiä. Tämä voi olla yksi alue tai useita vierekkäisiä alueita.
    2. Paina Alt + F8 .
    3. Valitse kiinnostava makro ja napsauta Suorita .

    4. Makro pyytää sinua määrittämään rajaajan, joka erottaa arvot valituissa soluissa. Esiasetettu rajaaja (meidän tapauksessamme pilkku ja välilyönti) ilmestyy syöttöruutuun automaattisesti. Tarpeidesi mukaan voit jättää oletusrajaajan tai kirjoittaa toisen ja napsauttaa sitten OK.

    Hetkeä myöhemmin kaikki valittujen solujen päällekkäiset merkkijonot tummuvat punaisella värillä (tai millä tahansa fontin värillä, joka on asetettu koodissasi).

    Vinkki. Nopeasti poistaa kaksoiskappaleet solun sisällä, voit käyttää Remove Duplicate Substrings -työkalua, joka on yksi monista Ultimate Suite -pakettiin sisältyvistä aikaa säästävistä työkaluista.

    Kuinka mukauttaa koodia omiin tarpeisiisi

    Näillä käyttöohjeilla ja VBA:n perustiedoilla (tai vain seuraamalla tarkasti alla olevia ohjeita) voit helposti muokata koodeja täsmälleen omien tarpeidesi mukaisesti.

    Sijoita samaan moduuliin

    Kuten saatat huomata, molemmat makrot ( HighlightDupesCaseSensitive ja HighlightDupesCaseInsensitive ) kutsua HighlightDupeWordsInCell Näiden kahden edellä mainitun makron välinen ero on ainoastaan kyseiselle funktiolle välitettävässä kolmannessa parametrissa (CaseSensitive).

    Jos haku tehdään isojen ja pienten kirjainten perusteella, sen arvoksi asetetaan TRUE:

    Kutsu HighlightDupeWordsInCell(Cell, Delimiter, True)

    Jos haku ei sisällä isoja ja pieniä kirjaimia, sen arvoksi asetetaan FALSE:

    Kutsu HighlightDupeWordsInCell(Cell, Delimiter, False)

    Jotta makrot toimisivat, on koodin HighlightDupeWordsInCell funktio on sijoitettava samaan moduuliin kuin makrot.

    Delimiter

    Kun makro ajetaan, sinua pyydetään määrittämään rajaaja, joka erottaa sanat/merkkijonot valituissa soluissa. Oletusrajaaja on pilkku ja välilyönti (", "), ja se on esiasetettu InputBoxissa:

    Delimiter = InputBox("Määritä erotin, joka erottaa arvot solussa", "Delimiter", ", ")

    Voit käyttää koodissasi vapaasti mitä tahansa muuta merkkiä tai muita merkkejä ennalta määriteltynä erottimena.

    Väri

    Oletusarvoisesti HighlightDupeWordsInCell toiminto sävyttää kaksoiskappaleet punaisella fontin värillä. Väri määritellään tällä rivillä:

    Cell.Characters(positionInText, Len(word)).Font.Color = vbRed

    Tässä vbRed on eräänlainen VBA-värivakio. Jos haluat näyttää kaksoiskappaleet eri värillä, voit korvata vbRedin toisella vakiolla, kuten vbGreenillä tai vbYellowilla, vbBlue jne. T tuettujen värivakioiden luettelo löytyy täältä.

    Näin korostat päällekkäiset sanat Excelin soluissa. Kiitän sinua lukemisesta ja toivon, että tapaamme blogissamme ensi viikolla!

    Saatavilla olevat lataukset

    Koodiesimerkkejä kaksoiskappaleiden korostamiseksi solussa (.xlsm-tiedosto)

    Ultimate Suite 14 päivän täysin toimiva versio (.exe-tiedosto)

    Michael Brown on omistautunut teknologian harrastaja, jolla on intohimo yksinkertaistaa monimutkaisia ​​prosesseja ohjelmistotyökalujen avulla. Yli vuosikymmenen kokemuksella teknologia-alalta hän on hionut taitojaan Microsoft Excelissä ja Outlookissa sekä Google Sheetsissä ja Docsissa. Michaelin blogi on omistettu jakamaan tietojaan ja asiantuntemustaan ​​muiden kanssa, ja se tarjoaa helposti seurattavia vinkkejä ja opetusohjelmia tuottavuuden ja tehokkuuden parantamiseksi. Olitpa kokenut ammattilainen tai aloittelija, Michaelin blogi tarjoaa arvokkaita oivalluksia ja käytännön neuvoja, joiden avulla saat kaiken irti näistä tärkeistä ohjelmistotyökaluista.