Filtrar y copiar valores únicos con una macro

De nuevo por aca buscando una "dosis de valiosa ayuda".
La situacion es la siguiente: estoy realizando una aplicación que automatice una operacion.
En la hoja A se introducen los siguientes datos:grupo, fecha, Id, condición y monto. El grupo (A o B)identifica el origen de esos datos. La hoja registrara datos duplicados en cuanto a fecha, id, condición y monto, es decir podrán haber registros del grupo A que sean idénticos a los del grupo B, solo se diferenciaran en el grupo.
Pero ademas de los registros duplicados, podrán registrarse valores únicos por cada grupo.
Los datos en cuestión, independientemente de su origen (grupo)mantienen un formato único, de manera que puedan establecerse comparaciones.
La idea de registrar en la hoja A ambas fuentes de datos, es poder filtrar todos aquellos registros no coincidentes y copiarlos a otra hoja y a partir de esta ultima hacer un resumen que totalice el monto, de acuerdo a ciertos criterios.
Tengo la siguiente macro que filtra los registros únicos y los copia desde la hoja1 a la hoja2:

Sub Macro1()
Sheets("hoja1").Select
Range("A2:E22").Select
Selection.Copy
Sheets("hoja2").Select
Range("a2").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
Application.CutCopyMode = False
Sheets("hoja2").Range("$a$2:$a$22").Select
Dim fila As Long
With Application
For fila = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If .WorksheetFunction.CountIf(Range("$a$2:$a$22"), _
Cells(fila, 1)) > 1 Then Cells(fila, 1).EntireRow.Delete
Next fila
End With
End Sub

Funciona a medias para mi propósito, ya que al filtrar los datos lo hace tomando en cuenta solamente el criterio del los grupos, es decir la columna 1 y lo que busco es que compare, simultáneamente, los registros que sean iguales en cuanto a fecha, Id, condición y monto y filtre los no coincidentes independientemente del grupo.

1 Respuesta

Respuesta
1

Te anexo la macro

Sub Macro1()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    h2.Cells.ClearContents
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    h1.Range("A2:E" & u).Copy
    h2.[A2].PasteSpecial Paste:=xlPasteValues
    h2.Columns("B:B").NumberFormat = "m/d/yyyy"
    h2.Range("A2:E" & u).RemoveDuplicates Columns:=Array(2, 3, 4, 5), Header:=xlNo
End Sub

Prueba y me comentas.

Saludos. Dante Amor

Recuerda valorar la respuesta.

Gracias por responder, corrí la macro con los datos siguientes en la hoja1:

Grupo Fecha Id Condición Monto
A 01/07/2013 1 No Contribuyente 7.166,42
A 03/07/2013 6 No Contribuyente 40.682,40
A 04/07/2013 1 No Contribuyente 23.461,83
A 05/07/2013 3 No Contribuyente 43.012,27
A 06/07/2013 4 No Contribuyente 20.192,56
A 07/07/2013 6 No Contribuyente 25.182,14
A 08/07/2013 1 No Contribuyente 45.769,25
A 09/07/2013 3 No Contribuyente 40.926,72
A 10/07/2013 3 No Contribuyente 5.279,02
A 11/07/2013 3 No Contribuyente 1.678,05
A 12/07/2013 6 No Contribuyente 32.808,07
B 01/07/2013 1 No Contribuyente 7.166,42
B 04/07/2013 1 No Contribuyente 23.461,83
B 05/07/2013 3 No Contribuyente 43.012,27
B 06/07/2013 4 No Contribuyente 20.192,56
B 07/07/2013 6 No Contribuyente 25.182,14
B 08/07/2013 1 No Contribuyente 45.769,25
B 09/07/2013 2 No Contribuyente 40.926,72
B 10/07/2013 3 No Contribuyente 5.279,02
B 11/07/2013 4 No Contribuyente 1.678,05
B 12/07/2013 6 No Contribuyente 32.808,07

El resultado que dio la ejecución fue:

A 01/07/2013 1 No Contribuyente 7166,42
A 03/07/2013 6 No Contribuyente 40682,4
A 04/07/2013 1 No Contribuyente 23461,83
A 05/07/2013 3 No Contribuyente 43012,27
A 06/07/2013 4 No Contribuyente 20192,56
A 07/07/2013 6 No Contribuyente 25182,14
A 08/07/2013 1 No Contribuyente 45769,25
A 09/07/2013 3 No Contribuyente 40926,72
A 10/07/2013 3 No Contribuyente 5279,02
A 11/07/2013 3 No Contribuyente 1678,05
A 12/07/2013 6 No Contribuyente 32808,07
B 05/07/2013 3 No Contribuyente 43012,27
B 06/07/2013 4 No Contribuyente 20192,56
B 07/07/2013 6 No Contribuyente 25182,14
B 08/07/2013 1 No Contribuyente 45769,25
B 09/07/2013 2 No Contribuyente 40926,72
B 10/07/2013 3 No Contribuyente 5279,02
B 11/07/2013 4 No Contribuyente 1678,05
B 12/07/2013 6 No Contribuyente 32808,07


Y el resultado que busco es:

A 03/07/2013 06/01/1900 No Contribuyente 40682,4
A 09/07/2013 03/01/1900 No Contribuyente 40926,72
B 09/07/2013 02/01/1900 No Contribuyente 40926,72

Estos tres registros son los únicos que difieren en algún dato de los campos fecha id condición o monto.
Gracias

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas