Filtrar por fechas para varias columnas

¿Quiero filtrar entre fechas (fecha inicio y fecha de corte) para buscar datos
pueden ayudarme con esto?
Quiero filtrar entre las fechas que hay en la columna G y la columna W (el filtro debe incluir las columnas G, I, K, M, O, Q, S, U, W)
Osea que el filtro tendria que abarcar 9 columnas (sin tomar en cuenta las columnas H, J, L, N, P, R, T, V, X)
Para saber por ejemplo cuantos datos ingrese en un mes,

¿Se podra?

1 Respuesta

Respuesta
1

Puedes enviarme tu archivo, en una hoja me pones todos tus datos sin filtros, y en otra hoja me pones un ejemplo de cómo quieres que se vea con filtros

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “ronald montenegro” y el título de esta pregunta.

Hola,

Ya te envíe el archivo. Espero podas ayudarme.

Gracias

Te anexo la macro para filtrar por varias columnas

Private Sub TextBox1_Change()
    'activamos la hoja base
    Sheets("datos"). Activate
    'nos posicionamos en la celda a1
    Sheets("datos").Range("a1").Select
    'limpiamos el listbox
    ListBox1.RowSource = Empty
    'limpiamos la hoja3 donde se genera el filtro avanzado
    Sheets("datosm").Range("A:X"). Clear
    'limpiamos los campos de busqueda del filtro avanzado
    Sheets("datos"). Range("AA2:AX2"). ClearContents
 'le damos el ancho a las 3 columnas del listbox
    'ListBox1.ColumnWidths = "175 pt;118 pt;21 pt;25 pt;50 pt;36 pt;50 pt;50 pt"
    'en la celda e2 se transfiere lo que se escribe en el textbox1 en este caso el codigo
 'los asteriscos entre comillas son para que busque por cualquier letra que se ingrese
 'y los signos & son para unir el asterisco con el valor del textbox
    Sheets("datos").Range("AA2") = "*" & TextBox1 & "*"
    Sheets("datos").Range("AG2, AI2, AK2, AM2") = ">=" & Evaluate("=date(" & Year(TextBox2) & "," & Month(TextBox2) & "," & Day(TextBox2) & ")")
    Sheets("datos").Range("AH2, AJ2, AL2, AN2") = "<=" & Evaluate("=date(" & Year(TextBox3) & "," & Month(TextBox3) & "," & Day(TextBox3) & ")")
    'aqui realizamos el filtro avanzado
    u = Range("A" & Rows.Count).End(xlUp).Row
    Range("A1:X" & u).AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Range("AA1:AX2"), copytorange:=Sheets("datosm").Range("a1"), Unique:=False
    '
    'Act.Por.Dante Amor
    With Sheets("datosm").Cells
        .Borders(xlEdgeLeft).LineStyle = xlNone
        .Borders(xlEdgeTop).LineStyle = xlNone
        .Borders(xlEdgeBottom).LineStyle = xlNone
        .Borders(xlEdgeRight).LineStyle = xlNone
        .Borders(xlInsideVertical).LineStyle = xlNone
        .Borders(xlInsideHorizontal).LineStyle = xlNone
    End With
    With Sheets("datosm").UsedRange
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End With
    '
    'mostramos el resultado del filtro avanzado en el textbox
    ListBox1.RowSource = "datosm!a2:x400"
End Sub

Saludos.Dante Amor

Hola

Fíjate que no funciono aquí, te lo reenvíe para que le hagas una modificación ya que agregue algo que se me había olvidado y es el botón filtrar, o mejor si funcionara sin necesidad de utilizar ese botón seria mejor, disculpa la molestia.

Gracias

La macro para el botón es así:

Private Sub CommandButton1_Click()
    Sheets("datos"). Activate
    'nos posicionamos en la celda a1
    Sheets("datos").Range("a1").Select
    'limpiamos el listbox
    ListBox1.RowSource = Empty
    'limpiamos la hoja3 donde se genera el filtro avanzado
    Sheets("datosm").Range("A:X"). Clear
    'limpiamos los campos de busqueda del filtro avanzado
    Sheets("datos"). Range("AA2:AX2"). ClearContents
 'le damos el ancho a las 3 columnas del listbox
    'ListBox1.ColumnWidths = "175 pt;118 pt;21 pt;25 pt;50 pt;36 pt;50 pt;50 pt"
    'en la celda e2 se transfiere lo que se escribe en el textbox1 en este caso el codigo
 'los asteriscos entre comillas son para que busque por cualquier letra que se ingrese
 'y los signos & son para unir el asterisco con el valor del textbox
    'Sheets("datos").Range("AA2") = "*" & TextBox1 & "*"
    Sheets("datos").Range("AG2, AI2, AK2, AM2, AO2, AQ2, AS2, AU2, AW2") = ">=" & Evaluate("=date(" & Year(TextBox2) & "," & Month(TextBox2) & "," & Day(TextBox2) & ")")
    Sheets("datos").Range("AH2, AJ2, AL2, AN2, AP2, AR2, AT2, AV2, AX2") = "<=" & Evaluate("=date(" & Year(TextBox3) & "," & Month(TextBox3) & "," & Day(TextBox3) & ")")
    'aqui realizamos el filtro avanzado
    u = Range("A" & Rows.Count).End(xlUp).Row
    Range("A1:X" & u).AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Range("AA1:AX2"), copytorange:=Sheets("datosm").Range("a1"), Unique:=False
    '
    'Act.Por.Dante Amor
    With Sheets("datosm").Cells
        .Borders(xlEdgeLeft).LineStyle = xlNone
        .Borders(xlEdgeTop).LineStyle = xlNone
        .Borders(xlEdgeBottom).LineStyle = xlNone
        .Borders(xlEdgeRight).LineStyle = xlNone
        .Borders(xlInsideVertical).LineStyle = xlNone
        .Borders(xlInsideHorizontal).LineStyle = xlNone
    End With
    With Sheets("datosm").UsedRange
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End With
    '
    'mostramos el resultado del filtro avanzado en el textbox
    ListBox1.RowSource = "datosm!a2:x400"
End Sub

Saludos.Dante Amor

Hola

No me funciona, sale error en "sheets("datos").activate (error '32809' en tiempo de ejecución, error definido por la aplicación u objeto)

Solo filtra la primera línea entre esas fechas, y hay más filas que contienen ese rango de fechas.

mandamelo comprimido porfa, derrepente se daña al enviarlo sin comprimir.

No, es lo que te comentaba, solamente un registro cumple con la condición de que todas las columnas están en octubre

Revisa la lógica de tu filtrado.

Por eso te digo que me envíes un ejemplo de lo que quieres filtrar, en el ejemplo que te envié solamente un registro tiene en todas las columnas una fecha del mes de octubre.

Revisa que captures fechas válidas.

Estás poniendo fechas en un textbox, debes ser cuidadoso con los datos que pones, por eso te puse el ejemplo, captura 01/10/2014 y 31/10/2014

Las fechas deben llevar diagonales

Si te envía el error, presiona el botón depurar y dime en qué línea de la macro se pinta de amarillo

Ten envíe una imagen por correo, y dilculpa que no me he explicado bien.

Ten envíe otra imagen por correo

Sí recibí las imágenes, son los ejemplos que te pedí al principio.

Valora esta respuesta, por el ajuste al filtro avanzado.

Ya tengo lista la macro con las adecuaciones para filtrar por fila y columna.

Envíame la nueva pregunta para enviarte la macro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas