Nos adentraremos, un poco al menos, en el mundo de los filtros avanzados. Son útiles, en especial, cuando estamos trabajando con bases de datos en Excel; si bien conviene recordar que Excel es una Hoja de cálculo y no un gestor de Bases de datos, como lo podría ser Access.
Supondremos que tenemos una Base de datos en nuestra hoja de cálculo, y que pretendemos aplicarles, para encontrar o filtrar algunos de sus registros, un filtro; en aquellas ocasiones en que los Autofiltros se quedan 'cortos' para lo que pretendemos obtener, aplicaremos los Filtros Avanzados, donde desaparecerán las restricciones o limitaciones que tenía el Autofiltro.
En primer lugar recordaremos desde donde activamos esta herramienta avanzada; si utilizamos Excel 2003 navegaremos por el Menú Datos > Filtro > Filtro avanzado; si nos decidimos por la versión Excel 2007 iremos al Menú Datos > Ordenar y Filtrar > Avanzadas.
Para poder aplicar esta herramienta avanzada debemos saber que además de nuestra Base de datos, necesitamos un rango de celdas a parte donde indicar cuáles son los criterios de filtro, es decir, dos rangos: Rango de la lista y Rango de criterios.
Otra ventaja que tenemos al aplicar este filtro avanzado es que podemos optar bien por filtrar sobre la misma base de datos, al igual que el Autofiltro, o bien realizar un copiado con los registros filtrados que cumplan las condiciones o criterios dados en el lugar que seleccionemos.
De nuestra base de datos necesitamos conocer qué registros cumplen la condición que el número de productos vendidos, campo 'unidades del producto', sea menor de 56 o que sea mayor de 79 y menor de 96 (trabajaremos en nuestro ejemplo con desigualdades estrictas para facilitar el trabajo).
Para poder aplicar nuestro 'Filtro Avanzado' construimos en otro lugar de la hoja de cálculo un rango de criterios, en el cual deberemos incluir la cabecera o título del campo sobre el que queremos aplicar el filtro. De forma similar a como aplicabamos las restricciones en la funciones de bases de datos, actuaremos con estos Filtros avanzados, es decir, teniendo presente que las condiciones dadas en una misma fila indicarán el cumplimiento simultáneo (i.e., equivale a un operador Y), y que las condiciones en distintas filas indicarán un cumplimiento adicional (i.e., equivale a un operador O).
En nuestro ejemplo, el rango de criterios quedará entonces:
Ejecutando la herramienta de Filtro avanzado, y seleccionando el Rango de la base de datos, y el Rango de criterios, así como la opción de Copiar el resultado a otro lugar:
obtendremos el siguiente resultado de registros que cumplen las condiciones dadas:
Debemos saber que el filtro avanzado, al igual que el Autofiltro, respeta el orden de los registros de la Base de datos original; que no existen restricciones o limitaciones en cuanto a número de condiciones sobre un mismo campo (recordemos que con el Autofiltro no podíamos aplicar más de dos condiciones al tiempo sobre un mismo campo). Y muy importante conocer la forma de aplicar estas distintas restricciones; siempre que las condiciones estén en la misma fila, independientemente del campo que sea, estamos forzando el cumplimiento simultáneo, mientras que si se encuentran en distintas filas forzamos todas las condiciones alternativamente.
Por ejemplo, podríamos haber necesitado extraer aquellos registros que cumplieran, además de la anterior condición, cuya fecha de operación es anterior al 31/12/2009, para lo que tendría que haber dado como rango de criterios:
es decir, filtramos aquellos registros que cumplan al tiempo que su número de productos vendidos sea mayor de 79 y menor de 96 y que además su fecha de operación sea anterior o igual al 31/12/2009, por otro lado buscamos también aquellos registros cuyo número de productos vendidos sea inferior a 56 y además su fecha de operación sea igual o menor a 31/12/2009.
Supondremos que tenemos una Base de datos en nuestra hoja de cálculo, y que pretendemos aplicarles, para encontrar o filtrar algunos de sus registros, un filtro; en aquellas ocasiones en que los Autofiltros se quedan 'cortos' para lo que pretendemos obtener, aplicaremos los Filtros Avanzados, donde desaparecerán las restricciones o limitaciones que tenía el Autofiltro.
En primer lugar recordaremos desde donde activamos esta herramienta avanzada; si utilizamos Excel 2003 navegaremos por el Menú Datos > Filtro > Filtro avanzado; si nos decidimos por la versión Excel 2007 iremos al Menú Datos > Ordenar y Filtrar > Avanzadas.
Para poder aplicar esta herramienta avanzada debemos saber que además de nuestra Base de datos, necesitamos un rango de celdas a parte donde indicar cuáles son los criterios de filtro, es decir, dos rangos: Rango de la lista y Rango de criterios.
Otra ventaja que tenemos al aplicar este filtro avanzado es que podemos optar bien por filtrar sobre la misma base de datos, al igual que el Autofiltro, o bien realizar un copiado con los registros filtrados que cumplan las condiciones o criterios dados en el lugar que seleccionemos.
De nuestra base de datos necesitamos conocer qué registros cumplen la condición que el número de productos vendidos, campo 'unidades del producto', sea menor de 56 o que sea mayor de 79 y menor de 96 (trabajaremos en nuestro ejemplo con desigualdades estrictas para facilitar el trabajo).
Para poder aplicar nuestro 'Filtro Avanzado' construimos en otro lugar de la hoja de cálculo un rango de criterios, en el cual deberemos incluir la cabecera o título del campo sobre el que queremos aplicar el filtro. De forma similar a como aplicabamos las restricciones en la funciones de bases de datos, actuaremos con estos Filtros avanzados, es decir, teniendo presente que las condiciones dadas en una misma fila indicarán el cumplimiento simultáneo (i.e., equivale a un operador Y), y que las condiciones en distintas filas indicarán un cumplimiento adicional (i.e., equivale a un operador O).
En nuestro ejemplo, el rango de criterios quedará entonces:
Ejecutando la herramienta de Filtro avanzado, y seleccionando el Rango de la base de datos, y el Rango de criterios, así como la opción de Copiar el resultado a otro lugar:
obtendremos el siguiente resultado de registros que cumplen las condiciones dadas:
Debemos saber que el filtro avanzado, al igual que el Autofiltro, respeta el orden de los registros de la Base de datos original; que no existen restricciones o limitaciones en cuanto a número de condiciones sobre un mismo campo (recordemos que con el Autofiltro no podíamos aplicar más de dos condiciones al tiempo sobre un mismo campo). Y muy importante conocer la forma de aplicar estas distintas restricciones; siempre que las condiciones estén en la misma fila, independientemente del campo que sea, estamos forzando el cumplimiento simultáneo, mientras que si se encuentran en distintas filas forzamos todas las condiciones alternativamente.
Por ejemplo, podríamos haber necesitado extraer aquellos registros que cumplieran, además de la anterior condición, cuya fecha de operación es anterior al 31/12/2009, para lo que tendría que haber dado como rango de criterios:
es decir, filtramos aquellos registros que cumplan al tiempo que su número de productos vendidos sea mayor de 79 y menor de 96 y que además su fecha de operación sea anterior o igual al 31/12/2009, por otro lado buscamos también aquellos registros cuyo número de productos vendidos sea inferior a 56 y además su fecha de operación sea igual o menor a 31/12/2009.













