Cum se evidențiază textul / cuvintele duplicate în celula Excel

  • Imparte Asta
Michael Brown

Tutorialul arată cum se evidențiază cuvintele sau șirurile de text duplicate într-o celulă folosind VBA.

Formatarea condiționată Excel face posibilă evidențierea duplicatelor în toate modurile posibile la care vă puteți gândi: cu sau fără prima apariție, într-o singură coloană sau în mai multe coloane, celule duplicate consecutive și rânduri întregi bazate pe valori identice într-o coloană cheie. Dar, ca de obicei, există un "dar". Regulile de formatare condiționată funcționează la nivel de celulă, în timp ce este posibil să doriți să evidențiați duplicatetext, mai degrabă decât celule întregi. Acest lucru se poate face numai cu macro-uri. Chiar dacă nu aveți experiență cu VBA, nu vă grăbiți să închideți această pagină. Aici veți găsi exemple de coduri gata de utilizare și instrucțiuni detaliate despre cum să le folosiți în foile dvs. de calcul.

    Evidențiați cuvintele duplicate într-o celulă, ignorând majusculele textului

    Acest exemplu arată cum să nuanțați cuvintele sau șirurile de text duplicate dintr-o celulă în culoarea roșie a fontului, așa cum se arată în imaginea de mai jos. Rețineți că literele mici și majuscule sunt tratate ca fiind aceleași caractere. De exemplu, portocaliu , ORANGE și Portocaliu sunt considerate a fi același cuvânt.

    Codul macro este următorul:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Introduceți delimitatorul care separă valorile într-o celulă" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) 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

    Evidențiați textul duplicat într-o celulă în funcție de majuscule și minuscule

    În majoritatea situațiilor, avem tendința de a ignora majuscula literelor atunci când lucrăm cu intrări de text în Excel. În anumite circumstanțe, totuși, majuscula textului contează. De exemplu, dacă aveți de-a face cu ID-uri, parole sau alte înregistrări de acest tip, șirurile de caractere precum 1-AA , 1-aa și 1-Aa nu sunt duplicate și nu trebuie să fie evidențiate:

    În acest caz, utilizați următoarea versiune a codului:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Introduceți delimitatorul care separă valorile într-o celulă" , "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

    Cum se utilizează macrourile pentru a evidenția cuvintele duplicate în Excel

    Dacă sunteți un începător în utilizarea VBA, instrucțiunile pas cu pas de mai jos vă vor ajuta să vă descurcați în mod confortabil. Utilizatorii experimentați pot alege doar link-ul de descărcare și sări peste restul :)

    Adăugați codul în registrul de lucru

    Începeți prin a insera codul macro în registrul de lucru Excel. Iată cum:

    1. Deschideți registrul de lucru în care doriți să evidențiați dublurile.
    2. Apăsați Alt + F11 pentru a deschide editorul Visual Basic.
    3. În panoul din stânga, faceți clic dreapta pe Această carte de lucru și selectați Introduceți > Modul din meniul contextual.
    4. Lipiți codul în fereastra Code.
    5. Pentru a păstra macroul pentru utilizare ulterioară, asigurați-vă că salvați registrul de lucru ca fișier .xlsm cu macro activat.

    Alternativ, puteți descărca exemplarul nostru de registru de lucru și puteți rula macroul de acolo. Exemplarul de registru de lucru conține următoarele macrouri:

    • HighlightDupesCaseInsensitive - nuanțează dublurile dintr-o celulă, ignorând majuscula literelor.
    • HighlightDupesCaseSensitive - evidențiază dublurile dintr-o celulă ținând cont de majusculele literelor.

    Pentru mai multe informații, consultați Cum să inserați cod VBA în Excel.

    Rulați macroul

    După ce ați adăugat codul în propriul registru de lucru sau după ce ați descărcat și deschis fișierul nostru de probă, rulați macroul în acest mod:

    1. În foaia de calcul, selectați celulele în care doriți să evidențiați textul duplicat. Acesta poate fi un interval sau mai multe intervale neadiacente.
    2. Apăsați Alt + F8 .
    3. Selectați macroul de interes și faceți clic pe Rulați .

    4. Macroul vă va cere să specificați delimitatorul care separă valorile din celulele selectate. Delimitatorul prestabilit (o virgulă și un spațiu în cazul nostru) va apărea automat în caseta de introducere. În funcție de necesitățile dumneavoastră, puteți lăsa delimitatorul implicit sau puteți introduce un delimitator diferit, apoi faceți clic pe OK.

    O clipă mai târziu, toate șirurile de caractere duplicate din celulele selectate vor fi umbrite cu roșu (sau cu orice culoare de font setată în cod).

    Sfat. pentru a obține rapid eliminați duplicatele într-o celulă, puteți utiliza Remove Duplicate Substrings, unul dintre numeroasele instrumente de economisire a timpului incluse în suita Ultimate Suite.

    Cum să ajustați codul pentru nevoile dumneavoastră

    Cu ajutorul acestor note de utilizare și a cunoștințelor de bază de VBA (sau doar urmând îndeaproape instrucțiunile de mai jos), puteți modifica cu ușurință codurile în conformitate cu nevoile dumneavoastră.

    Așezați pe același modul

    După cum puteți observa, ambele macrocomenzi ( HighlightDupesCaseSensitive și HighlightDupesCaseInsensitive ) apelează la HighlightDupeWordsInCell Diferența dintre cele două macrocomenzi de mai sus constă doar în cel de-al treilea parametru (CaseSensitive) transmis funcției menționate.

    Pentru căutarea în funcție de majuscule și minuscule, se stabilește la TRUE:

    Se apelează HighlightDupeWordsInCell(Cell, Delimiter, True)

    În cazul căutării care nu ține cont de majuscule și minuscule, se stabilește la FALSE:

    Se apelează HighlightDupeWordsInCell(Cell, Delimiter, False)

    Pentru ca macrourile să funcționeze, codul din HighlightDupeWordsInCell trebuie să fie plasată în același modul ca și macrourile.

    Delimitator

    La rulare, macroul vă va cere să specificați delimitatorul care separă cuvintele/cadențele din celulele selectate. Delimitatorul implicit este o virgulă și un spațiu (", ") și este presetat în InputBox:

    Delimiter = InputBox("Specificați delimitatorul care separă valorile într-o celulă", "Delimiter", ", ")

    În codul dumneavoastră, puteți utiliza orice alt caracter (caractere) ca delimitator predefinit.

    Culoare

    În mod prestabilit, se utilizează HighlightDupeWordsInCell nuanțează duplicatele în culoarea roșie a fontului. Culoarea este definită în această linie:

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

    Aici, vbRed este un fel de constantă de culoare VBA. Pentru a afișa dublurile într-o culoare diferită, puteți înlocui vbRed cu o altă constantă, cum ar fi vbGreen, vbYellow, vbBlue, etc. T Lista constantelor de culoare acceptate poate fi găsită aici.

    Iată cum se evidențiază cuvintele duplicate în celulele Excel. Vă mulțumesc pentru lectură și sper să ne vedem pe blog săptămâna viitoare!

    Descărcări disponibile

    Exemple de cod pentru a evidenția dublurile dintr-o celulă (fișier .xlsm)

    Ultimate Suite 14-day full-functional version (fișier .exe)

    Michael Brown este un pasionat de tehnologie dedicat, cu o pasiune pentru simplificarea proceselor complexe folosind instrumente software. Cu mai mult de un deceniu de experiență în industria tehnologiei, el și-a perfecționat abilitățile în Microsoft Excel și Outlook, precum și în Google Sheets și Docs. Blogul lui Michael este dedicat împărtășirii cunoștințelor și experienței sale cu alții, oferind sfaturi și tutoriale ușor de urmat pentru îmbunătățirea productivității și eficienței. Indiferent dacă sunteți un profesionist experimentat sau un începător, blogul lui Michael oferă informații valoroase și sfaturi practice pentru a profita la maximum de aceste instrumente software esențiale.