Cómo utilizar ejemplos de macro para eliminar elementos duplicados de una lista en Excel 2002

Para obtener una versión de este artículo para Microsoft Excel 2000, vea
240077 .

Resumen

En Microsoft Excel, puede crear una macro para eliminar elementos duplicados de una lista. También puede crear una macro para comparar dos listas y eliminar elementos de la segunda lista que también estén en la primera (principal). Esto resulta útil si desea combinar dos listas en una o si sólo desea consultar la información nueva.

En este artículo se incluyen macros de ejemplo de Microsoft Visual Basic para Aplicaciones (procedimientos Sub) que muestran cómo eliminar registros duplicados en una única lista (Ejemplo 1) y cómo eliminar los registros duplicados después de comparar una lista con otra (Ejemplo 2). Estas macros no requieren que se ordene la lista. Asimismo, las macros eliminan cualquier número de entradas duplicadas, independientemente de si un elemento está duplicado una vez o varias en la lista.

Más información

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. En este artículo se da por supuesto que ya conoce el lenguaje de programación que se muestra, así como las herramientas empleadas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades específicas.

Ejemplo 1: eliminar elementos duplicados en una única lista

La macro del ejemplo siguiente busca una única lista del rango A1:A100 y elimina todos los elementos duplicados de la lista. Esta macro requiere que no haya celdas vacías en el rango de la lista. Si su lista contiene celdas vacías, ordene los datos en orden ascendente para que todas las celdas vacías estén al final de la lista.
Sub DelDups_OneList() Dim iListCount As Integer Dim iCtr As Integer

' Desactivar la actualización de pantalla para acelerar la macro. Application.ScreenUpdating = False

' Obtener un recuento de los registros en los que buscar. iListCount = Sheets("Sheet1").Range("A1:A100").Rows.Count Sheets("Sheet1").Range("A1").Select ' Recorrer en bucle hasta el final de los registros. Do Until ActiveCell = "" ' Recorrer en bucle los registros. For iCtr = 1 To iListCount ' No comparar contra sí mismo. ' Para especificar una columna diferente, cambie el valor 1 en el número de columna. If ActiveCell.Row <> Sheets("Sheet1").Cells(iCtr, 1).Row Then ' Comparar el registro siguiente. If ActiveCell.Value = Sheets("Sheet1").Cells(iCtr, 1).Value Then ' Si la coincidencia es verdad, eliminar la fila. Sheets("Sheet1").Cells(iCtr, 1).Delete xlShiftUp ' Contador de incrementos para contar la fila eliminada. iCtr = iCtr + 1 End If End If Next iCtr ' Ir al registro siguiente. ActiveCell.Offset(1, 0).Select Loop Application.ScreenUpdating = True MsgBox "Done!" End Sub

Ejemplo 2: comparar dos listas y eliminar elementos duplicados

La macro del ejemplo siguiente compara una lista (principal) con otra y elimina los elementos duplicados de la segunda lista que también están en la principal. La primera lista está en Sheet1 en el rango A1:A10. La segunda lista está en Sheet2 en el rango A1:A100. Para usar la macro, seleccione cualquiera de las dos hojas y ejecute la macro.
Sub DelDups_TwoLists() Dim iListCount As Integer Dim iCtr As Integer

' Desactivar la actualización de pantalla para acelerar la macro. Application.ScreenUpdating = False

' Obtener un recuento de los registros en los que buscar (la lista que se eliminará). iListCount = Sheets("sheet2").Range("A1:A100").Rows.Count

' Recorrer en bucle la lista "principal". For Each x In Sheets("Sheet1").Range("A1:A10") ' Recorrer en bucle todos los registros de la segunda lista. For iCtr = 1 To iListCount ' Comparar el siguiente registro. ' Para especificar una columna diferente, cambie el valor 1 en el número de columna. If x.Value = Sheets("Sheet2").Cells(iCtr, 1).Value Then ' Si la coincidencia es verdad, eliminar la fila. Sheets("Sheet2").Cells(iCtr, 1).Delete xlShiftUp ' Contador de incrementos para contar la fila eliminada. iCtr = iCtr + 1 End If Next iCtr Next Application.ScreenUpdating = True MsgBox "Done!" End Sub

Referencias

Para obtener más información acerca de cómo usar el código de ejemplo de este artículo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
290140 Cómo ejecutar el código de ejemplo para los programas de Office XP incluido en artículos de Knowledge Base
Propiedades

Id. de artículo: 291320 - Última revisión: 9 ene. 2017 - Revisión: 1

Comentarios