Amigo muy buenas necesito una gran ayuda suya, resulta que tengo una coleccion de datos de 4 columnas y 200 filas, la necesidad es que 1 de las columnas que representa fecha, se pueda filtrar pero mediante un rango, osea en una celda ubico fecha inicial y en otra fecha final, y mediante eso me filtre mi colexion de datos. Desde ya gracias por tu ayuda
ResponderEliminarHola CrIsToFeR,
ResponderEliminarpara hacer sencilla la solución, creo que lo mejor sería aplicar un Filtro Avanzado sobre tu colección de datos. Si sigues las indicaciones de este mismo post, podrás construir el filtro avanzado adecuado.
Supongamos que tus columnas de datos son A:D con nommres de campo Column1(Fecha), Column2, Column3 y Column 4 y tantos registros como sean 8en tu caso 200).
Puesto que deseas filtrar tus registros por fecha entre dos valores dados, lo primero que haría sería definir un rango de criterios 'dinámico', quiero decir, si en las celdas I1 y I2 tienes las fechas inicial y final, en un rango aparte F1:G2 creamos lo que será el rango de criterios para nuestro filtro avanzado; en el cual pondremos en la primera fila F1:G1 el nombre del campo a filtrar (Column1 = Fecha), en la celda F2 =">"&I1 y en la celda G2 ="<"&I2
Sobre esto podrás aplicar la opción de filtro avanzado...
Espero haber dado algo de luz a tu consulta.
Slds
Una pregunta... ¿En los filtros avanzados se necesitan mínimo tres filas vacías por encima de los datos para establecer los criterios de filtrado?
ResponderEliminarMuchas gracias por la ayuda.
Hola,
ResponderEliminarsi, es correcto. Debe existir un espacio mínimo (suele ser esas tres filas que comentas) entre el rango de criterios y la tabla de datos a filtrar para aplicar el Filtro Avanzado. el motivo es para que esta herramienta sepa distinguir entre criterios y datos. En todo caso, lo habitual es no ponerlos encima uno de otro, si no más bien al lado de la tabla de datos.
Slds
quiero aplicar filtros en una tabla dinamica
ResponderEliminarHola, buenos días
ResponderEliminarprueba a leer esta entrada, quizá te sea útil:
http://excelforo.blogspot.com/2010/08/tablas-dinamicas-ocultar-registros-sin.html
Un saludo y gracias
Estimados amigos, tengo una necesidad con una tablita, necesito crear una lista desplegable condicionada ejemplo
ResponderEliminarDEPARTAMENTOS: SAN SALVADOR, LA UNION, SANTA ANA, LA LIBERTAD.
(dentro de cada Departamento, tengo varios municipios)
Ya hice la lista para que me aparezcan los departamentos, pero no se como condicionar cuando salga el departamento de La Libertad, me aparezcan en otra columna una lista desplegable de los municipios que corresponden a ese departamento es especifico.
Si me ayudan se los agradecere mucho.
Hola,
ResponderEliminarpara realizar una validación de celdas, en función de otra previamente validada, echa un vistazo a
http://excelforo.blogspot.com/2010/02/validacion-de-celdas-con-lista-o-tabla.html
o también a
http://excelforo.blogspot.com/2009/10/ejemplo-de-doble-validacion.html
En estos dos ejemplos se da solución a tu cuestión.
Un saludo
Hola:tengo un problema con una columna de numeros a la hora de hacer filtros.Estos numeros en realaidad responden a un criterio que paso a describir: supongamos que tengo el numero 123645 este numero para mi significaria segun el valor previo que le he dado el siguiente:1=prenda de señora. 2=invierno 36=abrigo 45=proveedor "pepito".De modo que puedo una serie de prendas de señora de invierno que son abrigos y que son de otros proveedores ademas de pepito.Igualmente podrian ser jerseis. o pantalones etc. y tendrian su codigo respectivo en los digitos centrales.
ResponderEliminarA la hora de hacer un filtro avanzado para saber el numero de abrigos que tengo comprados de todos los proveedores que tenga no me permite hacer nada en la opcion avanzada que dice que empiece por... Comolo podria solucionar. Agradezco la ayuda.
Hola,
ResponderEliminarprueba a añadir como criterio o condición el comodín '?'. Por ejemplo, si quieres filtrar por el proveedor 'pepito', código 45, entonces pondrías ????45.
Estamos suponiendo que todos los códigos tienen el mismo número de dígitos. Si no es así, habría que probar con *45
Espero haberte ayudado.
Slds
Gracias excelforo por las respuesta pero ya lo habia intentado y no obtengo la respuesta adecuada y creo que debe ser por ser numeros ya que si antepongo o postpongo una letra a cada celda el filtro si funciona.La duda la tengo ahora para anteponer a las 5000 celdas un letra de modo cojunto y no de una en una.Hay alguna soolucion?. Gracias.
ResponderEliminarHola de nuevo...
ResponderEliminares algo raro lo que me comentas, ya que los criterios de filtro operan de igual forma.
Para tu otra cuestión, añadir una letra (supongo por ejemplo al principio de cada número) podrías construir en una columna anexa a la tabla una fórmula con CONCATENAR; algo como CONCATENAR("a";A1) y arrastrar las 5000 filas (suponiendo los datos a filtrar estén en la columna A). Luego si quieres, puedes filtrar sobre esta nueva columna de datos, o bien copiar y pegar valores sobre la vieja columna sólo de números.
Espero te sirva.
Slds
Gracias excelforo.Lo que me pasa es extraño aunque yo pensaba que al no ser caracteres alfanumericos sino solo numericos era por eso. Respecto a la otra solucion si pudiera explicarme un poco mas detallado lo que hay que hacer se lo agradeceria mucho(no soy experto en estas cosas ni en otras)¿donde colocar la funcion? como se hace los de arrastrar las 5000 filas?acaso es copiar y luego pegar?.Ya le digo solo manejo lo mas elemental de este programa.
ResponderEliminarGracias por toda la ayuda.
Hola!!
ResponderEliminarbien, por partes.
Añadir una columna con la siguiente fórmula a la derecha (por ejemplo) de donde finalice tu tabla.
Supongamos tu tabla de datos ocupa las columnas A:D, siendo la columna A donde se encuentran los códigos; y pongamos que en la fila 1 aparecen rótulos con nombres de campos.
Bajo este supuesto escribimos en la columna E, en la celda E2, la función =CONCATENAR("a";A1); una vez validada esta primera celda, la copiamos y pegamos a esas 5000 restantes filas de esa columna E...
Para trabajar sobre la 'nueva' base de datos seleccionamos todo el rango A:E y aplicamos los filtros oportunos, esta vez sobre nuestra columna E.
Si tienes algún problema con las indicaciones, envíame un fichero a
excelforo@gmail.com
Un saludo
Un ejemplo de filtro avanzado
ResponderEliminarAmigo Aki arriba lo tiene.
Eliminarhola soy nuevo y tengo una duda sobre una hoja de calculo donde anoto
ResponderEliminarasientos contables de clientes y proveedores, es lo que se llama un fichero plano en excel y a la hora de anotar las facturas tanto de proveedores como de clientes el formato de hoja es el siguiente:
Fecha Nº.fra. Base 4% IVA 4% Base 8% IVA 8% Base 18% IVA 18%
estas serian las cabeceras y los datos se introducen en las celdas de abajo de las cabeceras, como puedo hacer para que si yo anoto en horizontal debajo de las cabeceras y es una factura con tres tipos de iva me coloque una linea en horizontal por cada tipo de iva de la misma factura y fecha.
gracias y espero haberme explicado
Hola,
Eliminarsi he entendido bien podrías emplear la herramienta subtotales; de tal forma que una vez incluidos todos los registros en la base de datos, ejecutaras hasta en tres veces la herramienta Subtotal; la primera de ellas sumando los campos Base 4% IVA 4%; después los campos Base 8% IVA 8% y por último Base 18% IVA 18%, siempre para cada cambio en el campo Nºfra.
Asi conseguirías el efecto que buscas sin necesidad de macros, de manera rápida y sencilla en tres pasos.
Espero te sirva.
Slds
hola e gustaria que me ayudes tengo una tabla de datos de 500 filas y 5 columnas quiero filtararlas a otra ohjas dentro del mismo libro eso sii lo iso pero aca viene el problemac que si yo ingro un nuevo dato en esta tabla no me lo jala a la hoja dnede genere el filtro
ResponderEliminarHola,
Eliminares normal, ya que el filtro es algo estático, esto es, una vez ejecutado no actualiza nuevos valores...
quizá te interese más trabajar con una tabla dinámica simulando el filtro de datos realizado, de esta manera te asegura que nuevos regitros en el origen, se mostrarán en el resultado filtrado.
Slds
GRACIAS
ResponderEliminarPERO ME PODRIAS DAR UN EJMEPLO POR FAVOR
cordial saludo
ResponderEliminarcomo hago para realizar un filtro, teniendo el rengo pero de la columna, es decir no los valores de la celda si no el valor de la columna,1,2...500, y realizar el filtro con otra hoja pero esta si con los valores de la celda
Hola,
Eliminarlos filtros sólo son aplicables por columnas, es decir, con rótulos y registros por filas; daría igual qué tuvieras en la primera fila si rótulos o valores.
Lo que no entiendo es la última parte de la cuestión, ¿realizar un filtro con otra hoja?. Los Autofiltros sólo se pueden ejecutar sobre la hoja con la que trabajas...
Slds
holas buenos dias.
ResponderEliminarquisiera saber si me podrian ayudar con un problemita q tengo me piden
extraer d una base d datos
tipo 2 o sea masculino
como haria para extraer eso.
muchas gracias.
Hola Paul,
Eliminarno das muchos datos de cómo tienes estructurada la base de datos, pero supongo que se tratará de extraer una serie de registros en base al elemento 2 (masculino) de un campo llamado 'Sexo'.
Lo más facil sería aplicar sobre la base de datos un Autofiltro, para luego sobre el campo en cuestión desplegar sólo el elemento deseado.
Espero haberte orientado en algo.
Un saludo
Acabo de adquirir el Excel 2007, pero tengo problemas con el “autofiltro”, al intentar copiar y pegar "lo filtrado" me copia incluso lo q no esta filtrado... ¿sabrás como puedo resolver esa situación?. Con el excel antiguo trabaja muy bien.
ResponderEliminarHola,
Eliminarla solución sería que mostraras en la Barra de herramientas de acceso rápido el botón para el Comando Seleccionar celdas visibles.
Cuando tengas el filtro aplicado, marcas el área y presionas Seleccionar celdas visibles, copias y ya puedes pegar donde quieras...
Slds
Hola,tengo un hoja de calculo en exel donde tengo 5 columnas y 1868 filas donde se repiten codigos que se ubican en la columna b, las descripsiones se ubican el lacolumna c, en la columna d su unidad del material y las de mas culumnas restantes solo tienen su titulo, ¿como podria hacer un registro unico con el filtro avanzado para lograr a si ver solo un codigo y descripsion, sin repetision?. Porfavor se le Agradeceria por tada su vida si logra ayudarnos... n.n
ResponderEliminarHola,
Eliminarpara conseguir los registros únicos, sin repetición, de tu base de datos de 5 columnas, empleando la herramienta de Sólo Registros únicos del Filtro avanzado, tendrías que seleccionar exclusivamente los campos 'código' y 'descripción' en el Rango de Lista, y luego, por ejemplo marcar la Acción de 'Copiar a otro lugar', y listo, te mostrará sólo esos dós campos con la combinación de registros sin repetición.
Espero haberte orientado.
Slds
Hola, me gustaría saber como realizarías el filtro si necesitaras por decir la fecha de operación entre agosto de 2009 y diciembre de 2009, llevo un rato tratando de hacer una avanzado con intervalo de fecha y nada que puedo, gracias
ResponderEliminarHola,
Eliminarcomo quieres aplicar un criterio Y, tienes que poner en la misma línea ambas condiciones, así que pones en dos columnas el campo Fecha, y en una de ellas '>=01/08/2009' y en la otra '<=31/12/2009'.
Parecido al ejemplo de esta entrada con el campo 'Unidades del producto' (última imagen).
UN cordial saludo
Hola, ahora si me dio la fecha entre rangos como me explicaste, muchísimas gracias, llevaba todo el día varada en eso, saludos! :)
ResponderEliminarhola, me aprovecho de tus conocimientos. tengo una base con estas columnas: Codigo, Nombre, Cantidad, Valores, Mercado(5 Mercados distintos). La base tiene 5000 lineas.Por lo que uso Filtro Avanzado y genero 5 hojas (una por cada Mercado).El problema que tengo es que Filtra perfecto, pero no puedo SUMAR las lineas de un mismo Codigo que se vende en un mismo Mercado ¿me entiendes?. ¿como podría sumar en el Filtro Avanzado?. Gracias
ResponderEliminarHola Ivan_10,
Eliminarbueno, el asunto es que realmente la herramienta de Filtro (Autofiltro o Filtro avanzado) sólo está pensada para obtener un listado de registros que cumplan ciertas condiciones.
Si pretendes obtener una suma acumulada para un mismo código de producto tendrás que aplicar una función SUMAR.SI.CONJUNTO aplicándo condiciones sobre el campo 'Código' y 'Mercado', o bien trabajar con tablas dinámicas.
La otra opción, si por algún motivo sólo es posible trabajar con Filtros, sería aplicar una vez realizado el filtro, una SUMA a esos registros obtenidos.
Un saludo
Desde ya, gracias por tu tiempo y respuesta.Use la opción Filtro avanzado, ya que, como mencione, de una "gran sabana de datos",hago 5 hojas individuales donde la abro en 5 hojas individuales, pero ya sumados los productos.¿me puedes sugerir una opcion?, ¿Me podrías guiar o ejemplificar tu frase: "la funcion SUMAR.SI.CONJUNTO aplicándo condiciones sobre el campo 'Código' y 'Mercado'". Gracias nuevamente
ResponderEliminarMe refería a que si sólo necesitas obtener la suma acumulada de toda esa 'gran sábana de datos', quizá te sea más útil emplear la función SUMAR.SI.CONJUNTO.
EliminarPor ejemplo, quieres conocer el acumulado de la CANTIDAD, para un MERCADO y un CODIGO determinado; si es el caso, aplicas la función:
=SUMAR.SI.CONJUNTO(rangoCANTIDAD; rangoMERCADO; "mercado1"; rangoCODIGO; "codigo25")
siendo rangoCANTIDAD la columna donde se encuentre el campo CANTIDAD con sus 5000 líneas; igual con rangoMERCADO y rangoCODIGO, y "mercado1" y "código25" son los valores para esos campos sobre los que quieres obtener el acumulado...
y todo sin necesidad de hacer filtros.
Espero lo veas más claro... si no envíame el fichero a
excelforo@gmail.com
Un saludo
Estimado Excel Foro, que pasa si tengo el filtro avanzado ya creado en una base con una macro, si agrego mas datos a la macro como puedo modificarla sin ingresar a la programacion, tengo que grabar una macro nueva y al grabarla como puedo darle un rango de base de datos standar es decir, que pueda aumentar o disminuir datos???
ResponderEliminarHola,
Eliminarpara programación con rangos variables, tipo tablas, donde hay una continuidad de datos, merece la pena trabajar empleando la propiedad CurrentRegion.
Por ejemplo, una tabla que comienza en A1 y no sabes donde termina, podrías referenciarla en tu macro como
Range("A1").Currentregion
Slds
Hola mi consulta es cuantos caracteres caen en una celda, por ejemplo necesito copiar el siguiente numero hacia abajo y que vaya cambiando el ultimo numero al darle un copiar.
ResponderEliminarla idea es que al darle arrastrar la celda vaya cambiando
309659281000041461
309659281000041462
Hola!,
EliminarLo primero y fundamental que debemos saber a la hora de trabajar con Excel es que la precisión en cuanto a numéros es de 15 dígitos, por lo que lo trabajar con un número tan alto como el que planteas es complicado con Excel.
Sin embargo, si esa secuencia de valores 309659281000041461, 309659281000041462, etc es algo visual,y no necesitas trabajar sobre esos datos puedes optar por un formato de celda personalizado tipo: "3096592810000"0, con lo que podrás incluir los últimos valores de los dígitos 41461, 41462, etc y visualizarlos con la máscara completa... claro está que pierdes la integridad del valor.
Espero te sirva.
Slds
muchas gracias
ResponderEliminarHola
ResponderEliminaruna consulta?
tengo mis datos en 5 colunna: 1fecha, 2Kg ,3Propietario, 4Corral y 5 Nro de caravana, de las 5 columna tengo que buscar cuando se registra salida por Nro e caravana, y quisiera saber algun metodo mas rapido, por que estoy haciendo actualmete filtro y despues copio imprimo y busco por nro de carbana.
aguardo su ayuda
desde ya gracias
Hola,
Eliminarpodrías aplicar un Filtro avanzado que te permite copiar el resultado del filtro directamente donde quieras.
Para ello necesitas tener un rango donde colocar los criterios de filtro (Nro y Caravana), que podrás ir cambiando según necesites...
Slds
Hola! Una pregunta no me deja filtrar a otra hoja dentro del mismo libro. Me dice que solo se puede a la hoja activa. Hasta intente asignando nombre al rango a donde quiero copiarlo, pero no me deja...
ResponderEliminarGracias!
Hola,
Eliminarcorrecto. Para aplicar el filtro avanzado desde otra hoja, debes activar la herramienta en la hoja destino, no desde donde estén los datos.
Si permite seleccionar rango de datos y de criterios en otra hoja, pero no Copiar datos en.
Slds
Hola,
ResponderEliminarTengo una lista de datos (Rango A:D) con encabezados (Fecha,Factura,Importe,Referencia)y una macro que funciona como un filtro avanzado. Estoy intentado filtrar los datos en funcion de un criterio de fechas (desde-hasta) y para ello he seguido los comentarios de tus posts (08/01/11 y 01/07/12) pero no consigo que funcione. ¿Puedes sugerirme alguna alternativa?
Gracias.
Hola,
Eliminarno me queda claro qué no te funciona, ¿los criterios o que incorpore los nuevos registros?.
Debo entender que lo que no te funciona es la agregación al rango de los nuevos registros, si es así, y trabajas con Excel 2007/2010, podrías convertir tu rango en una tabla, y en tu código indicar el rango origen como Range(Tabla1).
Es difícil concretar más, lo siento.
Slds
Intentaré ser más concreto:
ResponderEliminarSi programo la macro como un AutoFiltro, funciona el filtrado de fechas pero no me permite realizar más filtrados:
Sub filter()
Dim desde As Long, hasta As Long
desde = Range("A2")
hasta = Range("A3")
Range("data").AutoFilter field:=1, Criteria1:=">=" & desde, _
Operator:=xlAnd, Criteria2:="<=" & hasta
End Sub
Y si programo la macro como un Filtro Avanzado, me permite realizar filtrados simultáneos pero no por fechas:
Sub filter()
Range("data").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("A1:D3"), CopyToRange:=Range("A6:D6"), Unique:=False
End Sub
¿Se puede combinar un Filtro Avanzado con un AutoFiltro?
Gracias anticipadas.
Hola,
Eliminarno es posible combinar filtro avanzado y autofiltro, pero si es posible trabajar con el filtro avanzado como si fuera un autofiltro.
Respecto al código
Sub filter()
Range("data").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("A1:D3"), CopyToRange:=Range("A6"), Unique:=False
End Sub
parece correcto, con la mínima corrección del CopyToRange.
Si en el rango de criterios A1:D3 están correctamente definidas las condiciones funciona perfectamente...
Revisa que tus condiciones cumplen con las formas que se requieren... echa un vistazo a este mismo post del blog.
Slds
Hola de nuevo,
EliminarCon la modificación de CopyToRange:=("A6") solo me filtra los datos de la columna A.
Por lo demás, el problema sigue siendo que si en los criterios pongo p.e. A2=2-Abr-12 y en A3=5-Abr-12 filtra los datos de los días 2-Abr y 5-Abr pero no los días intermedios (3 y 4).
¿Como sería el código para que el Filtro Avanzado trabajase como si fuera un AutoFiltro?
Saludos.
Ummm...
EliminarCopyToRange indica la celda a partir de la cual empieza a pegar el resultado del filtro.
Si has leído algo del post, te habrás dado cuenta que para aplicar el criterio entre dos datos, tienes que indicarlo con los signos de mayor y menor, en tu caso:
A2: >=2-Abr-12 y en A3: <=5-Abr-12
Slds
¿Como puedo incluir en el código del Filtro Avanzado los criterios ">=" y "<=" para que la selección sea automática, como un AutoFiltro?
EliminarGracias
No puedes, en el código del filtro avanzado sólo puedes incluir el rango de criterios en la hoja de cálculo.
EliminarTienes que centrarte en una de las dos herramientas, o Filtro avanzado o Autofiltro, las dos a la vez no es posible.
Ummm, he encontrado una manera muy simple de que funcione:
EliminarFechadesde = Range("A2")
Fechahasta = Range("B2")
Range("A2") = ">=" & Fechadesde
Range("B2") = "<=" & Fechahasta
Range("datos").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"A1:D2"), CopyToRange:=Range("A6:D6"), Unique:=False
End Sub
¿Como se puede hacer que la macro actualice los datos cada vez que modifique un criterio sin necesidad del botón comando?
Gracias por tu consejo!
Hola,
Eliminarincluye tu código en un procedimiento con evento _change:
Private Sub Worksheet_Change(ByVal Target As Range)
'tu código
End Sub
incluido no en un módulu, si no en la hoja que sea dentro del explorador de proyectos.
Slds
Hola de nuevo,
EliminarAhora tengo el código de la siguiente manera:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:E2")) Is Nothing Then
Fechadesde = Range("A2")
Fechahasta = Range("B2")
Range("H2") = ">=" & Fechadesde
Range("I2") = "<=" & Fechahasta
Range("Datos").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("H1:L2"), CopyToRange:=Range("A6:D6"), Unique:=False
End Sub
Los criterios son varios (Fecha/Factura/Importe/Nombre) y tengo el problema de que la macro realiza el filtrado con el criterio Fecha (desde/hasta) y actualiza los datos al realizar cualquier modificación, pero no permite filtrar más que este criterio, pues si a Fecha le añado otro criterio no lo tiene en cuenta y si busco con un criterio que no incluya Fecha tampoco funciona.
¿Que se puede hacer para que el filtrado se permita cualquiera de los criterios, por separado (Fecha, Factura, Nombre, etc.) o en combinación (Fecha desde-hasta, Fecha-Factura, Factura-Nombre, etc.)?
Gracias.
Hola, como te he indicado en comentarios anteriores, tu problema es entender el funcionamiento de los filtros.
EliminarQue es:
criterios en al misma fila, implica la condición Y (es decir, se cumplen al tiempo).
criterios en diferentes filas implica la condición O (esto es, se cumplen además del resto de criterios).
Si quieres que se verifiquen otras condiciones además de la de las fechas, deberás añadir más filas con condiciones (según los campos Factua, Nombre, etc) en el rango de criterios.
Slds
Para entenderlo mejor, ¿me puedes facilitar un ejemplo?
Eliminar¿Has leído esta entrada???
Eliminar¿se puede hacer el filtro en una hoja diferente?
ResponderEliminarHola, que tal?
Eliminarsi es posible, para ello debes ejecutar la herramienta filtro avanzado desde la hoja destino, no desde la que tenga la base de datos.
Slds
Hola,
ResponderEliminarTengo una tabla con 7 columnas referentes a Codigo, Artículo, Precio, Proveedor, F. Pedido, F. Entrega y Cantidad. Me piden utilizar autofiltro para obtener solo artículos, fecha de pedido y cantidad correspondientes a dos proveedores llamados Gemesa y Papelsa... lo he hecho pero me salen para todas las columnas y sólo quiero los campos mencionados. A ver si me podéis ayudar. Gracias
Hola,
Eliminarcon el Autofiltro sólo es posible filtrar, según condiciones, por filas; si quieres que muestre sólo esos campos, yo apostaría por ocultar el resto de columnas que no quieres ver.
No hay otra opción.
Slds
Antes que nada, felicitarte por tu blog.
ResponderEliminarTengo un problema con la condición en el filtro avanzado. Quiero que un de los criterios para filtrar, sea un valor superior a un valor en otra celda. Ejemplo:
En la celda D6 tengo un valor numérico producto de una formula, y quiero que uno de los criterios de filtrado avanzado sean valores superiores a la celda D6. He intentado poniendo en la celda de filtrado algo así:
=">"&D6
Pero al ejecutar el filtrado no devuelve ningún dato. Si escribo en la celda de filtrado el valor de la celda D6 manualmente, si se ejecuta correctamente. ¿Cuál crees que pueda ser el error?
Un saludo,
Hola, muchas gracias!!
EliminarBueno, la forma en que has construido el valor de la celda parece correcto.
En primer lugar me aseguraría (supongo es así) que la celda superior a =">"&D6 aparece con el rótulo correspondiente. Si es así, lo segundo que miraría es qué tipo de formato tienes los elementos de ese campo en la Tabla, en ocasiones, podemos pensar que estamos trabajando con valores numéricos, pero sin embargo, el formato que tienen es de tipo Texto y dar problemas como el que me planteas.
Confirma estas dos cosillas, y si te sigue dando el mismo problema, envíame el fichero a
excelforo@gmail.com
Slds
He revisado tus sugerencias, y continua el problema. Te envío el archivo.
ResponderEliminarGracias
OK,
Eliminarlo estoy revisando, pero el problema está en la macro, ya que si lo ejecutas 'manualmente' funciona bien.
Te digo algo.
Slds
He utilizado tu macro, y funciona perfectamente ¡¡¡.
ResponderEliminarMuchas gracias por tu colaboración y tiempo.
Esta claro que dominas este tema … yo nunca hubiese encontrado el problema en la interpretación de comas y puntos.
Saludos,
Gracias a ti
EliminarCordiales saludos
ESTA BIEN
ResponderEliminarhola,
ResponderEliminartengo una tabla con estos campos EJEMPLO
poblacion,hectareas,nombre poblacion,fecha evento,descripcion evento
y en una poblacion ocurren varios eventos el mismo dia,EJEMPLO FECHA:10/12/2031 DESCRIPCION:concierto, FECHA:10/12/2031 DESCRIPCION:cabalgata, como haria para que estos me aparecieran separados mediante algun filtro o funcion buscarv o validacion de datos
de antemano muchas saludos
Hola,
Eliminarno acabo de comprender adecuadamente la composición de tu problema, necesitaría concretar más la estructura de datos, ya que no veo claro si esa variedad de registros para una misma población se da en diferentes registros (líneas de la tabla)...
¿Podrías enviarme un fichero con el ejemplo a excelforo@gmail.com? y si es posible cómo lo querrías...
Un saludo
Hola ExcelForo!
ResponderEliminarMe gustaría conseguir mediante un filtro avanzado los 10 mejores resultados de una serie de datos que están en una columna, ¿qué tendría que poner en criterios?
Gracias y felicidades por la web!
Luo
Hola Luo, muchas gracias!
Eliminarentiendo que son resultados numéricos. Suponiendo el rango sea A2:A8, entonces en el rango de criterios añadiríamos la fórmula (por ejemplo en C2):
=A2>=K.ESIMO.MAYOR($A$2:$A$8;3)
Recuerda que en este caso debes seleccionar como rango de criterios como C1:C2).
Cordiales saludos
Buenas!
EliminarGracias por la respuesta, pero lo he intentado y me sigue sin salir.. verás, la cosa es que la columna con los datos está en otra hoja (llamada Resultados), entonces yo pongo como condición una cosa así:
Resultados!C7>K.ESIMO.MAYOR(Resultados!C7:D7;9)
¿En qué puede fallar?
Gracias ;)
Luo
Hola Luo,
Eliminarpara aplicar un filtro avanzado en hojas diferentes tienes que ejecutarlo todo desde la hoja destino, no es tanto el problema de la fórmula, si no que estás ejecutando el filtro en la hoja origen.
Slds
Si, me sitúo en la hoja de destino y ahí aplico la fórmula que te puse como criterio.
EliminarVerás, te concreto más:
· En la hoja destino escribo en unas celdas (A64:A65) las condiciones:
NOTA MEDIA (cabecera)
Resultados!C7>K.ESIMO.MAYOR(Resultados!C7:D7;9)
· Celdas A67:B67 pongo las cabeceras de la hoja 'Resultados': Apellidos y Nombre (que es lo que quiero que se muestre)
· Aplico filtro avanzado:
1)Rango de la lista: el nombre que le di a la tabla de la hoja 'Resultados'.
2)Rango de criterios: $A$64:$A$65
3)Copiar a: $A$67:$B$67
Gracias,
Luo
¿Me envías mejor el fichero a excelforo@gmail.com?
EliminarMe ha encantado el tutorial. SUPER util, pero tengo un problema.
ResponderEliminarMe funciona perfectamente excepto con las fechas.
Tengo una columna con las fecha y hora, y tengo que filtrar por dia.
He generado un criterio=>que una fecha y otro <fecha. El filtro funciona bien, pero cuando lo intento automatizar con macro no funciona. De hecho cada vez me da un problema diferente...Ayuda pleaseee!!
Hola, muchas gracias!
EliminarTrabajar con macros los filtros avanzados, como has podido ver, es muy delicado...
Me imagino en tu código tendrás algo de este estilo:
Range("Datos").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("H1:L2"), CopyToRange:=Range("A6:D6"), Unique:=False
cambialo por
Range("Datos").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("H1:L2"), CopyToRange:=Range("A6"), Unique:=False
en principio no debería fallar, ojo con las fechas...mejor trabaja con la función FECHA(año;mes;día).
Slds cordiales
Como hago para filtrar una serie de datos (servicios con sus respectivas características) que están en una misma columna, de tal manera que en el filtro aparezcan los servicios y de ahí se desprendan las características, como por ejemplo cuando uno filtra fechas, que aparece el año y de ahí se desprenden los meses.
ResponderEliminarHola, buenas tardes, ¿cómo estás?.
EliminarLo que comentas de los filtros de fechas es una funcionalidad estándar de Excel y es exclusiva para las fechas...
Para aplicarlo a tu caso, en esta herramienta, tendrías que definir el árbol con sus ramas par que aparecieran como quieres, y esto es imposible.
Lo siento.
Saludos cordiales
Muchas gracias por tu respuesta.
ResponderEliminarHola, tengo una matriz que crece continuamente y debo filtrarla con diferentes criterio, al utilizar filtro avanzado me pide el "rango de lista", pero como este crece no se como definirlo. Ej $A$1:$K$n , donde " n " es la variable creciente, es porque se van agregando registros.
ResponderEliminarHola Martín,
Eliminarpara estos casos de rango variable lo mejor es trabajar sobre una Tabla, es decir, crear con el rango $A$1:$K$10 (el que tengas en este momento) una Tabla, llámala como quieras, por ejemplo 'Datos', y luego usa ese nombre en el rango de Lista... de esta manera el filtro se adapatará al número de registros que tengas en cada momento.
Slds
tengo una base de datos en excel,nombres, telefonos me piden hallar que el quinto caracter del telefono sea 8 con filtro avanzado como elaboro mi criterio. gracias
ResponderEliminarHola, que tal?
Eliminardebes emplear los caracteres comodines:
el ? para representar un único caracter
y el * para representar un número indefinido de caracteres
Si quieres que el quinto caracter sea un 8, tendrás que aplicar sobre el campo que sea el criterio:
????8*
Slds
mi pregunta es la siguiente, tengo varias tablas dinámicas con el mismo filtro de tabla dinámica. necesito que al digitar el valor del filtro, automáticamente se cambie en las otras tablas. es eso posible. Seria com asignarle al filtro de la tabla dinámica una formula
ResponderEliminarHola,
Eliminarsería posible aplicando macros, de tal forma que al seleccionar y aplicar un elemento (diltrando) sobre un campo de una de las TD, la macro recoja dicho cambio y lo aplique al resto de TD...
Slds