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
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.
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.
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
- Compartir respuesta