Jump to content
jaimecruz

Obtener valores seleccionados en un autofiltro

Recommended Posts

He buscado por intenet, pero no doy con ningún código vba que resuelva mi problema. Necesito tener en un array los valores que hay seleccionados en el autofiltro actual de una hoja. Esto me hace falta porque en esa hoja tengo aplicados macros a la salida de la hoja en que se desactiva la configuración de filtros existente. Quiero que esa configuración previa se almacene en algun sitio de forma que pueda recuperar esos autofiltros cuando vuelva a entrar en esa hoja. El archivo de ejemplo es una archivo básico con un autofiltro

Archivo con autofiltros.xlsm

Share this post


Link to post
Share on other sites

Bueno, parece que ha sido mas fácil de lo que parecía.

Esta macro obtiene los valores únicos visibles ordenados alfabéticamente de menor a mayor. 

Sub ValoresFiltrados(): On Error Resume Next
Hoja2.Columns("A").Clear
Hoja1.Range("A2:A" & ActiveSheet.UsedRange.Rows.Count) _
   .SpecialCells(xlCellTypeVisible).Copy Hoja2.Range("A1")
Hoja2.UsedRange.Sort Key1:=Hoja2.Columns("A"), Header:=xlNo
Hoja2.UsedRange.RemoveDuplicates Columns:=Array(1), Header:=xlNo
Hoja2.Select
End Sub

 

Archivo con autofiltros.xlsm

Edited by Antoni

Share this post


Link to post
Share on other sites
Hace 1 hora, jaimecruz dijo:

Necesito tener en un array los valores que hay seleccionados en el autofiltro actual de una hoja

conviene saber los tipos de datos en los filtros y la posibilidad de grupos, esto porque pudiera resultar insuficiente (e ineficiente) buscar en las celdas visibles de (in)determinada columna si el filtro aplicado corresponde a otra(s) columna(s)

saludos,
hector.

Share this post


Link to post
Share on other sites
Hace 9 minutos , Héctor Miguel dijo:

conviene saber los tipos de datos en los filtros y la posibilidad de grupos, esto porque pudiera resultar insuficiente (e ineficiente) buscar en las celdas visibles de (in)determinada columna si el filtro aplicado corresponde a otra(s) columna(s)

saludos,
hector.

¿Porqué no subes un archivo explicando cual es la solución que propones?

Share this post


Link to post
Share on other sites
Hace 37 minutos , Antoni dijo:

¿Porqué no subes un archivo explicando cual es la solución que propones?

alternativas de solución ?

- comprobar que hay listas filtradas
- identificar cual(es) filtro(s) está(n) activo(s)
- obtener el criterio del filtro (por cada columna filtrada)
- - aquí puede tratarse dos criterios y/o de una matriz (si hay grupos seleccionados de xl-2007 +)
- - cuidar los datos-fecha (por su tratamiento tan especial)
- decidir cómo y donde se almacena la información de lo filtrado (y recuperar después)
- quizá algún detalle que se escapa (p.ej. varias listas en la hoja ?)

subir un archivo desarrollando lo anterior ?

el abanico de posibilidades puede ser tan amplio, que quisiera contar con información específica de la situación a resolver ?

si crees que voy mal, imagina situaciones y comprueba detectando solo celdas visibles de (in)determinada columna ;)

saludos,
hector.

Share this post


Link to post
Share on other sites
Hace 3 horas, jaimecruz dijo:

He buscado por intenet, pero no doy con ningún código vba que resuelva mi problema. Necesito tener en un array los valores que hay seleccionados en el autofiltro actual de una hoja. Esto me hace falta porque en esa hoja tengo aplicados macros a la salida de la hoja en que se desactiva la configuración de filtros existente. Quiero que esa configuración previa se almacene en algun sitio de forma que pueda recuperar esos autofiltros cuando vuelva a entrar en esa hoja. El archivo de ejemplo es una archivo básico con un autofiltro

Archivo con autofiltros.xlsm

Explica un poco mas [el resultado esperado] y como es que deseas manejarlo, pues solo tu archivo con datos sin MAS, abre posibilidades a interpretaciones, por lo menos yo, he considerado parte de lo que comenta @Héctor Miguel 

 

Saludos 

Share this post


Link to post
Share on other sites

Muchas gracias a todos por vuestros comentarios y ayuda. Lo que pretendo es crear una función que me sirva para obtener los campos filtrados de todas las columnas y que luego esa información la pueda recuperar si me hiciera falta. No es algo específico de esta hoja excel sino de cualquiera con autofiltros para que en el futuro independientemente de los datos que tenga cada columna se pueda recuperar la configuración del filtro que tenía.

Ya con la aportación de Antoni veo un camino por el que puedo comenzar. En cuanto lo termine intento publicarlo por si hay otros usuarios a los que les pueda ser util esta función y por si veis algún error en su ejecución.

Share this post


Link to post
Share on other sites

Finalmente creo que ha quedado una cosa bastante apañada. En la hoja MENU está el botón "MOSTRAR HOJA CON FILTROS ACTIVOS" que traspasará los datos de las hojas que tienen filtros a la hoja "FILTROS ACTIVOS".

Por otra parte en la hoja MENU se puede seleccionar la hoja a la que se quiere restaurar sus filtros y pulsando en la flecha se restaurarán. Espero que sea útil.

Archivo con autofiltros.xlsm

Share this post


Link to post
Share on other sites

Saludos @jaimecruz, te dejo un ejemplo que realice, funciona con la hoja1, la macro está en el modulo3

lo único malo que yo veo de tu proceso, es que al restablecer el filtro, se filtran por los valores, no se coloca el filtro original que tenia, por ejemplo, valores mayores a 40, tu filtro al final filtraria 41, 80, 100, etc., pero NO coloca el criterio > 40 como debería ser, en el ejemplo que estoy dejando, si lo hace.

no realice muchas pruebas, pero creo que está ok

 

Suerte

Archivo con autofiltros.xlsm

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 6254 personas - Aprender Excel - Total: 4.7 / 5