Filtro múltiple con lista desplegable

Tengo un filtro avanzado con múltiples criterios, el cual funciona de manera eficaz y quiero mantenerlo intacto. Hay varios criterios de fechas que quisiera integrar en una celda con lista desplegable. ¿Cómo se puede hacer?

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [a3:a4,b3:b4,c4:f4,g3:g4]) Is Nothing Then Exit Sub
[a2].Resize(, 10).ClearContents
---criterio "desde/hasta fecha de entrada"---
If [a3] <> "" And [a4] = "" Then [a2:b2] = Array(">=" & [a3].Formula, "<=" & [a3].Formula)
If [a3] = "" And [a4] <> "" Then [a2:b2] = Array(">=" & [a4].Formula, "<=" & [a4].Formula)
If [a3] <> "" And [a4] <> "" Then [a2:b2] = Array(">=" & [a3].Formula, "<=" & [a4].Formula)
---criterio "desde/hasta fecha de salida"---
If [b3] <> "" And [b4] = "" Then [c2:d2] = Array(">=" & [b3].Formula, "<=" & [b3].Formula)
If [b3] = "" And [b4] <> "" Then [c2:d2] = Array(">=" & [b4].Formula, "<=" & [b4].Formula)
If [b3] <> "" And [b4] <> "" Then [c2:d2] = Array(">=" & [b3].Formula, "<=" & [b4].Formula)
---criterio "desde/hasta fecha de pago"---
If [g3] <> "" And [g4] = "" Then [i2:j2] = Array(">=" & [g3].Formula, "<=" & [g3].Formula)
If [g3] = "" And [g4] <> "" Then [i2:j2] = Array(">=" & [g4].Formula, "<=" & [g4].Formula)
If [g3] <> "" And [g4] <> "" Then [i2:j2] = Array(">=" & [g3].Formula, "<=" & [g4].Formula)
---criterios varios---
[e2:h2] = [c4:f4].Value
[a1:b1] = [a6].Value
[c1:d1] = [b6].Value
[i1:j1] = [g6].Value
[e1:h1] = [c6:f6].Value
[a6].CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=[a1:j2], Unique:=False
End Sub

1 Respuesta

Respuesta
1

Supongo que quieres poner las listas desplegables en las celdas de fechas (A3, A4, etc)

También supongo que en la lista sólo deben aparecer fechas validas.

Se me ocurren un par de ideas

La primera, que pongas todas tus "fechas validas", en una lista en la misma hoja o en otra hoja y luego en la celda A3 pongas una validación de datos y que te permita solamente datos de la lista de "fechas validas", de esta forma solamente podrás tomar una fecha de la lista de "fechas validas".

Cómo poner una validación de datos:

1. Escribe las fechas validas en una columna de tu hoja, por ejemplo columna L, desde la L2 hasta la L200

2. Selecciona la celda A3

3. Selecciona del menú Datos / Validación

4. Del combo Permitir: selecciona Lista

5. En el campo Origen: seleccionar las celdas de la L2:L200

La segunda, si los criterios de fechas son más complejos, podrías crear un userform con varios controles un control para cada fecha (por ejemplo, un calendar, o un DTPicker, o un MonthView), para que puedas elegir una fecha de un calendario. Una vez elegida la fecha puedes aplicar las validaciones que necesitas, si algo en la fecha no está bien, podrías enviar un mensaje a pantalla, algo como esto:

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
Select Case Weekday(MonthView1)
Case 1 'Domingo
MsgBox "El día domingo no es una fecha valida"
Case Else
'otras validaciones
'Pasa el valor del calendario a la celda A3
Range("A3") = MonthView1
End Select
End Sub

Saludos. Dam
Si es lo que necesitas.

Hola Dam,

Creo que no me he explicado bien: La lista desplegable debería estar en una sola celda y mostrar los criterios (entrada/salida/pago) y no las fechas.

Bueno es que decías esto: "Hay varios criterios de fechas que quisiera integrar en una celda con lista desplegable"

Entonces adapta lo que te escribí, pero en lugar de ponerlo en la celda A3, ponlo en la celda C4

En la lista de valores no pongas fechas pon los criterios de entrada/salida/pago

O explícame con mayor detalle lo que necesitas

Saludos. Dam

Hola Dam,

Me refería a integrar los "criterios", no las fechas.

De todos modos, la solución no es tan simple, es necesaria alguna función o rutina (quizás tipo SelectCase?) que al insertar la fecha tenga en cuenta el criterio seleccionado en la celda de validación.

Creo ya voy entendiendo pero tendrías que enviarme un par de ejemplos para cada criterio.

Quieres decir que, capturas una fecha y en una celda pones el criterio 1, luego el criterio 1 significa que:

a) Validación 1

b) validación 2

c) validación 3

Entonces tendrías varios criterios, el criterio 2, tendría otras validaciones, ¿el 3 otras validaciones y así más o menos?

Si tienes todos los escenarios posibles, así sean 20 criterios los podemos meter en un select case como comentas.

¿Como te puedo enviar un archivo para que lo veas?

Explícame en el archivo con imágenes y colores lo que necesitas comoo resultados.

Hola Dam, te he enviado el archivo.

Te envié el archivo con la lista desplegable

Saludos. Dam
Si es lo que necesitas.

Pudiste revisar la versión que te envié, si no tienes comentarios.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas