Sisällysluettelo
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 SubKorosta 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 SubKuinka 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:
- Avaa työkirja, jossa haluat korostaa kaksoiskappaleet.
- Avaa Visual Basic -editori painamalla Alt + F11.
- Napsauta vasemmassa ruudussa hiiren kakkospainikkeella ThisWorkbook ja valitse Lisää > Moduuli kontekstivalikosta.
- Liitä koodi Koodiikkunaan.
- 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:
- Valitse laskentataulukosta solut, joissa haluat korostaa päällekkäistä tekstiä. Tämä voi olla yksi alue tai useita vierekkäisiä alueita.
- Paina Alt + F8 .
- Valitse kiinnostava makro ja napsauta Suorita .
- 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)