Filtrar fechas y copiar a otra hoja excel

Aquí otra vez un poco renegado. El problema es que no puedo filtrar fechas con una macro, algo que debería de ser fácil, me esta haciendo doler la cabeza. Paso a explicar:

Tengo mi hoja1 = "Temporal" y mi hoja2 = " Filtrado" .

Rango es hoja1. Range ("AH2:AP5000")

Tengo un userform con un combobox1 y un botón.

Lo que quiero es que si el combobox dice "Marzo", me busque en la columna AH las fechas y las filtre todas de ese mes, desde el 01/03/2016 hasta el 31/03/2016. Si dice "FEBRERO" que filtre todas de ese mes. Luego que copie a la Hoja2 desde A2 toda la información.

He filtrado de todas formas, pero el problema de las fechas no me deja hacerlo.

1 respuesta

Respuesta
1

H o l a:

¿Puedes poner el código que utilizaste para cargar los meses en el combo?

H o l a:

Ya resolví lo del mes.

Faltó que mencionaras si en la hoja1 tienes encabezados. Estoy suponiendo que sí tienes encabezados y que están en la fila1.

También faltó que mencionaras en cuál celda de la hoja2 se van a pegar. Estoy poniendo que se van a pegar en la celda A1.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Dim fini As Date, ffin As Date
    Set h1 = Sheets("Temporal")
    Set h2 = Sheets("Filtrado")
    '
    h2.Cells.ClearContents
    If ComboBox1 = "" Then Exit Sub
    meses = Array("", "ENERO", "FEBRERO", "MARZO", "ABRIL", "MAYO", "JUNIO", _
            "JULIO", "AGOSTO", "SEPTIEMBRE", "OCTUBRE", "NOVIEMBRE", "DICIEMBRE")
    mes = ""
    For m = 1 To 12
        If UCase(ComboBox1) = meses(m) Then
            mes = m
            Exit For
        End If
    Next
    If mes = "" Then
        MsgBox "El combo no tiene un mes correcto"
        Exit Sub
    End If
    '
    fini = DateSerial(Year(Date), mes, 1)
    udia = Day(DateSerial(Year(Date), mes + 1, 1) - 1)
    ffin = DateSerial(Year(Date), mes, udia)
    finitxt = Format(fini, "mm/dd/yyyy")
    ffintxt = Format(ffin, "mm/dd/yyyy")
    '
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    u = h1.Range("AH" & Rows.Count).End(xlUp).Row
    h1.Range("A1:AP" & u).AutoFilter Field:=Columns("AH").Column, _
        Criteria1:=">=" & finitxt, Operator:=xlAnd, _
        Criteria2:="<=" & ffintxt
    u = h1.Range("AH" & Rows.Count).End(xlUp).Row
    If u = 1 Then
        MsgBox "No hay registros filtrados"
    Else
        h1.Range("A2:AP" & u).Copy
        h2.[A1].PasteSpecial xlValues
        MsgBox "Registros copiados"
    End If
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

Notas: Las fechas tienen que calcularse en una variable de tipo fecha, después hay que pasar la fecha a texto, pero con formato "mm/dd/yyyy" es el formato inglés.


':)
':)

¡Gracias! Amigo Dante eres lo máximo, solo tuve que arreglar este renglón:

h1.Range("A2:AP" & u).Copy
Por este
h1.Range("AH2:AP" & u).Copy

y quedó como lo quería. Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas