Macro excel VBA crear filtro por dos columnas distintas

¿Cómo debería modificar esta sentencia para que una tabla se filtre con condiciones de dos columnas distintas?

Worksheets("PRINCIPAL").Range("A1:AP").Autofilter Field:=2, Criteria1:= Array("ALMACEN","TIENDA"), Operator:=xlAnd, Field:=34, Criteria2:="0"

Si solo lo hago filtrando por una columna funciona pero al añadir la segunda condición no funciona. No consigo buscando por ahí alguna solución...

1 respuesta

Respuesta
2

Prueba lo siguiente:

Sub TEST()
  With Worksheets("PRINCIPAL").Range("A:AP")
    . AutoFilter
    . AutoFilter 2, Array("ALMACEN", "TIENDA"), xlFilterValues
    . AutoFilter 34, 0
  End With
End Sub

¡Gracias, Dante!

Funciona de lujo!

Siempre un placer ayudarte, gra cias por comentar.

Hola, Dante.

A raíz de crear este filtro me surgió otra necesidad, añadirle un OR, es decir que me filtre los registros con estas dos condiciones y, además de que me filtre:

Columnas 2 por (ALMACEN OR TIENDA) and Columna 34 por Cero

OR

que me filtre por columna 2 FABRICA independientemente de si la columna 34 es cero.

No sé cómo añadirle esa segunda condición y que se pase por alto el 34, 0

Gracias!

Sub TEST()
  With Worksheets("PRINCIPAL").Range("A:AP")
    . AutoFilter
    . AutoFilter 2, Array("ALMACEN", "TIENDA"), xlFilterValues
    . AutoFilter 34, 0
  End With
End Sub

Columnas 2 por (ALMACEN OR TIENDA) and Columna 34 por Cero

OR

Que me filtre por columna 2 FABRICA independientemente de si la columna 34 es cero.

Supongo que quieres agregar una condición, si la condición se cumple aplicar el filtro almacén/ tienda si la condición no se cumple entonces aplicar el filtro fábrica.

¿Eso es lo que quieres?

Hola, Dante.

Quiero agregarlo tanto si se cumple como si no se cumple.

El filtro de la tabla sería:

- FABRICA independientemente de si la columna 34 es cero 

- ALMACEN y columna 34 = 0

- TIENDA y columna 34 = 0

Gracias.

Para entender lo que quieres. Cómo lo haces manualmente. Me lo puedes mostrar en una imagen.

Me suena a que deberías utilizar un filtro avanzado. Pero primero muéstrame la imagen.

Te confirmo, debes utilizar un filtro avanzado.

Antes de correr la macro para el filtro avanzado, debes preparar la hoja con el rango de criterios.

En la celda AR1 debes poner el mismo título que tienes en B1, en AS1 lo mismo que AH1, tal y como se muestra en la imagen.

En la columna AR debes poner la palabra para filtrar la columna B y en la columna AS el valor si quieres 0, ó si quieres cualquier valor, entonces lo dejas en blanco.


Después de poner los datos ejecutas la siguiente macro:

Sub Test2()
  With Worksheets("PRINCIPAL")
    .Range("A:AP").AdvancedFilter xlFilterInPlace, .Range("AR1:AS4")
  End With
End Sub

Este es el resultado:

Almacén y Tienda solamente con 0; y Fábrica con cualquier valor. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas