Como resaltar texto / palabras duplicadas na cela de Excel

  • Comparte Isto
Michael Brown

O titorial amosa como resaltar palabras duplicadas ou cadeas de texto nunha cela mediante VBA.

O formato condicional de Excel permite resaltar os duplicados de todas as formas que se poidan pensar: con ou sen primeiras ocorrencias, nunha única columna ou varias columnas, celas duplicadas consecutivas e filas enteiras baseadas en valores idénticos nunha columna clave. Pero, como é habitual, hai un "pero". As regras de formato condicional funcionan a nivel de cela, aínda que pode querer destacar o texto duplicado en lugar de celas enteiras. Isto só se pode facer con macros. Aínda que non teñas experiencia con VBA, non te apresures a pechar esta páxina. Aquí atoparás exemplos de código listos para usar e instrucións detalladas sobre como usalos nas túas follas de traballo.

    Destaca as palabras duplicadas nunha cela ignorando maiúsculas e minúsculas

    Este exemplo mostra como sombrear palabras ou cadeas de texto duplicadas dentro dunha cela en cor de fonte vermella como se mostra na imaxe de abaixo. Ten en conta que as letras minúsculas e maiúsculas trátanse como os mesmos caracteres. Por exemplo, laranxa , LARANXA e Laranxa considérase que son a mesma palabra.

    O O código da macro é o seguinte:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Introduza o delimitador que separa os valores nunha cela" , "Delimitador" , ", " ) Para cada cela deApplication.Selection Chamada 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 Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (palabras) To UBound (palabras) - 1 palabra = palabras (índice de palabras) matchCount = 0 Para nextWordIndex = wordIndex + 1 To UBound (palabras) If word = words (nextWordIndex) Entón matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Entón text = "" For Index = LBound (palabras) Para UBound (palabras) text = text & palabras (Índice) If (palabras (Índice) = palabra) Entón Cell.Caracters (Len (texto) - Len (palabra) + 1, Len (palabra)).Font.Color = vbRed End If text = texto & Delimitador Next End If Next wordIndex End Sub

    Resalta o texto duplicado nunha cela que distingue entre maiúsculas e minúsculas

    Na maioría das situacións, tendemos a ignorar as maiúsculas e minúsculas cando traballamos con entradas de texto en Excel. En determinadas circunstancias, porén, o caso do texto importa. Por exemplo, se está a tratar con ID, contrasinais ou outros rexistros deste tipo, as cadeas como 1-AA , 1-aa e 1-Aa non son duplicados e non se deben resaltar:

    Neste caso,use a seguinte versión do código:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Introduza o delimitador que separa os valores nunha cela" , "Delimitador", ", " ) Para Cada Cell In Application.Selection Chamada 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 palabras () As String word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Entón palabras = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (palabras) Para UBound ( palabras) - 1 palabra = palabras (índice de palabras) matchCount = 0 Para nextWordIndex = wordIndex + 1 To UBound (palabras) If word = words (nextWordIndex) Entón matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Entón text = "" For Index = LBound (palabras) Para UBound (palabras) text = text & palabras (Índice) If (palabras (Índice) = palabra) Entón Cell.Caracters (Len (texto) - Len (palabra) + 1, Len (palabra)).Font.Color = vbRed End If text = texto & Delimitador Next End If Next wordIndex End Sub

    Como usar as macros para resaltar as palabras duplicadas en Excel

    Se es un principiante no uso de VBA, as instrucións paso a paso a continuación guiaranche cómodamente . Os usuarios experimentados podensó tes que escoller a ligazón de descarga e omitir o resto :)

    Engade o código ao teu caderno de traballo

    Comezas inserindo o código da macro no teu caderno de Excel. Vexa como:

    1. Abre o caderno de traballo onde queres resaltar dupes.
    2. Preme Alt + F11 para abrir o Editor de Visual Basic.
    3. No panel esquerdo, prema co botón dereito do rato en ThisWorkbook e seleccione Inserir > Módulo no menú contextual.
    4. Pega o código na xanela Código.
    5. Para conservar a macro para uso futuro, asegúrate de gardar o teu libro de traballo como un ficheiro .xlsm habilitado para macros.

    Como alternativa, podes descargar o noso libro de exemplo e executar a macro desde alí. O libro de traballo de mostra contén as seguintes macros:

    • HighlightDupesCaseSensitive - sombrea os duplicados nunha cela ignorando as letras maiúsculas.
    • HighlightDupesCaseSensitive - resalta dupes nunha cela tendo en conta a letra maiúscula.

    Para obter máis información, consulte Como inserir código VBA en Excel.

    Executar a macro

    Co código engadido ao teu propio libro de traballo ou ao noso ficheiro de mostra descargado e aberto, executa a macro deste xeito:

    1. Na túa folla de traballo, selecciona as celas onde queres resaltar o texto duplicado. Este pode ser un intervalo ou varios intervalos non adxacentes.
    2. Preme Alt + F8 .
    3. Selecciona a macro de interese e fai clic en Executar .

    4. A macro pediralle que especifique o delimitadorque separa os valores nas celas seleccionadas. O delimitador predefinido (unha coma e un espazo no noso caso) aparecerá na caixa de entrada automaticamente. Dependendo das súas necesidades, pode deixar o delimitador predeterminado ou escribir outro e, a continuación, premer en Aceptar.

    Un momento despois, todas as cadeas duplicadas no seleccionado as celas estarán sombreadas en cor vermella (ou calquera que sexa a cor da fonte que se estableza no teu código).

    Consello. Para eliminar rapidamente duplicados dunha cela, podes utilizar Eliminar subcadeas duplicadas, unha das moitas ferramentas que permite aforrar tempo incluídas na nosa Ultimate Suite.

    Como axustar o código ás túas necesidades

    Con estas notas de uso e os coñecementos básicos de VBA (ou só seguindo de preto as instrucións que aparecen a continuación), pode modificar facilmente os códigos de acordo coas súas necesidades.

    Coloque no mesmo módulo

    Como verás, ambas macros ( HighlightDupesCaseSensitive e HighlightDupesCaseInsensitive ) chaman á función HighlightDupeWordsInCell . A diferenza entre as dúas macros anteriores só está no terceiro parámetro (Sensible entre maiúsculas e minúsculas) que se pasa á devandita función.

    Para a busca que distingue entre maiúsculas e minúsculas, establécese como TRUE:

    Call HighlightDupeWordsInCell(Cell, Delimiter, True)

    Para a busca que non distingue entre maiúsculas e minúsculas, establécese como FALSO:

    Call HighlightDupeWordsInCell(Cell, Delimiter, False)

    Para que funcionen as macros, o código da función HighlightDupeWordsInCell debe colocarse en o mesmo módulo que omacros.

    Delimitador

    Cando se executa, a macro pediralle que especifique o delimitador que separa palabras/cadeas nas celas seleccionadas. O delimitador predeterminado é unha coma e un espazo (", ") e está preestablecido no InputBox:

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

    No teu código, podes usar calquera outro(s) carácter(s) como delimitador predefinido.

    Cor

    Por defecto, a función HighlightDupeWordsInCell sombrea os duplicados en cor de fonte vermella. A cor defínese nesta liña:

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

    Aquí, vbRed é unha especie de constante de cor VBA. Para mostrar duplicacións nunha cor diferente, pode substituír vbRed por outra constante como vbGreen, vbYellow, vbBlue, etc. A a lista de constantes de cores admitidas pódese atopar aquí.

    Isto é como resaltar palabras duplicadas nas celas de Excel. Grazas por ler e espero verte no noso blog a próxima semana!

    Descargas dispoñibles

    Exemplos de código para resaltar duplicados nunha cela (ficheiro .xlsm)

    Máximo Versión totalmente funcional de 14 días de Suite (ficheiro .exe)

    Michael Brown é un entusiasta da tecnoloxía dedicada á súa paixón por simplificar procesos complexos mediante ferramentas de software. Con máis dunha década de experiencia na industria tecnolóxica, perfeccionou as súas habilidades en Microsoft Excel e Outlook, así como en Follas de cálculo e Documentos de Google. O blog de Michael está dedicado a compartir o seu coñecemento e experiencia con outros, proporcionando consellos e titoriais fáciles de seguir para mellorar a produtividade e a eficiencia. Tanto se es un profesional experimentado como un principiante, o blog de Michael ofrece valiosas ideas e consellos prácticos para sacar o máximo proveito destas ferramentas de software esenciais.