Buscar por filas y copiar a libro nuevo

Estimado Luis... ¿Cómo sigue todo? Recurro a tu conocimiento para hacerte una consulta acerca de una rutina de Excel.
En un documento de excel, a lo largo de toda la columna I se encuentran fechas de vencimientos. Requiero hacer un buscador simple, que evalúe a lo largo de toda la columna aquellas filas que tienen fecha de un día anterior, y que al encontrar esas filas, copie la fila desde la columna A hasta la L y las vaya pegando en un nuevo libro de Excel. Para ello había pensado ALGO como lo siguiente (advierto que lo hice recién y sé que es bastante pobre jaja):
Option Explicit
Memo As Date
Buscar As Object
Private Sub CommandButton1_Click()
Memo = (Date - 2)
Set Buscar = Range("I:I").Find(what:=Memo, searchorder:=xlByRows, searchdirection:=xlNext)
ActiveWorkbook.Workbook.Sheets(1).Add
Do While Not IsEmpty(ActiveCell)
    If (ActiveCell = Buscar) Then
        Range(ActiveCell, ActiveCell.Offset(0, -8)).Copy _
        destination := ActiveWorkbook.Sheets(2).range("a1")
    Else
        ActiveCell.Offset(1, 0).Select
Loop
End Sub
Lo malo de este procedimiento es que 1) no sé si está bien la creación del nuevo libro del excel; 2) no estoy señalando DÓNDE COPIAR la fila en el libro nuevo. 3) Es que a medida que copie las filas vaya bajando, como para que al final de la rutina, queden copiadas fila por fila aquellas que cumplen con la restricción.
¡DESDE YA MUCHAS GRACIAS por tu tiempo! Que se entienda que no requiero que construyas la macro por mi, simplemente que puedas tirarme alguna idea acerca de los puntos que indiqué... Nuevamente MUCHÍSIMAS GRACIAS.
Saludos desde argentina!

1 respuesta

Respuesta
1
Estuve revisando tu macro, pero creo que lo más conveniente seria tomar la fecha a buscar, aplicar un filtro sobre la columna I en función de esa fecha que te interesa copiar y luego solo selecconar el rango completo de datos para copiarlos en otra hoja, de esa manera evitas tener que recorrer fila a fila ( imaginate si tienes 65000 registros!) Se vuelve innecesario el recorrido si dentro de todos esos datos solo tienes 3 que cumplen el criterio.
En relación a como saber en que intentar copiar los datos ( hacerlos secuencialmente en hoja de resumen), bastaría con que cuentes los elementos que contiene la hoja en donde pegaras los datos filtrados abviamente contarlos antes de esa forma sabes en que fila deben ir o mejor dicho desde que fila. Para ello utiliza
fila = Application. WorksheetFunction. CountA(Sheets(2).Range("A:A"))+1
En donde a la variable fila le pasas el numero de elementos contenidos en hoja2 +1 así, si tienes 5 registros pues debes pegar los sgtes desde la fila 6 que en este caso esta contenida en variable fila.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas