Filtros Avanzados

12/09/2007 - 08:20 por Carlos | Informe spam
Buenos dias, mi consulta es la siguiente...

Tengo una base de datos y se usar los filtros avanzados con las condiciones
y todo eso. Hasta lo que yo se, tengo la base de datos y pongo unas filas mas
abajo con los mismos titulos y las condiciones (p.e. >500) y entonces voy a
Datos--Filtros--Filtros Avanzados, selecciono los rangos y me lo filtra.
Hasta aqui perfecto.

Mi pregunta es si no se puede dejar activado el filtro avanzado de manera
que yo cambie las condiciones y sin tener que volver a seleccionarlo del menu
automaticamente me filtre los datos. Por ejemplo, que le pongo >400 en la
condicion que sea y automaticamente me lo filtre sin tener que ir al menu de
Filtros Avanzados y volver a seleccionar los rangos, etc...

No se si me explicado, por favor si alguien sabe alguna manera de hacer esto
os estaria muy agradecido.

Muchas gracias y perdon por las molestias...

Saludosm,

Preguntas similare

Leer las respuestas

#1 Diego LB
12/09/2007 - 16:48 | Informe spam
Hola Carlos, si, esto se puede lograr grabando este procedimiento como una
macro.
1- Herramientas - Macro - Grabar nuevo macro
2- Realiza todo el procedimiento para utilizar el filtro avanzado.
3- Herramientas - Macro - Detener macro
4- rramientas - personalizar - Comandos - Macros - (arrastre el boton hasta
la barra de herramientas)
5- A hacer click en este ícono te pregunta que macro quieres asignarle;
desde luego le asignas el macro1 generalmente
6- No olvides que debes tener habilitado en Macro - Seguridad - el estado
medio

Hasta pronto

DEL


"Carlos" escribió:

Buenos dias, mi consulta es la siguiente...

Tengo una base de datos y se usar los filtros avanzados con las condiciones
y todo eso. Hasta lo que yo se, tengo la base de datos y pongo unas filas mas
abajo con los mismos titulos y las condiciones (p.e. >500) y entonces voy a
Datos--Filtros--Filtros Avanzados, selecciono los rangos y me lo filtra.
Hasta aqui perfecto.

Mi pregunta es si no se puede dejar activado el filtro avanzado de manera
que yo cambie las condiciones y sin tener que volver a seleccionarlo del menu
automaticamente me filtre los datos. Por ejemplo, que le pongo >400 en la
condicion que sea y automaticamente me lo filtre sin tener que ir al menu de
Filtros Avanzados y volver a seleccionar los rangos, etc...

No se si me explicado, por favor si alguien sabe alguna manera de hacer esto
os estaria muy agradecido.

Muchas gracias y perdon por las molestias...

Saludosm,
Respuesta Responder a este mensaje
#2 Ivan
12/09/2007 - 23:03 | Informe spam
hola Carlos (y Diego)

por dartelo un poquitin mas mascado, si quieres prueba a poner esto en
el modulo de la hoja donde tengas la lista (de una copia), pero ten en
cuenta que, salvo que adaptes el codigo previamente, tu lista debe
tener los titulos en la fila 1 y en la columna A todos los registros
deben tener datos,

la 1ª vez te recomiendo que pegues justo 2 filas por debajo de la
ultima de tu lista todos los titulos de tu lista (es decir dejando
justo [y solo] una fila vacia entre medias)

luego prueba a introducir un dato justo en la fila siguiente a esta
[de titulos] que acabas de pegar

'pega desde aqui (en el modulo de la hoja)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim uF As Long, uC As Byte, tC As Byte, n As Byte
On Error Resume Next
ShowAllData
On Error GoTo 0
If [a2] = "" Then Exit Sub
uF = [a1].End(xlDown).Row: uC = [a1].End(xlToRight).Column
tC = Target.Column
If tC <= uC And Target.Row = uF + 3 Then
Range(Cells(1, 1), Cells(1, uC)).Copy Range("a" & uF + 2)
Application.EnableEvents = False
For n = 1 To uC
If n <> tC Then Cells(uF + 3, n).Clear
Next
Application.EnableEvents = True
Range("a1").CurrentRegion.AdvancedFilter _
action:=xlFilterInPlace, _
criteriarange:=Range(Cells(uF + 2, tC), Cells(uF + 3, tC)), _
Unique:=False
[a1].Select
End If
End Sub
'hasta aqui

es muy mejorable, entre otras cosas porque no he conseguido unir
varios criterios campos (que en otras ocasiones situaciones si creo
haber podido), con lo que solo te filtra por el campo en el que
introduzcas el dato , pero a la espera de algun 'machaca' del tema que
la perfeccione (o descarte) te puede valer para ir probando

ojo: tambien puede aparecer algun error que yo no haya visto

un saludo
Ivan
Respuesta Responder a este mensaje
#3 Ivan
12/09/2007 - 23:25 | Informe spam
hola de nuevo,

mejor yo usaria esta (me he dejado llevar por tu comentario de poner
el criterio debajo de la lista, pero me parece poco practico) aunque
haz los siguientes cambios:

1º) cota tu lista completa (titulos incluidos y pegala en A4,

2º) copia la fila de titulos en A1

3º) ahora prueba a escribir algo en alguna celda de la fila 2 debajo
de su correspondiente titulo

4º)OJO: ahora si filtra acumulando todos los criterios que tengas
escritos en la fila 2, si quieres hacerlo por uno solo, deberas
borrarlos (si booras todo te muestra todo)

5º) sigo sin probar errores

Private Sub Worksheet_Change(ByVal Target As Range)
Dim tC As Byte, n As Byte
On Error Resume Next
ShowAllData
On Error GoTo 0
If Target.Row <> 2 Or [a5] = "" Then Exit Sub
tC = Target.Column
If tC <= [a4].End(xlToRight).Column Then
Range("a4").CurrentRegion.AdvancedFilter _
action:=xlFilterInPlace, _
criteriarange:=Range(Cells(1, 1), Cells(2,
[a4].End(xlToRight).Column)), _
Unique:=False
[a5].Select
End If
End Sub

un saludo y si quieres comentas
Ivan
Respuesta Responder a este mensaje
#4 Ivan
12/09/2007 - 23:28 | Informe spam
solo para evitar los saltos falsos de linea del foro, usa esta

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
ShowAllData
On Error GoTo 0
If Target.Row <> 2 Or [a5] = "" Then Exit Sub
If Target.Column <= [a4].End(xlToRight).Column Then
Range("a4").CurrentRegion.AdvancedFilter _
action:=xlFilterInPlace, _
criteriarange:=Range(Cells(1, 1), _
Cells(2, [a4].End(xlToRight).Column)), _
Unique:=False
[a5].Select
End If
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida