Com ressaltar text / paraules duplicades a la cel·la d'Excel

  • Comparteix Això
Michael Brown

El tutorial mostra com ressaltar paraules duplicades o cadenes de text dins d'una cel·la mitjançant VBA.

El format condicional d'Excel permet ressaltar els duplicats de totes les maneres possibles: amb o sense les primeres ocurrències, en una sola columna o diverses columnes, cel·les duplicades consecutives i files senceres basades en valors idèntics en una columna clau. Però, com és habitual, hi ha un "però". Les regles de format condicional funcionen a nivell de cel·la, mentre que és possible que vulgueu ressaltar el text duplicat en lloc de cel·les senceres. Això només es pot fer amb macros. Encara que no tingueu cap experiència amb VBA, no us preneu a tancar aquesta pàgina. Aquí trobareu exemples de codis preparats per utilitzar i les instruccions detallades sobre com utilitzar-los als vostres fulls de treball.

    Destaqueu paraules duplicades en una cel·la ignorant majúscules i minúscules

    Aquest exemple mostra com ombrejar paraules duplicades o cadenes de text dins d'una cel·la en color de lletra vermella com es mostra a la imatge següent. Tingueu en compte que les minúscules i les majúscules es tracten com els mateixos caràcters. Per exemple, taronja , TARONJA i taronja es considera que són la mateixa paraula.

    El El codi de la macro és el següent:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Introduïu el delimitador que separa els valors en una cel·la", "Delimitador", ", " ) Per a cada cel·la aApplication.Selection Trucada HighlightDupeWordsInCell(Cell, Delimiter, False ) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive As Boolean = True ) Dim text As String Dim word() As String Dim word String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Aleshores paraules = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (paraules) To UBound (paraules) - 1 paraula = paraules (índex de paraules) matchCount = 0 Per nextWordIndex = wordIndex + 1 To UBound (paraules) If word = words (nextWordIndex) Aleshores matchCount = matchCount + 1 End If Next nextWordIndex Si matchCount > 0 Llavors text = "" Per a Índex = LBound (paraules) Per UBound (paraules) text = text & paraules (índex) If (paraules (índex) = paraula) Aleshores Cell.Caracteres (Len (text) - Len (paraula) + 1, Len (paraula)).Font.Color = vbRed End If text = text & Delimitador Next End If Next wordIndex End Sub

    Resalta el text duplicat en una cel·la que distingeix entre majúscules i minúscules

    En la majoria de situacions, tendim a ignorar les majúscules i minúscules quan treballem amb entrades de text a Excel. En determinades circumstàncies, però, el cas del text sí ​​importa. Per exemple, si esteu tractant amb identificadors, contrasenyes o altres registres d'aquest tipus, les cadenes com ara 1-AA , 1-aa i 1-Aa no són duplicats i no s'han de ressaltar:

    En aquest cas,utilitzeu la següent versió del codi:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Introduïu el delimitador que separa els valors en una cel·la", "Delimitador", ", " ) Per a cada Cel·la a l'aplicació. Selecció Trucada HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End Sub Sub HighlightDupeWordsInCell (Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive As Boolean = True ) Dim text as String Dim words() As String word As String Dim wordIndex, matchCount, positionInText As Integer Si distingeix entre majúscules i minúscules Aleshores paraules = Split(Cell.Value, Delimiter) Altres paraules = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (paraules) To UBound ( paraules) - 1 paraula = paraules (índex de paraules) matchCount = 0 Per a nextWordIndex = wordIndex + 1 To UBound (paraules) If word = words (nextWordIndex) Aleshores matchCount = matchCount + 1 End If Next nextWordIndex Si matchCount > 0 Llavors text = "" Per a Índex = LBound (paraules) Per UBound (paraules) text = text & paraules (índex) If (paraules (índex) = paraula) Aleshores Cell.Caracteres (Len (text) - Len (paraula) + 1, Len (paraula)).Font.Color = vbRed End If text = text & Delimitador Next End If Next wordIndex End Sub

    Com utilitzar les macros per ressaltar les paraules duplicades a Excel

    Si sou un principiant a utilitzar VBA, les instruccions pas a pas a continuació us guiaran còmodament. . Els usuaris experimentats podennomés cal que trieu l'enllaç de descàrrega i ometeu la resta :)

    Afegiu el codi al vostre llibre de treball

    Comenceu inserint el codi de la macro al vostre llibre de treball d'Excel. A continuació us indiquem com:

    1. Obre el llibre de treball on voleu ressaltar els enganys.
    2. Premeu Alt + F11 per obrir l'Editor de Visual Basic.
    3. Al panell esquerre, Feu clic amb el botó dret a ThisWorkbook i seleccioneu Insereix > Mòdul al menú contextual.
    4. Enganxeu el codi a la finestra Codi.
    5. Per conservar la macro per a un ús futur, assegureu-vos de desar el vostre llibre de treball com a fitxer .xlsm activat per a macros.

    Com a alternativa, podeu baixar el nostre llibre de treball de mostra i executar la macro des d'allà. El llibre de treball de mostra conté les macros següents:

    • HighlightDupesCaseSensitive : ombreja els duplicats dins d'una cel·la ignorant les majúscules i minúscules.
    • HighlightDupesCaseSensitive : ressalta les majúscules i minúscules. dupes en una cel·la tenint en compte les majúscules i minúscules.

    Per obtenir més informació, vegeu Com inserir codi VBA a Excel.

    Executar la macro

    Amb el codi afegit al vostre propi llibre de treball o al nostre fitxer de mostra descarregat i obert, executeu la macro d'aquesta manera:

    1. Al vostre full de treball, seleccioneu les cel·les on voleu ressaltar el text duplicat. Pot ser un rang o diversos intervals no adjacents.
    2. Premeu Alt + F8 .
    3. Seleccioneu la macro d'interès i feu clic a Executar .

    4. La macro us demanarà que especifiqueu el delimitadorque separa els valors de les cel·les seleccionades. El delimitador preestablert (una coma i un espai en el nostre cas) apareixerà automàticament al quadre d'entrada. En funció de les vostres necessitats, podeu deixar el delimitador predeterminat o escriure-ne un de diferent i, a continuació, fer clic a D'acord.

    Un moment més tard, totes les cadenes duplicades a la selecció seleccionada. les cel·les estaran ombrejades en color vermell (o el color de la lletra establert al vostre codi).

    Consell. Per eliminar els duplicats ràpidament d'una cel·la, podeu utilitzar Elimina les subcadenes duplicades, una de les moltes eines que estalvien temps incloses a la nostra Suite Ultimate.

    Com ajustar el codi a les vostres necessitats

    Amb aquestes notes d'ús i els coneixements bàsics de VBA (o simplement seguint de prop les instruccions següents), podeu modificar fàcilment els codis d'acord exactament amb les vostres necessitats.

    Coloqueu al mateix mòdul

    Com podreu observar, ambdues macros ( HighlightDupesCaseSensitive i HighlightDupesCaseInsensitive ) criden a la funció HighlightDupeWordsInCell . La diferència entre les dues macros anteriors només es troba en el tercer paràmetre (CaseSensitive) passat a la funció esmentada.

    Per a la cerca que distingeix entre majúscules i minúscules, s'estableix en TRUE:

    Call HighlightDupeWordsInCell(Cell, Delimiter, True)

    Per a la cerca que no distingeix entre majúscules i minúscules, s'estableix com a FALSE:

    Call HighlightDupeWordsInCell(Cell, Delimiter, False)

    Per tal que les macros funcionin, el codi de la funció HighlightDupeWordsInCell s'ha de col·locar a el mateix mòdul que elmacros.

    Delimitador

    Quan s'executa, la macro us demanarà que especifiqueu el delimitador que separa paraules/cadenes a les cel·les seleccionades. El delimitador predeterminat és una coma i un espai (", ") i està preestablert a l'InputBox:

    Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")

    Al vostre codi, podeu utilitzar qualsevol altre caràcter(s) com a delimitador predefinit.

    Color

    Per defecte, la funció HighlightDupeWordsInCell ombreja els duplicats en color de lletra vermella. El color es defineix en aquesta línia:

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

    Aquí, vbRed és una mena de constant de color VBA. Per mostrar duplicacions en un color diferent, podeu substituir vbRed per una altra constant com ara vbGreen, vbYellow, vbBlue, etc. La llista de constants de color admeses es pot trobar aquí.

    Això és com ressaltar paraules duplicades a les cel·les d'Excel. Us agraeixo la lectura i espero veure-us al nostre blog la setmana vinent!

    Descàrregues disponibles

    Exemples de codi per ressaltar els duplicats en una cel·la (fitxer .xlsm)

    Últim Versió totalment funcional de 14 dies de Suite (fitxer .exe)

    Michael Brown és un entusiasta de la tecnologia dedicat amb una passió per simplificar processos complexos mitjançant eines de programari. Amb més d'una dècada d'experiència en la indústria tecnològica, ha perfeccionat les seves habilitats en Microsoft Excel i Outlook, així com en Google Sheets i Docs. El bloc de Michael es dedica a compartir els seus coneixements i experiència amb altres persones, oferint consells i tutorials fàcils de seguir per millorar la productivitat i l'eficiència. Tant si sou un professional experimentat com si sou un principiant, el bloc de Michael ofereix valuoses idees i consells pràctics per treure el màxim profit d'aquestes eines de programari essencials.