¿Cómo elaborar una macro que copie los datos a de una hoja a otra de acuerdo a dos criterios (FechaInicial y FechaFinal)
En esta oportunidad necesito que me ayudes a elaborar una macro que extraiga los datos que contien una línea qué como indicativo de búsqueda posee una fecha, pero los datos a extraer son los que posea la fecha inmediato anterior a la fecha inicial... Acá te dejo un ejemplo censillo a partir de una macro que proporcionaste y en el cual describo lo que necesito.
Lo que quisiera es encontrar una forma que la macro recoja el primer valor Inmediato anterior a la fecha inicial, es decir la fecha que está arriba de la fecha Inicio así como se ve en la primer imagen en relleno color verde y la pegue en la hoja Resumen en el rango que se le indique.
Actualmente la macro hace esto: Sí copia los datos comprendidos entre las dos fechas, pero a la hora de pegar los datos que corresponden a la fecha anterior a la de inicio, éste pega el de la primera fecha que encuentra de arriba hacia abajo.
Lo que se necesita es que peque los datos de la primera fecha, pero el recorrido sería de abajo hacia arriba o como sea, pero que la fecha sea la inmediato anterior a la fecha inicio es decir la primer fecha que está arriba de la fecha inicio.
Te dejo los códigos utilizados, mismos que proporcionaste
Private Sub btnConsulta_Click()
Sheets("Resumen").Activate
Set H1 = Sheets("Ventas")
Set H2 = Sheets("Resumen")
H2.Range("C3:F" & Rows.Count).ClearContents
Fecha1 = H1.[K8]
Fecha2 = H1.[K9]
j = 3
n = 0
For i = 10 To H1.Range("C" & Rows.Count).End(xlUp).Row
If H1.Cells(i, "C") >= Fecha1 And H1.Cells(i, "C") <= Fecha2 Then
H1.Range("C" & i & ":F" & i).Copy
H2.Range("C" & j).PasteSpecial xlValues
j = j + 1
n = n + 1
End If
Next
Este es la parte de la macro que habría que modifcarle los códigos para que realice la acción indicada
FechaAnterior = Fecha1 - 1
H2.[F2] = ""
H2.[D2] = ""
For i = 1 To 4
Set b = H1.Columns("C").Find(FechaAnterior, lookat:=xlWhole)
If Not b Is Nothing Then
H2.[F2] = H1.Cells(b.Row, "F")
H2.[D2] = H1.Cells(b.Row, "C")
Exit For
Else
FechaAnterior = FechaAnterior - 1
End If
Next
End Sub