Tabla de contenido
Hay tres formas de encontrar y eliminar duplicados dentro de una celda en Excel. Sólo tienes que elegir la que mejor te funcione.
Cuando se trata de eliminar valores o filas duplicados, Microsoft Excel ofrece una serie de opciones diferentes. Pero cuando se trata de eliminar texto idéntico dentro de una celda determinada, Excel no ofrece... nada. Ni herramientas, ni funciones, ni fórmulas, ni nada. ¿Nos impedirá esto lograr nuestro objetivo? En ningún caso. Si Excel no tiene la función que necesitamos, vamos a escribir la nuestra :)
Cómo eliminar palabras repetidas en una celda de Excel
Problema Tiene las mismas palabras o cadenas de texto en una celda y desea eliminar la segunda y todas las repeticiones posteriores.
Solución una función personalizada definida por el usuario o una macro VBA.
Función definida por el usuario para eliminar duplicados dentro de una celda
Para eliminar texto duplicado en una celda, puede utilizar la siguiente función definida por el usuario (UDF), denominada EliminarDupePalabras :
Function RemoveDupeWords(text As String , Optional delimiter As String = " " ) As String Dim dictionary As Object Dim x, part Set dictionary = CreateObject ( "Scripting.Dictionary" ) dictionary.CompareMode = vbTextCompare For Each x In Split(text, delimiter) part = Trim(x) If part "" And Not dictionary.Exists(part) Then dictionary.Add part, Nothing End If Next If dictionary.Count> 0 ThenRemoveDupeWords = Join(dictionary.keys, delimiter) Else RemoveDupeWords = "" End If Set dictionary = Nada End FunctionCómo insertar el código de la función en su libro de trabajo
Para añadir el código anterior a su Excel, esto es lo que tiene que hacer:
- Pulse Alt + F11 para abrir el Editor de Visual Basic.
- En el panel izquierdo, haga clic con el botón derecho del ratón en EsteLibroDeTrabajo y seleccione Inserte > Módulo .
- Pegue el código anterior en el campo Código ventana.
Para más información, consulte Cómo insertar código VBA en Excel.
Sintaxis de la función RemoveDupeWords
Nuestra función recién creada para eliminar texto duplicado en una celda tiene la siguiente sintaxis:
EliminarDupePalabras(texto, [delimitador])Dónde:
- Texto (obligatorio) - cadena o celda de la que desea eliminar el texto repetido.
- Delimitador (opcional) - el delimitador por el que se separa el texto repetido. Si se omite, se utiliza un espacio como delimitador.
La función es no distingue mayúsculas de minúsculas lo que significa que las minúsculas y las mayúsculas se tratan como los mismos caracteres.
Cómo utilizar la función RemoveDupeWords
Una vez añadido el código de la función al libro, puede utilizarla en sus fórmulas del mismo modo que utiliza las funciones incorporadas de Excel.
Sólo tienes que empezar a escribir el nombre de la función después del signo igual, y aparecerá en el intellisense de fórmulas. Haz doble clic en la función, y la tendrás insertada en una celda. Define los argumentos, escribe el paréntesis de cierre, pulsa Intro , y tu fórmula estará completa.
Por ejemplo, para eliminar palabras duplicadas separadas por una coma y un espacio de A2, introduzca la siguiente fórmula en B2 y, a continuación, arrástrela hacia abajo a través de tantas celdas como sea necesario:
=RemoverDupeWords(A2, ", ")
Como resultado, tendrá una lista de palabras únicas o subcadenas separadas por un coma y espacio :
Si prefiere obtener una lista separada por comas, utilice sólo una coma para el delimitador:
=RemoverDupeWords(A2, ",")
Si los datos de origen están separados por un espacio el segundo argumento debe ser " " u omitirse:
=RemoverDupeWords(A2)
Como cualquier otra función de Excel, nuestra UDF recalcula automáticamente cuando cambian los datos de origen, por lo que sus resultados siempre estarán actualizados.
Macro VBA para eliminar texto duplicado de varias celdas a la vez
Si desea eliminar texto repetido de varias celdas de una sola vez, puede llamar a la función EliminarDupePalabras dentro de una macro. En este caso, el delimitador está codificado, y tendrá que actualizar el código de la macro cada vez que cambie el delimitador. Como alternativa, puede escribir algunas variaciones de código para los delimitadores más comunes, por ejemplo, un espacio, una coma, o una coma y un espacio, y dar a sus macros nombres significativos, por ejemplo EliminarDupesDelimSpace .
El código de la macro es el siguiente
Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End SubEn el código anterior, el delimitador es un coma y espacio Para utilizar un delimitador diferente, sustituya ", " por otro(s) carácter(es) en esta línea de código:
cell.Value = RemoveDupeWords(cell.Value, ", ")
Nota: Para que la macro funcione, su código y el de la función RemoveDupeWords deben estar en el mismo módulo.
Cómo utilizar la macro
Inserte el código de la macro en su propio libro de trabajo o abra nuestro libro de trabajo de ejemplo con el código y, a continuación, realice los siguientes pasos para ejecutar la macro.
- Seleccione un rango de celdas del que desee eliminar el texto repetido.
- Pulse Alt + F8 para abrir el Macro cuadro de diálogo.
- En la lista de macros, seleccione EliminarDupePalabras2 .
- Haga clic en Ejecutar .
Para más detalles, consulte Cómo ejecutar una macro en Excel.
Nota: Dado que la acción de una macro no se puede deshacer te recomendamos encarecidamente que guardes el libro de trabajo justo antes de utilizar la macro. De este modo, si algo sale mal, sólo tienes que cerrar y volver a abrir el libro de trabajo, y volverás exactamente al punto en el que estabas. También puedes hacer una copia de la(s) hoja(s) de trabajo que podrían verse afectadas por la macro.
Cómo eliminar caracteres duplicados en una celda
Problema Tiene varias apariciones del mismo carácter en una celda, mientras que cada celda sólo debería contener una única aparición de un carácter determinado.
Solución una función personalizada definida por el usuario o una macro VBA.
Función definida por el usuario para eliminar caracteres repetidos
Para eliminar caracteres duplicados dentro de una celda manteniendo sólo las primeras apariciones, puede utilizar la siguiente función definida por el usuario, denominada EliminarDupeChars :
Function RemoveDupeChars(text As String ) As String Dim dictionary As Object Dim char As String Dim result As String Set dictionary = CreateObject ( "Scripting.Dictionary" ) For i = 1 To Len(text) char = Mid(text, i, 1) If Not dictionary.Exists(char) Then dictionary.Add char, Nothing result = result & char End If Next RemoveDupeChars = result Set dictionary = Nothing End FunctionPara insertar el código de la función en su libro de trabajo, los pasos son exactamente los mismos que en el ejemplo anterior.
Sintaxis de la función RemoveDupeChars
La sintaxis de esta función personalizada es de lo más sencilla: sólo requiere un argumento:
EliminarDupeChars(texto)Dónde texto es una cadena o celda de la que desea eliminar caracteres duplicados.
La función es distingue entre mayúsculas y minúsculas y trata las minúsculas y mayúsculas como caracteres diferentes.
Cómo utilizar la función RemoveDupeChars
Todo lo que hemos dicho sobre el uso de RemoveDupeWords es válido para EliminarDupeChars Así que, sin entrar demasiado en la teoría, vayamos directamente a un ejemplo.
Para eliminar los caracteres duplicados de la columna A a partir de A2, introduzca esta fórmula en B2 y cópiela hacia abajo:
=RemoverDupeChars(A2)
Como puede ver en la imagen inferior, la función maneja con éxito diferentes tipos de caracteres, incluyendo letras, dígitos y símbolos especiales:
Consejo: si los personajes están separados entre sí por algún delimitador como un espacio, una coma o un guión, utilice la tecla EliminarDupePalabras como se muestra en el ejemplo anterior.
Macro VBA para eliminar los mismos caracteres de una celda
Como EliminarDupePalabras El EliminarDupeChars también puede invocarse desde una macro:
Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End SubDado que esta UDF no utiliza ningún delimitador, no tendrá que realizar ningún ajuste en el código.
Nota: Para que la macro funcione, su código y el código de RemoveDupeChars UDF deben colocarse en el mismo módulo en el editor VBA.
Cómo utilizar la macro
Suponiendo que ya ha insertado el código de la macro en su libro de trabajo o ha abierto nuestro libro de trabajo de ejemplo que contiene el código, inicie la macro de esta manera.
- Seleccione un rango de celdas del que desee eliminar caracteres repetidos.
- Pulse Alt + F8 para abrir el Macro cuadro de diálogo.
- En la lista de macros, seleccione EliminarDupeChars2 .
- Haga clic en Ejecutar .
Eliminar subcadenas duplicadas con Ultimate Suite
Al principio de este tutorial, se mencionó que Microsoft Excel no tiene una función incorporada para eliminar duplicados dentro de una celda, ¡pero nuestra Ultimate Suite sí la tiene!
Puede encontrarlo en Eliminador de duplicados en el menú desplegable Datos de Ablebits en la pestaña Deduplicación Si el grupo Eliminar subcadenas duplicadas no aparece en su Excel, asegúrese de que tiene instalada la última versión de Ultimate Suite (puede descargar una versión de prueba gratuita aquí).
Para eliminar palabras o texto repetido de varias celdas en 5 segundos (un segundo por paso :), esto es lo que tienes que hacer:
- Seleccione sus datos de origen e inicie el Eliminar subcadenas duplicadas herramienta.
- Especifique el delimitador .
- Definir si tratar delimitadores consecutivos como uno (por defecto).
- Elija si desea realizar distingue entre mayúsculas y minúsculas o distingue entre mayúsculas y minúsculas búsqueda.
- Haga clic en Eliminar .
Listo, sin tener que manipular VBA ni fórmulas, sólo resultados rápidos y precisos.
Para obtener más información sobre este magnífico complemento, visita su página de inicio o, mejor aún, descárgate una versión de evaluación y pruébalo.
Así es como se elimina el texto duplicado en una celda. Te doy las gracias por leer y ¡espero verte en nuestro blog la semana que viene!
Descargas disponibles
Ejemplos para eliminar duplicados en celdas (archivo .xlsm)
Ultimate Suite 14 días versión totalmente funcional (archivo .exe)