Filtrar en función del valor de una celda

Solo consultas sobre macros y código VBA Excel.
Reglas del Foro 1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!

Filtrar en función del valor de una celda

Notapor Clapi » 27 Dic 2017 10:41

Buenas tardes,

Estoy intentando hacer una macro que me permita filtrar toda una tabla por la columna J en función del valor de una celda determinada (J1), y que cuando la celda esté en blanco se muestren todos los valores. Estoy usando la siguiente macro:

Código: Seleccionar todo
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

FiltrarPor = Range("J1").Value

     
    Selection.AutoFilter Field:=10, Criteria1:=FiltrarPor, Operator:=xlAnd
   
End Sub


Sin embargo cuando borro el contenido de la celda J1 no elimina todos los filtros, sino que me filtra las celdas vacías. Por favor alguien puede indicarme qué tengo que añadir al código para que cuando borre el contenido de la celda J1 desaparezcan todos los filtros?

Muchas gracias y un saludo,

Clapi
Clapi
Miembro Nuevo
Miembro Nuevo
 
Mensajes: 3
Registrado: 27 Dic 2017 05:23

Re: Filtrar en función del valor de una celda

Notapor Drew0591 » 27 Dic 2017 11:17

Hola Buen dia,

Debes agregar una funcion condicional "IF"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

FiltrarPor = Range("J1").Value

If IsEmpty(FiltrarPor) then

Selection.AutoFilter Field:=10

Else

Selection.AutoFilter Field:=10, Criteria1:=FiltrarPor, Operator:=xlAnd

EndIf
End Sub


espero te funcione,


saludos
Avatar de Usuario
Drew0591
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 68
Registrado: 15 Sep 2012 00:10

Re: Filtrar en función del valor de una celda

Notapor Clapi » 27 Dic 2017 12:01

Hola de nuevo,

Me ha funcionado perfectamente, muchas gracias Drew!

Me surge otra duda. Si quisiera añadir este filtro en cada una de las columnas como podría hacerlo? Es decir que el valor que introduzca en la celda A1 me filtre la columna A, el valor que introduzca en la celda B2 me filtre la columna B, etc.

Muchas gracias de nuevo por tu ayuda, me ha solucionado mucho.

Un saludo y feliz Navidad

Clapi
Clapi
Miembro Nuevo
Miembro Nuevo
 
Mensajes: 3
Registrado: 27 Dic 2017 05:23

Re: Filtrar en función del valor de una celda

Notapor Drew0591 » 27 Dic 2017 12:48

Hola

Si se podria pero para ello creo que seria mas factible usar un tabla dinamica con slicers.

pero aun queriendo hacer la macro tendria que hacerse algo asi (este es un ejemplo de una macro que use)

Private Sub Worksheet_Change(ByVal Target As Range)


Celda = "al15"
If Not Application.Intersect(Target, Range(Celda)) Is Nothing Then

#Macro a Ejecutar


End If


Celda2 = "al21"
If Not Application.Intersect(Target, Range(Celda2)) Is Nothing Then

#Macro a Ejecutar

End If


*** y asi se tendria que ir replicando para cada columna que se quiere filtrar / en donde dice #Macro a Ejecutar se replicaria el

FiltrarPor = Range("J1").Value

If IsEmpty(FiltrarPor) then

Selection.AutoFilter Field:=10

Else

Selection.AutoFilter Field:=10, Criteria1:=FiltrarPor, Operator:=xlAnd

EndIf
End Sub

Cambiando cada "Field:= " por el numero que corresponda a la columna a filtrar.
Avatar de Usuario
Drew0591
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 68
Registrado: 15 Sep 2012 00:10

Re: Filtrar en función del valor de una celda

Notapor Clapi » 28 Dic 2017 05:47

Gracias de nuevo Drew! Muy util tu aportación, intentaré adaptarlo a mi tabla.

Un saludo,
Alberto
Clapi
Miembro Nuevo
Miembro Nuevo
 
Mensajes: 3
Registrado: 27 Dic 2017 05:23


Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados
cron