Cómo resaltar texto duplicado / palabras en la celda de Excel

  • Compartir Este
Michael Brown

El tutorial muestra cómo resaltar palabras duplicadas o cadenas de texto dentro de una celda utilizando VBA.

El formato condicional de Excel permite resaltar duplicados de todas las formas posibles que se le ocurran: con o sin la primera ocurrencia, en una sola columna o en varias columnas, celdas duplicadas consecutivas y filas enteras basadas en valores idénticos en una columna clave. Pero, como siempre, hay un "pero". Las reglas de formato condicional funcionan a nivel de celda, mientras que es posible que desee resaltar duplicadostexto en lugar de celdas enteras. Esto sólo puede hacerse con macros. Aunque no tenga experiencia con VBA, no se apresure a cerrar esta página. Aquí encontrará ejemplos de código listos para usar e instrucciones detalladas sobre cómo utilizarlos en sus hojas de cálculo.

    Resaltar palabras duplicadas en una celda ignorando mayúsculas y minúsculas del texto

    Este ejemplo muestra cómo sombrear palabras duplicadas o cadenas de texto dentro de una celda en color de fuente rojo como se muestra en la imagen de abajo. Tenga en cuenta que las letras minúsculas y mayúsculas se tratan como los mismos caracteres. Por ejemplo, naranja , NARANJA y Naranja se consideran la misma palabra.

    El código de la macro es el siguiente

    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 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

    Resaltar texto duplicado en una celda distinguiendo entre mayúsculas y minúsculas

    En la mayoría de las situaciones, tendemos a ignorar las mayúsculas y minúsculas cuando trabajamos con entradas de texto en Excel. Sin embargo, en determinadas circunstancias, las mayúsculas y minúsculas sí importan. Por ejemplo, si se trata de identificadores, contraseñas u otros registros de ese tipo, las cadenas como 1-AA , 1-aa y 1-Aa no son duplicados y no deben resaltarse:

    En este caso, utilice la siguiente versión del código:

    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 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

    Cómo utilizar las macros para resaltar palabras duplicadas en Excel

    Si eres principiante en el uso de VBA, las siguientes instrucciones paso a paso te guiarán cómodamente. Los usuarios experimentados pueden simplemente elegir el enlace de descarga y saltarse el resto :)

    Añada el código a su libro de trabajo

    Empieza por insertar el código de la macro en tu libro de Excel. He aquí cómo:

    1. Abra el libro de trabajo en el que desea resaltar los duplicados.
    2. Pulse Alt + F11 para abrir el Editor de Visual Basic.
    3. En el panel izquierdo, haga clic con el botón derecho del ratón en EsteLibroDeTrabajo y seleccione Inserte > Módulo del menú contextual.
    4. Pegue el código en la ventana Código.
    5. Para conservar la macro para usos futuros, asegúrese de guardar su libro de trabajo como un archivo .xlsm habilitado para macros.

    También puede descargar nuestro libro de trabajo de ejemplo y ejecutar la macro desde allí. El libro de trabajo de ejemplo contiene las siguientes macros:

    • HighlightDupesCaseInsensitive - sombrea duplicados dentro de una celda ignorando las mayúsculas y minúsculas.
    • HighlightDupesCaseSensitive - resalta los duplicados en una celda teniendo en cuenta las letras mayúsculas y minúsculas.

    Para más información, consulte Cómo insertar código VBA en Excel.

    Ejecutar la macro

    Con el código añadido a su propio libro de trabajo o nuestro archivo de ejemplo descargado y abierto, ejecute la macro de esta manera:

    1. En la hoja de cálculo, seleccione las celdas en las que desea resaltar el texto duplicado. Puede tratarse de un rango o de varios rangos no adyacentes.
    2. Pulse Alt + F8 .
    3. Seleccione la macro que le interese y haga clic en Ejecutar .

    4. La macro le pedirá que especifique el delimitador que separa los valores en las celdas seleccionadas. El delimitador preestablecido (una coma y un espacio en nuestro caso) aparecerá automáticamente en el cuadro de entrada. Dependiendo de sus necesidades, puede dejar el delimitador predeterminado o escribir uno diferente y, a continuación, hacer clic en Aceptar.

    Un momento después, todas las cadenas duplicadas en las celdas seleccionadas aparecerán sombreadas en color rojo (o en el color de fuente que haya establecido en su código).

    Consejo: para eliminar duplicados dentro de una celda, puede utilizar Eliminar subcadenas duplicadas, una de las muchas herramientas que ahorran tiempo incluidas en nuestra Ultimate Suite.

    Cómo adaptar el código a sus necesidades

    Con estas notas de uso y unos conocimientos muy básicos de VBA (o simplemente siguiendo atentamente las instrucciones que figuran a continuación), podrá modificar fácilmente los códigos para adaptarlos exactamente a sus necesidades.

    Colocar en el mismo módulo

    Como puede observar, ambas macros ( HighlightDupesCaseSensitive y HighlightDupesCaseInsensitive ) llamar al HighlightDupeWordsInCell La diferencia entre las dos macros anteriores estriba únicamente en el tercer parámetro (CaseSensitive) que se pasa a dicha función.

    Para la búsqueda sensible a mayúsculas y minúsculas, se establece en TRUE:

    Llamar a HighlightDupeWordsInCell(Celda, Delimitador, True)

    Para la búsqueda sin distinción entre mayúsculas y minúsculas, se establece en FALSE:

    Llamar a HighlightDupeWordsInCell(Celda, Delimitador, Falso)

    Para que las macros funcionen, el código de la carpeta HighlightDupeWordsInCell debe colocarse en el mismo módulo que las macros.

    Delimitador

    Cuando se ejecute, la macro le pedirá que especifique el delimitador que separa las palabras/cadenas en las celdas seleccionadas. El delimitador por defecto es una coma y un espacio (", ") y está preestablecido en el InputBox:

    Delimitador = InputBox("Especifique el delimitador que separa los valores en una celda", "Delimitador", ", ")

    En su código, puede utilizar cualquier otro carácter como delimitador predefinido.

    Color

    Por defecto, el HighlightDupeWordsInCell sombrea los duplicados en rojo. El color se define en esta línea:

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

    Aquí, vbRed es una especie de constante de color de VBA. Para mostrar los duplicados en un color diferente, puede reemplazar vbRed con otra constante como vbGreen, vbYellow, vbBlue, etc. T a lista de constantes de color admitidas puede consultarse aquí.

    Así es como se resaltan las palabras duplicadas en las celdas de Excel. Te doy las gracias por leer y ¡espero verte en nuestro blog la semana que viene!

    Descargas disponibles

    Ejemplos de código para resaltar duplicados en una celda (archivo .xlsm)

    Ultimate Suite 14 días versión totalmente funcional (archivo .exe)

    Michael Brown es un entusiasta de la tecnología dedicado y apasionado por simplificar procesos complejos utilizando herramientas de software. Con más de una década de experiencia en la industria de la tecnología, ha perfeccionado sus habilidades en Microsoft Excel y Outlook, así como en Google Sheets y Docs. El blog de Michael está dedicado a compartir su conocimiento y experiencia con otros, brindando consejos y tutoriales fáciles de seguir para mejorar la productividad y la eficiencia. Ya sea un profesional experimentado o un principiante, el blog de Michael ofrece información valiosa y consejos prácticos para aprovechar al máximo estas herramientas de software esenciales.