Kaip paryškinti pasikartojantį tekstą / žodžius "Excel" ląstelėje

  • Pasidalinti
Michael Brown

Šioje pamokoje parodyta, kaip naudojant VBA paryškinti pasikartojančius žodžius arba teksto eilutes ląstelėje.

"Excel" sąlyginis formatavimas leidžia išryškinti pasikartojančius elementus visais įmanomais būdais: su 1-uoju pasikartojimu arba be jo, viename stulpelyje arba keliuose stulpeliuose, iš eilės pasikartojančiose ląstelėse ir ištisose eilutėse pagal vienodas pagrindinio stulpelio reikšmes. Tačiau, kaip įprasta, yra "bet". Sąlyginio formatavimo taisyklės veikia ląstelės lygmeniu, o jūs galite norėti išryškinti pasikartojančiustekstą, o ne visas ląsteles. Tai galima padaryti tik naudojant makrokomandas. Net jei neturite jokios patirties su VBA, neskubėkite uždaryti šio puslapio. Čia rasite paruoštų naudoti kodo pavyzdžių ir išsamių instrukcijų, kaip juos naudoti savo darbalapiuose.

    Paryškinti pasikartojančius žodžius ląstelėje, neatsižvelgiant į teksto raidę

    Šiame pavyzdyje parodyta, kaip atspalvinti pasikartojančius žodžius arba teksto eilutes ląstelėje raudona šrifto spalva, kaip parodyta toliau pateiktame paveikslėlyje. Atkreipkite dėmesį, kad mažosios ir didžiosios raidės traktuojamos kaip tie patys simboliai. Pvz, oranžinė , ORANŽINĖ ir Oranžinė laikomi tuo pačiu žodžiu.

    Makro kodas yra toks:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Įveskite skirtuką, kuris atskiria reikšmes ląstelėje" , "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

    Dubliuojančio teksto paryškinimas ląstelėje, atsižvelgiant į mažąsias ir didžiąsias raides

    Daugeliu atvejų dirbdami su tekstiniais įrašais "Excel" programoje nekreipiame dėmesio į raidžių raidę. Tačiau tam tikromis aplinkybėmis teksto raidė yra svarbi. Pavyzdžiui, jei dirbate su ID, slaptažodžiais ar kitais tokio pobūdžio įrašais, eilutės, pvz. 1-AA , 1-aa ir 1-Aa nesidubliuoja ir neturėtų būti paryškinti:

    Tokiu atveju naudokite šią kodo versiją:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Įveskite skirtuką, kuris atskiria reikšmes ląstelėje" , "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

    Kaip naudoti makrokomandas dubliuojamiems žodžiams "Excel" programoje paryškinti

    Jei esate pradedantysis VBA naudotojas, toliau pateikiamos žingsnis po žingsnio instrukcijos padės jums patogiai pereiti per šį procesą. Patyrę naudotojai gali tiesiog pasirinkti atsisiuntimo nuorodą ir praleisti likusią dalį :)

    Į darbaknygę pridėkite kodą

    Pradėkite nuo makrokomandos kodo įterpimo į "Excel" darbaknygę:

    1. Atidarykite sąsiuvinį, kuriame norite paryškinti dublikatus.
    2. Paspauskite Alt + F11, kad atidarytumėte Visual Basic redaktorių.
    3. Kairiajame lange dešiniuoju pelės klavišu spustelėkite Ši darbo knyga ir pasirinkite Įdėkite > Modulis iš kontekstinio meniu.
    4. Įklijuokite kodą į langą Kodas.
    5. Norėdami išsaugoti makrokomandą ir naudoti ateityje, būtinai išsaugokite savo darbaknygę kaip makrokomandą palaikantį .xlsm failą.

    Taip pat galite atsisiųsti mūsų pavyzdinę darbaknygę ir iš jos paleisti makrokomandas. Pavyzdinėje darbaknygėje yra šios makrokomandos:

    • HighlightDupesCaseInsensitive - atspalviai dubliuojasi ląstelėje, neatsižvelgiant į raidžių raidę.
    • HighlightDupesCaseSensitive - išryškina dublikatus ląstelėje, atsižvelgdamas į raidžių raidę.

    Daugiau informacijos rasite skyriuje Kaip įterpti VBA kodą į "Excel".

    Paleisti makrokomandą

    Į savo darbaknygę pridėję kodą arba atsisiuntę ir atidarę mūsų pavyzdinį failą, makrokomandą paleiskite taip:

    1. Darbalapyje pasirinkite langelius, kuriuose norite paryškinti dubliuojantį tekstą. Tai gali būti vienas diapazonas arba keli nesusiję diapazonai.
    2. Paspauskite Alt + F8 .
    3. Pasirinkite dominantį makrokomandą ir spustelėkite Paleisti .

    4. Makrogramoje bus paprašyta nurodyti skirtuką, kuris atskirtų pasirinktų langelių reikšmes. Iš anksto nustatytas skirtukas (mūsų atveju - kablelis ir tarpas) bus automatiškai rodomas įvesties lange. Atsižvelgdami į savo poreikius, galite palikti numatytąjį skirtuką arba įvesti kitą, tada spustelėkite OK.

    Po akimirkos visos pasirinktose ląstelėse esančios pasikartojančios eilutės bus nuspalvintos raudona spalva (arba bet kokia jūsų kode nustatyta šrifto spalva).

    Patarimas. Norėdami greitai pašalinti dublikatus ląstelėje, galite naudoti funkciją "Pašalinti pasikartojančias eilutes" - vieną iš daugelio laiko taupymo įrankių, įtrauktų į "Ultimate Suite" rinkinį.

    Kaip pritaikyti kodą savo poreikiams

    Naudodamiesi šiomis naudojimo pastabomis ir turėdami elementarių VBA žinių (arba tiesiog atidžiai laikydamiesi toliau pateiktų nurodymų), galite lengvai pakeisti kodus pagal savo poreikius.

    Vieta tame pačiame modulyje

    Kaip pastebėjote, abi makrokomandos ( HighlightDupesCaseSensitive ir HighlightDupesCaseInsensitive ) skambinti į HighlightDupeWordsInCell Skirtumas tarp šių dviejų makrokomandų yra tik 3-iajame parametre (CaseSensitive), perduodamame minėtai funkcijai.

    Jei ieškoma pagal mažąsias ir didžiąsias raides, nustatoma reikšmė TRUE:

    Skambinkite HighlightDupeWordsInCell(Cell, Delimiter, True)

    Ieškant pagal mažąsias ir didžiąsias raides, nustatoma reikšmė FALSE:

    Skambinkite HighlightDupeWordsInCell(Cell, Delimiter, False)

    Kad makrokomandos veiktų, kodas HighlightDupeWordsInCell funkcija turi būti patalpinta tame pačiame modulyje kaip ir makrokomandos.

    Skirtukas

    Paleidus makrokomandą, bus paprašyta nurodyti skirtuką, kuris atskirtų pasirinktose ląstelėse esančius žodžius ir (arba) eilutes. Numatytasis skirtukas yra kablelis ir tarpas (", ") ir jis iš anksto nustatytas įvesties lange:

    Delimiter = InputBox("Nurodykite skirtuką, kuris atskiria ląstelės reikšmes", "Delimiter", ", ")

    Savo kode kaip iš anksto nustatytą skirtuką galite naudoti bet kurį kitą (-ius) simbolį (-ius).

    Spalva

    Pagal numatytuosius nustatymus HighlightDupeWordsInCell funkcija dublikatus atspalvina raudona šrifto spalva. Spalva apibrėžiama šioje eilutėje:

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

    Čia vbRed yra tam tikra VBA spalvų konstanta. Norėdami rodyti dublikatus kita spalva, vbRed galite pakeisti kita konstanta, pavyzdžiui, vbGreen, vbYellow, vbBlue ir t. t. T rs palaikomų spalvų konstantų sąrašą rasite čia.

    Štai kaip paryškinti pasikartojančius žodžius "Excel" ląstelėse. Dėkoju, kad perskaitėte, ir tikiuosi, kad kitą savaitę susitiksime mūsų tinklaraštyje!

    Galimi atsisiuntimai

    Kodo pavyzdžiai, kaip išryškinti pasikartojančius elementus ląstelėje (.xlsm failas)

    "Ultimate Suite" 14 dienų pilnai veikianti versija (.exe failas)

    Michaelas Brownas yra atsidavęs technologijų entuziastas, mėgstantis supaprastinti sudėtingus procesus naudojant programinės įrangos įrankius. Turėdamas daugiau nei dešimtmetį patirtį technologijų pramonėje, jis patobulino savo įgūdžius „Microsoft Excel“ ir „Outlook“, taip pat „Google“ skaičiuoklėse ir dokumentuose. Michaelio tinklaraštis skirtas dalytis savo žiniomis ir patirtimi su kitais, jame pateikiami lengvai įgyvendinami patarimai ir vadovėliai, kaip pagerinti produktyvumą ir efektyvumą. Nesvarbu, ar esate patyręs profesionalas, ar pradedantysis, Michaelo tinklaraštyje rasite vertingų įžvalgų ir praktinių patarimų, kaip išnaudoti visas šių pagrindinių programinės įrangos įrankių galimybes.