Macro que copie y pegue última fila encontrada con un solo criterio en otra hoja.

En la siguiente tabla desde las columnas "A hasta G" en la fila 1 los encabezados y los registros a partir de la fila 2 en adelante sin número constante, pues sus filas se van incrementando a medida que se ingresan nuevos registros que se ingresan por medio de formularios, la hoja donde se registran los datos se llama "DATOS", La columna "C" "FECHA" se introduce por medio de macro que registra la fecha y hora en que se realizó el registro.

CÓDIGO NOMBRE FECHA DEUDA A. DE PAGO ABONO SALDO

100252 JOSE 28/05/2013 $125.0000 $50.000 $45.000 $80.000

100258 ANA 28/05/2013 $ 352.000 $80.000 $80.000 $272.000

100252 JOSE 15/06/2013 $ 120.000 $50.000 $70.000 $50.000

Necesito una macro que me desarrolle la tarea de Buscar por la columna "A" de la Hoja "DATOS" y si los Códigos coinciden en otra hoja llamada "RESUMEN" de la siguiente manera, únicamente lo registrado en la última fila, si solicito el resumen el 16 de Junio:

CÓDIGO NOMBRE FECHA DEUDA A. DE PAGO ABONO SALDO
100252 JOSE 16/06/2013 $120.0000 $50.000 $70.000 $50.000
100258 ANA 16/06/2013 $ 352.000 $80.000 $80.000 $272.000

En conclusión, en la hoja "DATOS", se registran todas las Gestiones desarrolladas, durante el periodo de tiempo y en la Hoja "RESUMEN" se colocarán los datos de la Última fila coincidente, en base a la columna "A" "CÓDIGO" de la Base de Datos SIN repetirse datos de FILA alguna si el registro de la columna "CÓDIGO" es coincidente.

Dam, de antemano infinitas gracias.

Saludos.

1 respuesta

Respuesta
1

Me perdí en tu explicación.

1. Busco en la hoja "DATOS"

2. ¿Qué busco?

3. ¿Y si lo encuentro qué hago?

4. ¿Y si NO lo encuentro qué hago?

Muchas gracias por tu pronta respuesta.

La tarea que debe desarrollar la Macro es buscar de ABAJO HACIA ARRIBA en la hoja "DATOS" en todos los registros, teniendo como criterio de Búsqueda la "Columna A" copiándolo y pegando en la hoja "RESUMEN", TODA LA FILA; esto significa que el segundo registro encontrado hacia arriba coincidente, DEBE SER OMITIDO, o sea en la hoja "RESUMEN" no debe existir Código repetido.

En respuesta a tu pregunta 4 significa que siempre se debe encontrar registro de Código.

En el ejemplo propuesto anteriormente, nótese que existen dos registros con el mismo número de código con fechas y valores ("$") diferentes, pero SOLO se registró en la hoja "RESUMEN" el último de ellos.

Espero que te haya quedado más claro el tema de ayuda.

Saludos.

Prueba la siguiente macro

Sub resumen()
'Por.DAM
Set h1 = Sheets("DATOS")
Set h2 = Sheets("RESUMEN")
h2.Cells.Clear
For i = h1.Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
    Set b = h2.Columns(1).Find(h1.Cells(i, "A"), lookat:=xlWhole)
    If b Is Nothing Then _
        h1.Rows(i).Copy h2.Range("A" & h2.Range("A" & Rows.Count).End(xlUp).Row + 1)
Next
End Sub

Saludos.DAM

Dam, me copia todo el contenido de una hoja a otra, solamente invirtiendo su orden, esto es el último registro de la Hoja "DATOS" pasa a ser el primero de la hoja "RESUMEN" e igualmente me repite los registros, cosa que no se desea que se haga.

Saludos.

DAM, acabo de enviarle un archivo para que realice las pruebas necesarias y pueda entender mejor el sentido de la ayuda.

Saludos.

Vamos por partes, la macro funciona bien, al principio de la pregunta comentaste que el código está en la columna A.

Ahora, el archivo que me enviste en la columna A tienes "REGIÓN".

También solicitaste esto "la Macro es buscar de ABAJO HACIA ARRIBA ", por ende, el primer registro es el de abajo.

"Ten cuidado con lo que pides, se te puede cumplir"

Por. DAM

Modificaste la macro y no me avisas, ahora yo la tengo que arreglar.

Prueba con esta macro

Sub resumen()
'Por.DAM
Set h1 = Sheets("DATOS")
Set h2 = Sheets("RESUMEN")
h2.Cells.Clear
For i = h1.Range("E" & Rows.Count).End(xlUp).Row To 2 Step -1
    Set b = h2.Columns(5).Find(h1.Cells(i, "E"), lookat:=xlWhole)
    If b Is Nothing Then h1.Rows(i).Copy: h2.Range("A2").Insert xlDown
Next
End Sub

Saludos.DAM

Dam, muchas gracias por tu respuesta, en el ejemplo propuesto se decía que no se debía copiar sino el último registro no todos y de manera invertida como lo enviaste, lo de la posición de las columnas es lo de menos, pues las macros son susceptibles de modificar y eso fué lo que hice lo que hacía referencia a la columna "A" cambiarlo a la columna "E", eso no tiene nada que ver con que me copie todos los registros pero de manera inversa y duplicados.

Saludos.

Claro, todas las macros se pueden modificar y lo programo para que sean fáciles de modificar, pero no la modificaste bien.

Ahora los registros son únicos y están ordenados.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas