Ako zvýrazniť duplicitný text / slová v bunke programu Excel

  • Zdieľajte To
Michael Brown

Tento návod ukazuje, ako zvýrazniť duplicitné slová alebo textové reťazce v bunke pomocou VBA.

Podmienené formátovanie programu Excel umožňuje zvýrazniť duplicity všetkými možnými spôsobmi, ktoré vás napadnú: s 1. výskytom alebo bez neho, v jednom stĺpci alebo vo viacerých stĺpcoch, v po sebe idúcich duplicitných bunkách a v celých riadkoch na základe rovnakých hodnôt v kľúčovom stĺpci. Ako zvyčajne je tu však "ale". Pravidlá podmieneného formátovania fungujú na úrovni buniek, zatiaľ čo vy môžete chcieť zvýrazniť duplicitytextu, a nie celých buniek. Toto je možné vykonať len pomocou makier. Aj keď nemáte žiadne skúsenosti s VBA, neponáhľajte sa so zatvorením tejto stránky. Nájdete tu príklady kódu pripravené na použitie a podrobné pokyny, ako ich použiť vo svojich pracovných hárkoch.

    Zvýraznenie duplicitných slov v bunke bez ohľadu na veľkosť písmen textu

    Tento príklad ukazuje, ako odtieniť duplicitné slová alebo textové reťazce v bunke červenou farbou písma, ako je znázornené na obrázku nižšie. Všimnite si, že malé a veľké písmená sa považujú za rovnaké znaky. Napríklad oranžová , ORANGE a Oranžová sa považujú za to isté slovo.

    Kód makra je nasledujúci:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Zadajte oddeľovač, ktorý oddeľuje hodnoty v bunke" , "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

    Zvýraznenie duplicitného textu v bunke s ohľadom na veľkosť písmen

    Vo väčšine situácií máme tendenciu ignorovať veľkosť písmen pri práci s textovými záznamami v programe Excel. Za určitých okolností však na veľkosti písmen v texte záleží. Napríklad, ak pracujete s identifikačnými číslami, heslami alebo inými záznamami tohto druhu, reťazce ako napr. 1-AA , 1-aa a 1-Aa nie sú duplicitné a nemali by sa zvýrazňovať:

    V tomto prípade použite nasledujúcu verziu kódu:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Zadajte oddeľovač, ktorý oddeľuje hodnoty v bunke" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End 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

    Ako používať makrá na zvýraznenie duplicitných slov v programe Excel

    Ak ste začiatočník v používaní VBA, nižšie uvedené pokyny vás pohodlne prevedú krok za krokom. Skúsení používatelia si môžu jednoducho vybrať odkaz na stiahnutie a zvyšok preskočiť :)

    Pridanie kódu do zošita

    Začnete vložením kódu makra do zošita programu Excel:

    1. Otvorte zošit, v ktorom chcete zvýrazniť duplikáty.
    2. Stlačením klávesov Alt + F11 otvorte editor jazyka Visual Basic.
    3. Na ľavom paneli kliknite pravým tlačidlom myši na Tento pracovný zošit a vyberte Vložte > Modul z kontextového menu.
    4. Vložte kód do okna Kód.
    5. Ak chcete makro zachovať na ďalšie použitie, nezabudnite zošit uložiť ako súbor .xlsm s povolenými makrami.

    Prípadne si môžete stiahnuť náš vzorový zošit a spustiť makro z neho. Vzorový zošit obsahuje nasledujúce makrá:

    • HighlightDupesCaseInsensitive - odtieni duplikáty v rámci bunky, pričom ignoruje veľkosť písmen.
    • HighlightDupesCaseSensitive - zvýrazní duplikáty v bunke s ohľadom na veľkosť písmen.

    Ďalšie informácie nájdete v časti Ako vložiť kód VBA do aplikácie Excel.

    Spustenie makra

    Po pridaní kódu do vlastného zošita alebo po stiahnutí a otvorení nášho vzorového súboru spustite makro týmto spôsobom:

    1. V pracovnom hárku vyberte bunky, v ktorých chcete zvýrazniť duplicitný text. Môže to byť jeden rozsah alebo viacero nesúvisiacich rozsahov.
    2. Stlačte Alt + F8 .
    3. Vyberte makro, ktoré vás zaujíma, a kliknite na tlačidlo Spustiť .

    4. Makro vás požiada o zadanie oddeľovača, ktorý oddeľuje hodnoty vo vybraných bunkách. Vo vstupnom poli sa automaticky zobrazí prednastavený oddeľovač (v našom prípade čiarka a medzera). V závislosti od vašich potrieb môžete ponechať predvolený oddeľovač alebo zadať iný a potom kliknite na tlačidlo OK.

    O chvíľu neskôr budú všetky duplicitné reťazce vo vybraných bunkách odtienené červenou farbou (alebo akoukoľvek farbou písma nastavenou vo vašom kóde).

    Tip. Ak chcete rýchlo odstrániť duplikáty v bunke, môžete použiť funkciu Odstrániť duplicitné podreťazce, ktorá je jedným z mnohých nástrojov na úsporu času, ktoré sú súčasťou nášho balíka Ultimate Suite.

    Ako upraviť kód pre svoje potreby

    S týmito poznámkami k použitiu a veľmi základnými znalosťami jazyka VBA (alebo len s dôsledným dodržiavaním nižšie uvedených pokynov) môžete kódy ľahko upraviť presne podľa svojich potrieb.

    Umiestnite na ten istý modul

    Ako ste si mohli všimnúť, obe makrá ( HighlightDupesCaseSensitive a HighlightDupesCaseInsensitive ) zavolajte HighlightDupeWordsInCell Rozdiel medzi týmito dvoma makrami je len v 3. parametri (CaseSensitive), ktorý sa odovzdáva uvedenej funkcii.

    Pri vyhľadávaní s rozlišovaním veľkých a malých písmen je nastavená na hodnotu TRUE:

    Vyvolať HighlightDupeWordsInCell(Cell, Delimiter, True)

    Pre vyhľadávanie bez rozlišovania veľkých a malých písmen je nastavená na FALSE:

    Vyvolať HighlightDupeWordsInCell(Cell, Delimiter, False)

    Aby makrá fungovali, musí byť kód HighlightDupeWordsInCell funkcia musí byť umiestnená v tom istom module ako makrá.

    Oddeľovač

    Po spustení vás makro požiada o zadanie oddeľovača, ktorý oddeľuje slová/reťazce vo vybraných bunkách. Predvolený oddeľovač je čiarka a medzera (", ") a je prednastavený vo vstupnom poli:

    Delimiter = InputBox("Zadajte oddeľovač, ktorý oddeľuje hodnoty v bunke", "Delimiter", ", ")

    V kóde môžete ako preddefinovaný oddeľovač použiť akýkoľvek iný znak (znaky).

    Farba

    V predvolenom nastavení HighlightDupeWordsInCell funkcia odtieni duplikáty červenou farbou písma. Farba je definovaná v tomto riadku:

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

    Tu je vbRed akousi farebnou konštantou VBA. Ak chcete duplikáty zobraziť inou farbou, môžete vbRed nahradiť inou konštantou, napríklad vbGreen, vbYellow, vbBlue, atď T zoznam podporovaných farebných konštánt nájdete tu.

    Takto sa zvýrazňujú duplicitné slová v bunkách programu Excel. Ďakujem vám za prečítanie a dúfam, že sa na našom blogu uvidíme budúci týždeň!

    Dostupné súbory na stiahnutie

    Príklady kódu na zvýraznenie duplikátov v bunke (.xlsm súbor)

    14-dňová plne funkčná verzia balíka Ultimate Suite (.exe súbor)

    Michael Brown je nadšený technologický nadšenec s vášňou pre zjednodušovanie zložitých procesov pomocou softvérových nástrojov. S viac ako desaťročnými skúsenosťami v technologickom priemysle si zdokonalil svoje zručnosti v programoch Microsoft Excel a Outlook, ako aj Tabuľky Google a Dokumenty. Michaelov blog je venovaný zdieľaniu svojich vedomostí a odborných znalostí s ostatnými a poskytuje jednoduché tipy a návody na zlepšenie produktivity a efektivity. Či už ste skúsený profesionál alebo začiatočník, Michaelov blog ponúka cenné poznatky a praktické rady, ako z týchto základných softvérových nástrojov vyťažiť maximum.