Macro que filtre datos en base a una celda.

Tengo una base de datos en excel que cuenta con muchos renglones de datos, entre ellos almacen, numero de material, cantidad y tipo de movimiento y cada semana debo hacer un reporte de los movimientos que se hicieron el problema es que no siempre me preguntan los mismos datos es decir a veces de un numero pero en una determinada fecha o de un deerminado movimiento. Lo que quiero es una macro que filtre los datos que le ponga en una determinada celda los copie y los pegue en otra hoja y que si no lleno todos los campos los ignore.

1 respuesta

Respuesta
1
Imagino que conoces la grabadora de macros.
Realiza lo que quieres que haga la macro mientras lo grabas.
Despues locaiza en el codigo, las sentencias Selection. Filter, ahi estara definiedo el filtro. Lo unico que debes hacer es modificar el que ha hecho la grabadora, por la celda donde quieres que apunte.
Ya lo intente pero no acepta números solo letras y también necesito filtrar fechas.
No caí en hacerte la sugerencia de las tablas dinámicas, pues me hablabas de macros.. pero, con una tabla dinámica que apunte a un rango con un nombre concreto podrías solucionarlo.
Solo tendrías después que elaborar una sencilla macro que renombrara los datos nuevos con el nombre al que apunta la tabla dinámica.
Si no se te ocurrió antes quizás es que no conozcas las tablas dinámicas, son un herramienta muy potente. Cada vez que alguien la descubre se abre un nuevo horizonte con Excel para esa persona. Prruebalas en Datos/Tablas dinámicas.
Si tienes alguna consulta concreta con ellas pregúntamela, veras que solucionas tu necesidad en un periquete, incluso si dedicas un tiempo adicional podrás elaborar unos informes muy presentables utilizando los autoformatos, en Formato/Autorformatos.
Aun así, para filtrar con macros una fecha utiliza este código, teniendo tus datos en a10:e100 y las fechas en la columna A, te debe funcionar.
Range("A10:E100").Select
        Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:="01/01/2010"
Espero haberte ayudado. No dudes en solicitar más aclaraciones.
Gracias Ya se usar las tablas dinámicas y los autos formatos. Tienes algún correo donde te pueda mandar el documento para que me des tu opinión
La macro que filtre datos en base al valor que ponga en una celda, solamente es una parte de lo que necesito hacer, una ves filtrada la información tengo una macro que copia la información filtrada y la pega en una hoja nueva que a su ves la grafica;lo que quiero es solo poner en una celda la información que quiero que filtre y lo demás sea automático(solo me falta la macro para filtrar)hice una sencilla pero no copia números.
He estado revisando tu problema y la verdad no se cual es el problema, pues el filtrar números no es ningún problema si los entrecomillas como te indiqué.
¿Qué código utilizas para filtrar que te da error?
Aun toda tu respuesta, sigo indicándote que lo que quieres hacer es mejor enfocarlo por tablas dinámicas, donde puedes filtrar y ademas graficar.
Mandame el código con el que filtras.
Es este:
Sheets("BASE DE DATOS").Select
    Selection.AutoFilter Field:=3, Criteria1:=Sheets("FILTRO").Range("B1")
    Selection.AutoFilter Field:=4, Criteria1:=Sheets("FILTRO").Range("B2")
¿Tienes un correo al cual te pueda mandar el ejemplo?
Es que no se como hacerle para que por ejemplo en el primer filtro esta libre el campo que entonces lo ignore y haga el otro, pero si ambos están llenos que entonces filtre por los dos siguiendo el orden en que esta escrito
Claro, este no es el código que habíamos comentado de utilizar. No es lo mismo un rango que su contenido. Tu le estas diciendo a la maquina que filtre por el rango, no por su contenido. Prueba esto
Sheets("BASE DE DATOS").Select
    Selection.AutoFilter Field:=3, Criteria1:=Sheets("FILTRO").Range("B1").value
    Selection.AutoFilter Field:=4, Criteria1:=Sheets("FILTRO").Range("B2").value
..
O esto
..
Sheets("BASE DE DATOS").Select
    Selection.AutoFilter Field:=3, Criteria1:=Sheets("FILTRO").Range("B1").text
    Selection.AutoFilter Field:=4, Criteria1:=Sheets("FILTRO").Range("B2").text
Espero haberte ayudado. No olvides valorar mi respuesta.
Si, solo una pregunta, al ponerle .value, ¿también va a filtrar la fecha o para la fecha es otro dato?
Prueba con ambos códigos, debe funcionar con ambos.
..
No olvides valorar mi respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas