Hola a todos,
Aquí solicitandoles un consejo sobre el siguiente problema que tengo en mi código. Básicamente, es un filtro avanzado en base a cuatro criterios. Los primeros tres filtros si me los ejecuta pero el cuatro y quinto no lo hace. No sé si me pudieran orientar qué es lo que está mal y como puedo solucionarlo.
Saludos y gracias!
If [J22] = 0 And [K22] = 0 And [L22] = 0 And [M22] = 0 Then
datos = MsgBox("Error: Seleccione los criterios de búsqueda")
End If
Range("BD[#All]").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _
:=Range("J21:M22"), Unique:=False
If [J22] = 0 And [K22] <> 0 And [L22] <> 0 And [M22] = 0 Then
Range("BD[#All]").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _
:=Range("K21:L22"), Unique:=False
End If
If [J22] <> 0 And [K22] <> 0 And [L22] = 0 And [M22] = 0 Then
Range("BD[#All]").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _
:=Range("J21:K22"), Unique:=False
End If
If [J22] <> 0 And [K22] = 0 And [L22] = 0 And [M22] <> 0 Then
Range("BD[#All]").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _
:=Range("J21:M22"), Unique:=False
End If
If [J22] <> 0 And [K22] = 0 And [L22] <> 0 And [M22] = 0 Then
Range("BD[#All]").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _
:=Range("J21:L22"), Unique:=False
End If
Cuando en el cuarto caso pones que el rango de criterios es J21:M22 estás considerando desde la J hasta la M, es decir, que también incluye lo que tengas en las columnas K y L (que por las condiciones que pones ahí serán ceros)
El filtro avanzado no permite poner un rango discontinuo en el filtro, así que no puedes decir que tu criterio está en la J y en la M nada más.
Yo he resuelto esto en alguna ocasión poniendo una condición en la celda en vez de un cero, por ejemplo >=0, así todos los números positivos cumplirían (según los datos pongo una cosa u otra)
Trato de poner siempre que puedo un rango de criterios único que me sirva para todos los casos, en vez de seleccionar distintos rangos mediante VBA
------
Ya sé Excel, pero necesito más.
Hola Paco,
Trabaje con lo que me recomendaste de >=0, sin embargo aún así no funcionó. No entendí bien la parte de poner un rango de criterios único, no sé si me pudieras apoyar dando un poco más detalle de como realizarlo.
Básicamente lo que busco es que se pueda filtrar a partir de cuatro criterios, todas las combinaciones posibles. Por eso opté por utilizar distintos rangos.
De antemano muchas gracias!!
Saludos!
Jesús
con lo de rango de criterios único, me refiero a que tiene que ser un rango continuo, es decir, que las condiciones deben estar una al lado de la otra, no puedes tomar la condición en la columna J y también la de la M, saltándote las columnas K y L
lo que puedes hacer es repetir algunos criterios para que queden juntos aquellos que necesitas.
partes de un rango de criterios con esta estructura:
campo1-campo2-campo3-campo4
este rango te vandría para criterios 1-2, 2-3, 3-4, 1-2-3, 2-3-4
pero ¿cómo pones el criterio 1 y 4? pues repite el criterio 1 a continuación del 4
campo1-campo2-campo3-campo4-campo1
con esto, eligiendo como rango de criterio las dos últimas columnas ya tienes el caso 1-4 (o 4-1 que da igual)
también tenemos el 1-3-4
¿y cómo conseguiríamos el caso 1-3? pues añadiendo el campo3 a continuación
campo1-campo2-campo3-campo4-campo1-campo3
(aún faltaría un caso 2-4)
de esta manera, queda algo más compacto que repitiendo los criterios completos, que sería otra opción, tener un rango de criterios para cada caso.
Como ves, el orden de los campos para los criterios no tiene por qué coincidir con el orden en que aparecen en el rango donde están los datos
------
Ya sé Excel, pero necesito más.
Muchísimas Gracias Paco,
Efectivamente la solución que me propusiste sirvió de maravilla.
De nueva cuenta muchas gracias!
Saludos,
Jesús