Ya habíamos visto de pasada en este artículo cómo borrar los elementos duplicados de una lista. Vimos que la forma más fácil de borrar los duplicados era hacerlo desde una aplicación como Microsoft Excel.
Esta vez lo vamos a hacer con programación (mediante código VBA). Como ventaja añadida, conseguiremos algo que no podíamos con el anterior método.
De esta forma, podrás elegir el método que necesitas para cada ocasión.
⁂
1.er método para borrar los duplicados (recordatorio)
Partimos de una lista de elementos como esta:

Esta lista te interesa para:
- extraer terminología de un documento;
- extraer las variables que vas a incluir en una memoria de traducción.
Independientemente del objetivo de esta lista, ahora quieres borrar sus duplicados para tener una lista más aprovechable.
Ya vimos que el botón para borrar duplicados en Excel se llama Quitar duplicados y está dentro del grupo Herramientas de datos de la ficha Datos de la cinta de Excel:

Primero seleccionas el rango de celdas con todos los elementos de la lista y después pulsas el botón Quitar duplicados y después de este mensaje informativo:

consigues la lista limpia que querías, sin ningún elemento repetido:

Hasta aquí bien, ¿verdad?
Nota: por simplicidad, he confeccionado una lista breve de solo 7 elementos, pero lo dicho es extrapolable a listas gigantescas de cientos o miles de elementos.
Si te fijas bien, aparte de que ha desaparecido un elemento «Microsoft» y otro «IBM», verás que ha desaparecido el elemento «SUN» porque se ha tomado como idéntico a «Sun». Ambos elementos se diferencian nada más en que uno es la versión en mayúsculas del otro. Si esto es lo que quieres, ¡fenomenal, ya has terminado!
Pero si quieres mantener los dos elementos, «Sun» y «SUN», porque justamente los tomas como diferentes, entonces debes emplear otro método para borrar los duplicados y que vamos a ver ahora:
⁂
2.º método para borrar los duplicados (macro VBA)
Este segundo método tiene en cuenta que «Sun» y «SUN» son elementos distintos y, por tanto, hay que mantener ambos en la lista.
Ahora no podremos usar el botón Quitar duplicados, sino que ejecutaremos una macro en VBA.
La macro que te propongo usar es la siguiente:
Sub borrarDuplicados()
' Borra los duplicados de la columna A. Distingue mayús./minús.
' www.gonduana.com/como-borrar-los-duplicados-de-una-lista
Dim lista, elemento, final
With Range("a1", Range("a" & Rows.Count).End(xlUp))
lista = .Value
.ClearContents
With CreateObject("Scripting.Dictionary")
For Each elemento In lista
.Item(elemento) = Empty
Next
final = .keys
End With
.Resize(UBound(final) + 1).Value = Application.Transpose(final)
End With
End Sub
Una vez tienes este código en tu colección de macros, podrás ejecutarla cuando la necesites, incluso con tu propio botón personalizado, y es tan directo como el botón Quitar duplicados que trae Excel de serie en la cinta.
La lista limpia que consigues es:

Explicación de la macro
Antes de ejecutar la macro borrarDuplicados, se supone que tienes la lista en bruto en la columna A de una hoja de Excel.
Atento ahora, que el código es complicadillo:
En línea 5 se selecciona las celdas con datos mediante un método ingenioso (no, no es mío) que emplea la propiedad Count y el método End.
En línea 6 se pasan todos los valores de la lista en bruto a la matriz lista.
Es un paso necesario, porque justo en la siguiente línea (7) se borra toda la lista de la hoja de Excel.
En la línea 8 se crea un objeto especial, un diccionario (Scripting.Dictionary). Como todos los diccionarios, este diccionario recién creado tiene entradas, con la particularidad de tener claves que, por defecto, distinguen entre mayúsculas y minúsculas. Esta propiedad tan interesante es la que aprovechamos en la macro.
En el lazo For Each … Next, que comprende las líneas 8 a 11, se pasa por cada uno de los elementos de la matriz lista.
Al final, en la línea 12 se pasa a la matriz final los valores de las claves, los valores que son exclusivos y únicos; o lo que es lo mismo, sin los valores repetidos.
En la línea 14 se trasponen los valores (se pasan de horizontal a vertical) para colocarlos en la misma columna A de la hoja de Excel.
Como digo, la macro es complicada, con mucho la más complicada que hemos visto en Gonduana, pero te da lo mismo: solo tienes que copiarla tal cual, pegarla con tus otras macros y ejecutarla cuando la necesites. Y ya sabes que una macro complicada se copia igual que una macro sencilla.
⁂
Conclusiones de borrar los duplicados
Hemos visto dos procedimientos para borrar los duplicados:
- Uno directo con el botón Quitar duplicados de la cinta de Excel, que no tiene en cuenta las mayúsculas y minúsculas («a» y «A» son idénticos, de modo que uno de ellos desaparecerá).
- Otro procedimiento con código VBA que distingue entre mayúsculas y minúsculas («a» y «A» son diferentes, de modo que ambos se mantendrán).
El resultado final es distinto, de modo que podrás elegir según tu objetivo.
⁂
Nada más, solo un par de recomendaciones si te interesa la programación de VBA en Excel:
- Lee los otros artículos de VBA o de Excel de este mismo blog. Los tienes todos si filtras por «VBA» o «Excel» en la nube de etiquetas (columna derecha del blog).
- Suscríbete al boletín del blog, o sígueme en LinkedIn, Facebook o Twitter (@jssprt). De esta manera, serás el primero en enterarte de la publicación de los artículos.






¡Muchas gracias!
No sabes lo bien que me viene. Hace tiempo que quiero hacer una macro parecida, para poder hacer una planilla excel que me sirva para hacer después una memoria de traducción.
En esta macro, diferencias entre mayúsculas y minúsculas. ¿Sabes si sería posible diferenciar aquellas celdas que comiencen con un número (entre uno y tres dígitos). Supongo que sí, pero mi conocimiento de excel es limitadísimo, y de VBA sé todavía menos.
Saludos cordiales.
Hola, Marcela:
Me alegro mucho de que te sea útil.
Una pregunta: ¿Para qué quieres saber las celdas que empiecen por un número?
Si solo es para borrarlas, simplemente ordena la columna de menor a mayor (botón A-Z en la ficha Datos de la cinta de Excel); las celdas que empiecen por un número quedarán arriba todas juntas y luego las borras manualmente.
Saludos.
… Jesús Prieto …
Gracias.
El asunto es que no las quiero borrar, sino trasponer de vertical a horizontal, pero conservando el número. Número que, además, para excel no es tal porque está dentro de una cadena de caracteres.
Pero, gracias, nuevamente. Ya le encontraré la vuelta. (Espero).
Bueno, puedes ordenar la lista y en vez de borrar esas celdas que empiezan con un número, las traspones…
Un saludo.
… Jesús Prieto …
Hola Jesus! Muchas gracias por la informacion. Tengo una situacion algo parecida, pero con Word. Al extraer la informacion de una base de datos, aparecen tres o cuatro oraciones repetidas en el document de Word por lo menos 20 veces. Dos de esas oraciones tienen urls y esto dificulta eliminarlas con "Find and Replace". Existe alguna forma de eliminar esas oraciones en Word antes de trabajar la traduccion en Trados sin necesidad de entrarlas una a una en "Find and Replace" (Encontrar y reemplazar)? Saludos desde America!
Hola, Hector:
Lo siento, no sabría cómo hacerlo en Word, pero supongo que tiene que ser posible programando en VBA…
Por curiosidad: Me pregunto por qué quieres borrar esas oraciones duplicadas, cuando Trados Studio maneja muy bien las repeticiones.
Un abrazo desde España.
… Jesús Prieto …
Muchas gracias, Jesus! Es muy probable que la solucion este en Trados. Cuando voy a los filtros y selecciono "Repeticiones", no solo aparencen las 4 oraciones varias veces y tambien muchas otras unidades repetidas. Seria ideal que solo aparecieran esas 4 oraciones las veces que estan repetidas para hacer "lock" y asi no tener que trabajarlas durante la traduccion. Hasta ahora no he logrado eso. Saludos!
En Studio puedes filtrar la repeticiones como has hecho y, además, filtrar por contenido.
Por ejemplo, si quieres bloquear las oraciones que tienen una URL, puedes escribir www en el campo origen de los filtros. De esa forma, solo te saldrán los segmentos que te molestan. Para esto, puedes mirarte este otro artículo mío:
Traducir y revisar con los filtros de SDL Trados Studio
Para rizar el rizo, en vez de filtrar las repeticiones, puedes filtrar las repeticiones, excepto la primera aparición. De este modo, estarás seguro de que puedes bloquear todos los segmentos que te salgan porque el primero quedará fuera.
¡Suerte!
… Jesús Prieto …
Excelente. Muchas gracias, Jesus!
Hola de Nuevo! Seria posible crear una expresion regular que incluya varias oraciones para que aparezcan en el filto todas a la vez? No se si me he explicado bien. Saludos!
Sí se puede, sí.
Aparte del anterior artículo, tienes este otro que también te puede ayudar:
Expresiones regulares en los filtros de Studio
¡Suerte!
… Jesús Prieto …
Muy bien, Jesus. Muchas gracias. Un abrazo!
Hola Jesús:
Me ha venido genial esta macro. No la conocía y googleando lo encontré aquí. ¡Muchas gracias!
Un abrazo,
Almudena
Muy buenos días, Almudena:
¡Encantado de verte por aquí y de que la macro te resultara útil!
Un fuerte abrazo,
… Jesús Prieto …
Muy buenas tardes. Disculpas por el pedido de ayuda, pero ando tratando de crear un codigo y no lo consigo. Lo que deseo es ocultar los duplicados de un rango de filas de una misma columna pero conservar solo uno, o sea sin perderlo de vista, que solo se oculten las repeticiones, pero solo ocultarlas ( no eliminarlas), mediante .hidden=true, y este tipo de sintaxis no me sirve ya que la oculta y a pesar de eso la toma como como repetida y termino ocultando todas. Espero haberme explicado bien. Aguardo tu esperanzadora ayuda. Saludos desde argentina!!!
Hola, Germán:
No olvides pasarte por aquí para poner el código de tu macro, porque podrás ayudar a más lectores.
Un abrazo desde España,
… Jesús Prieto …