martes, 13 de octubre de 2009

Un ejemplo de Filtro Avanzado en Excel.

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.

197 comentarios:

  1. 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

    ResponderEliminar
  2. Hola CrIsToFeR,
    para 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

    ResponderEliminar
  3. 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?
    Muchas gracias por la ayuda.

    ResponderEliminar
  4. Hola,
    si, 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

    ResponderEliminar
  5. quiero aplicar filtros en una tabla dinamica

    ResponderEliminar
  6. Estimados amigos, tengo una necesidad con una tablita, necesito crear una lista desplegable condicionada ejemplo

    DEPARTAMENTOS: 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.

    ResponderEliminar
  7. Hola,
    para 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

    ResponderEliminar
  8. 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.
    A 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.

    ResponderEliminar
  9. Hola,
    prueba 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

    ResponderEliminar
  10. 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.

    ResponderEliminar
  11. Hola de nuevo...
    es 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

    ResponderEliminar
  12. 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.
    Gracias por toda la ayuda.

    ResponderEliminar
  13. Hola!!
    bien, 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

    ResponderEliminar
  14. Un ejemplo de filtro avanzado

    ResponderEliminar
  15. hola soy nuevo y tengo una duda sobre una hoja de calculo donde anoto
    asientos 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

    ResponderEliminar
    Respuestas
    1. Hola,
      si 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

      Eliminar
  16. 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

    ResponderEliminar
    Respuestas
    1. Hola,
      es 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

      Eliminar
  17. GRACIAS
    PERO ME PODRIAS DAR UN EJMEPLO POR FAVOR

    ResponderEliminar
  18. cordial saludo

    como 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

    ResponderEliminar
    Respuestas
    1. Hola,
      los 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

      Eliminar
  19. holas buenos dias.
    quisiera 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.

    ResponderEliminar
    Respuestas
    1. Hola Paul,
      no 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

      Eliminar
  20. 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.

    ResponderEliminar
    Respuestas
    1. Hola,
      la 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

      Eliminar
  21. 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

    ResponderEliminar
    Respuestas
    1. Hola,
      para 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

      Eliminar
  22. 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

    ResponderEliminar
    Respuestas
    1. Hola,
      como 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

      Eliminar
  23. Hola, ahora si me dio la fecha entre rangos como me explicaste, muchísimas gracias, llevaba todo el día varada en eso, saludos! :)

    ResponderEliminar
  24. hola, 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

    ResponderEliminar
    Respuestas
    1. Hola Ivan_10,
      bueno, 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

      Eliminar
  25. 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

    ResponderEliminar
    Respuestas
    1. Me 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.
      Por 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

      Eliminar
  26. 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???

    ResponderEliminar
    Respuestas
    1. Hola,
      para 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

      Eliminar
  27. 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.
    la idea es que al darle arrastrar la celda vaya cambiando
    309659281000041461
    309659281000041462

    ResponderEliminar
    Respuestas
    1. Hola!,
      Lo 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

      Eliminar
  28. muchas gracias

    ResponderEliminar
  29. Hola
    una 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

    ResponderEliminar
    Respuestas
    1. Hola,
      podrí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

      Eliminar
  30. 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...
    Gracias!

    ResponderEliminar
    Respuestas
    1. Hola,
      correcto. 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

      Eliminar
  31. Hola,
    Tengo 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.

    ResponderEliminar
    Respuestas
    1. Hola,
      no 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

      Eliminar
  32. Intentaré ser más concreto:
    Si 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.

    ResponderEliminar
    Respuestas
    1. Hola,
      no 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

      Eliminar
    2. Hola de nuevo,
      Con 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.

      Eliminar
    3. Ummm...
      CopyToRange 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

      Eliminar
    4. ¿Como puedo incluir en el código del Filtro Avanzado los criterios ">=" y "<=" para que la selección sea automática, como un AutoFiltro?
      Gracias

      Eliminar
    5. No puedes, en el código del filtro avanzado sólo puedes incluir el rango de criterios en la hoja de cálculo.
      Tienes que centrarte en una de las dos herramientas, o Filtro avanzado o Autofiltro, las dos a la vez no es posible.

      Eliminar
    6. Ummm, he encontrado una manera muy simple de que funcione:

      Fechadesde = 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!

      Eliminar
    7. Hola,
      incluye 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

      Eliminar
    8. Hola de nuevo,
      Ahora 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.

      Eliminar
    9. Hola, como te he indicado en comentarios anteriores, tu problema es entender el funcionamiento de los filtros.
      Que 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

      Eliminar
    10. Para entenderlo mejor, ¿me puedes facilitar un ejemplo?

      Eliminar
  33. ¿se puede hacer el filtro en una hoja diferente?

    ResponderEliminar
    Respuestas
    1. Hola, que tal?
      si es posible, para ello debes ejecutar la herramienta filtro avanzado desde la hoja destino, no desde la que tenga la base de datos.
      Slds

      Eliminar
  34. Hola,
    Tengo 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

    ResponderEliminar
    Respuestas
    1. Hola,
      con 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

      Eliminar
  35. Antes que nada, felicitarte por tu blog.

    Tengo 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,

    ResponderEliminar
    Respuestas
    1. Hola, muchas gracias!!
      Bueno, 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

      Eliminar
  36. He revisado tus sugerencias, y continua el problema. Te envío el archivo.
    Gracias

    ResponderEliminar
    Respuestas
    1. OK,
      lo estoy revisando, pero el problema está en la macro, ya que si lo ejecutas 'manualmente' funciona bien.
      Te digo algo.
      Slds

      Eliminar
  37. He utilizado tu macro, y funciona perfectamente ¡¡¡.
    Muchas 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,

    ResponderEliminar
  38. hola,
    tengo 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

    ResponderEliminar
    Respuestas
    1. Hola,
      no 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

      Eliminar
  39. Hola ExcelForo!
    Me 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

    ResponderEliminar
    Respuestas
    1. Hola Luo, muchas gracias!
      entiendo 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

      Eliminar
    2. Buenas!
      Gracias 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

      Eliminar
    3. Hola Luo,
      para 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

      Eliminar
    4. Si, me sitúo en la hoja de destino y ahí aplico la fórmula que te puse como criterio.
      Verá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

      Eliminar
    5. ¿Me envías mejor el fichero a excelforo@gmail.com?

      Eliminar
  40. Me ha encantado el tutorial. SUPER util, pero tengo un problema.
    Me 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!!










    ResponderEliminar
    Respuestas
    1. Hola, muchas gracias!
      Trabajar 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

      Eliminar
  41. 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.

    ResponderEliminar
    Respuestas
    1. Hola, buenas tardes, ¿cómo estás?.
      Lo 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

      Eliminar
  42. Muchas gracias por tu respuesta.

    ResponderEliminar
  43. Hola, 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.

    ResponderEliminar
    Respuestas
    1. Hola Martín,
      para 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

      Eliminar
  44. 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

    ResponderEliminar
    Respuestas
    1. Hola, que tal?
      debes 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

      Eliminar
  45. 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

    ResponderEliminar
    Respuestas
    1. Hola,
      serí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

      Eliminar
  46. Hola Ismael,
    Yo otra vez...bueno con respecto a este tema me surgió una idea hace un tiempo mientras estaba en el trabajo, y se trata de realizar una especie de filtro avanzado que vaya filtrando la información mientra escribe el criterio y que vaya reduciendo simultáneamente mientras terminas de escribir el criterio de filtro, he visto este tipo de consultas instantáneas en sql y plataformas de visual studio...sabes de algún método aplicado en excel para el caso que te comento?

    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola Yuri!!
      el problema que veo, es sólo mi opinión, es que en Excel neceistas validar la celda (presionando Enter o similar) para que admita el valor introducido.. por lo que no creo sea posible tal planteamiento desde la hoja de cálculo.
      Quizá desde un UserForm o un control ActiveX se pudiera actuar de manera parecida... pero supongo habría que filtrar siempre sobre el mismo campo, con un mismo tipo de datos (texto, fecha, numérico...)
      Slds

      Eliminar
    2. Hola Ismael,
      Te comentaba de esto porque estoy pensando en hacer una especie de pequeño sistema de facturación y control de inventario y a veces es necesario hacer consultas rápidas, así que me di la libertad de enviarte un archivo a tu correo de gmail, estuve pensando y consultando la misma ayuda de office y la verdad no sé ni cómo llegué a hacer eso pero a ver si le das una ojeada porque salió algo interesante.
      Me das tus observaciones luego.
      Saludos

      Eliminar
    3. Hola Yuri...
      la idea es la misma que tenía en la cabeza.
      Realmente lo que haces con esa macro (a mí me falla bastante, a tí no?), es aplicar un filtro avanzado cada vez que cambias el texto en el TextBox... es decir engañas al ojo del usuario con el efecto que según escribes en el TextBox se muestra en el ListBox o en la hoja de cálculo el refresco de datos.

      Pero con un par de líneas más, quedaría 'resultón'.
      Podrías añadir al principio y al final
      Application.ScreenUpdating = False
      ....
      Application.ScreenUpdating = True

      Podrías borrar el rango cada vez que escribas algo nuevo, justo antes de que vuelvas a aplicar el Filtro
      Sheets("Hoja1").Range("E20", Range("G" & Rows.Count).End(xlUp)).Clear

      Lo del ListBox no entiendo para qué sirve, qué utilidad le das....

      Está muy bien
      ;-)

      Slds

      Eliminar
  47. malisimo el foro, no entendi nada de nada, prefiero yahoo respuestas.

    ResponderEliminar
  48. necesito ayuda:

    A1: AD
    A2: AD
    A3: A
    A4: A
    A5: D
    A6: AD

    LUEGO FILTRO AD, PARA CAMBIARLES DE NOMBRE A AGUA Y DESAGUE, LOS DESPLAZO, Y EL A3, A4 Y A5 SUFREN LAS MODIFICACIONES, CUANDO YO SOLO QUIERO QUE LAS CELDAS FILTRADAS SE CAMBIEN, ES UN EJEMPLO NADA MAS, PORQUE LO QUE REALMENTE QUIERO ES DESPLAZAR FECHAS, PERO ESTAS SE COPIAN AUTOMATICAMENTE EN LAS CELDAS OCULTAS DE LOS FILTROS, POR FAVOR ALGUIEN ME PUEDE AYUDAR CON ESTE PROBLEMA M I CORREO ES JR2910@HOTMAIL.COM

    ResponderEliminar
  49. Quiero filtrar registros cuya penultima letra del nombre sea la letra "O", el ejercicio dice

    "mostrar las personas nacidas en lima, que tengan hijos y que el penultimo caracter de su apellidos sea la O!

    ResponderEliminar
    Respuestas
    1. Hola que tal Amparo!, espero te encuentres bien.
      Para aplicar el filtro que indicas utiliza los comodines, en tu caso sería:
      *O?
      es decir caracteres indeterminados pero el segundo por la derecha debe ser O (el penúltimo caracter).

      Un cordial saludo

      Eliminar
    2. GHola
      Que sucederia si la ultima letra es O (Roberto, Diego, Sandro, Pedro)
      Gracias por su respuesta

      Eliminar
    3. Hola Luis,
      con ese filtro *O? estamos diciendo que la penúltima (no la última) letra sea una O.. por lo que ninguno de esos nombres (Roberto, Diego, Sandro, Pedro) aparecerían en el resultado filtrado...

      Si quieres ver los nombres que acaben en o, pondríamos simplemente *o

      Saludos

      Eliminar
  50. Hola Ismael:
    Resulta que tengo un problema quiero hacer un filtro "no autofiltro" que sea macro Tengo
    en la columna B6 hasta B3000 con fechas en la hoja2 y las demas columnas datos referentes a las fechas son fechas unicas.
    En la hoja1 quiero escribir en la celda L7 una fecha y me filtre la fecha y traiga los datos
    de la columna EJ: C , H , F , I , K de la hoja2
    Como hago para que traiga el dato de la columna C y lo pege en la celda B:17 de la hoja1 y de la columna F traiga el dato y lo pege en la celda B20 de la hoja1
    Lo que busco es hacer que yo le ponga en donde quiera que se pegen los datos filtrados en las celdas que desee
    Muchas gracias de antemano

    ResponderEliminar
  51. Hola,
    mi recomendación sería que grabaras con el asistente de grabación el empleo de un Filtro avanzado, para luego personalizar las variables...

    La ventaja del filtro avanzado es que puedes copiar donde quieras el resultado del filtro aplicado, además de los campos que consideres... (pero siempre contiguos).

    Otras opciones (para tu caso quizá sirva) sería hacer un recorrido don un bucle FOR....NEXT por el rango B6:B3000 que vaya evaluando cada Fecha con u nIF.. THEN.. y cuando cumpla la condición copie y pegue donde tu le digas.

    Espero haberte orientado.
    Saludos cordiales

    ResponderEliminar
  52. Hola:
    Tengo una planilla en la cual tengo la nomina de alumnos de un colegio con sus respectivas asignaturas y docentes. Cada alumno esta identificado con un codigo unico, al igual que cada asignatura tiene un codigo que es unico. en otra hoja, tengo el listado de asignaturas,(con sus codigos) y los horarios de dichas asiganturas (algunas de ellas tienen clases mas de una vez a la semana, por lo que aparecen repetidas tantas veces como clases hay en la semana). Lo que pretendo hacer es una macro que me permita ingresar el codigo del alumno a partir del cual puedo con filro avanzado buscar sus asignaturas, y en base a ese resultado puedo aplicar otro filtro avanzado y buscar el horario de esas asignaturas......el problema es que no todos los alumnos tienen la misma cantidad de asignaturas por lo que no se como definir el rango de criterios para hacer el 2do filtro.....manualmente funciona, pero para hacer la macro ¿que coloco el rango de criterio del 2do filtro, si no se cuantas asignaturas tendrá el alumno?....he probado y si en el rango es mayor al numero de asignaturas del alumno, me tira todo el listado de horarios....¿me puedes ayudar? gracias

    ResponderEliminar
    Respuestas
    1. Hola,
      no sé si comprendí bien (y quizá necesitaría saber cuál y como construyes los filtros).. pero para indicar como condición a ese 2do filtro puedes insertar una función de conteo (CONTAR.SI.CONJUNTO), que te indique el número de horas por asignatura y alumno...
      que me parece es lo que necesitas.
      Espero haberte orientado.
      Slds

      Eliminar
  53. Excelente Foro!!!, con algo tan simple y bien explicado como presentaste lo de poner criterios ordenados en diferente columna pero en la misma fila con el mismo encabezado para lograr hacer un filtro con lógica Boleana ("Y") y en diferente fila ("O") para los filtros avanzados me ayudo enormemente.

    Gracias de nuevo

    ResponderEliminar
  54. Buenos días, tengo un inconveniente con una hoja de calculo la cual quiero coger los valores superiores a cero, pero en el momento de realizar el filtro avanzado me esconde todas las celdas, que puede ser ??
    gracias

    ResponderEliminar
    Respuestas
    1. Hola,
      lo primero sería comprobar que no es un problema del formato de esos valores.. podría ser que fueran todos valores positivos.. pero por algún tipo de formato parecieran negativos!!.

      Otro caso, quizá más probable es que a la hora de aplicar el Filtro (supongo avanzado) estés tomando alguna fila vacía en el rango de criterios.. lo que te llevaría a mostrar todos los registros (positivos o negativos)...

      Es difícil decir sin tener delante el ejemplo..
      Si no es ninguno de los casos comentados puedes enviarme el ejemplo a
      excelforo@gmail.com

      Un saludo

      Eliminar
  55. ok, ya te envío al correo.
    te agradezco

    ResponderEliminar
  56. tu correo rebota, por favor me regalas otro. gracias.

    ResponderEliminar
    Respuestas
    1. ??
      excelforo@gmail.com
      es el correo correcto... recibo unos cuantos a diario sin probelma..
      lo siento pero no hay otro
      Prueba de nuevo, quizá sea un problema puntual

      Eliminar
  57. Hola mi nombre es Edgar, deseo aplicar filtro avanzado o filtro común no se cual, tengo la misma tabla con datos en libros direfentes las mismas cabezeras de columna pero con otros valores numericos, como hago por ejemplo para extraer al registro con el nombre Juan con todos sus datos, si tengo tres tablas, juan debe de mostrarse tres veces..... puedes ayudarme

    ResponderEliminar
  58. A lo mejor no sea filtro sino la combinacion de algunas funciones de busqueda y de referencia..... necesito un ejemplo para aplicarlo....

    ResponderEliminar
    Respuestas
    1. Hola Edgar,
      puedes aplicar un Autofiltro en cada una de las tres tablas aplicando la condición 'igual a Juan' en el campo correspondiente...
      o bien aplicar un Filtro avanzado de forma similar e ir copiando el resultado en otro lugar.
      En ambos casos tendrías que hacerlo manualmente las tres veces...

      Otras opciones pasan por programación.
      Saludos cordiales

      Eliminar
  59. Buenas tardes. Si alguien me puede ayudar. Tengo una tabla dinamica con muchos valores menores a 500.000, y varios conceptos. Como se puede hacer en la tabla dinamica para que sume esos valores menores de 500.000 en un solo registro.

    ResponderEliminar
    Respuestas
    1. Hola Marquez,
      dependiendo de la configuración/ diseño de la tabla dinámica podrías aplicar una agrupación..o quizá algún campo calculado con un condicional....
      Habría que ver la información (origen de datos) y diseño.
      Un saludo

      Eliminar
  60. Buenas Tardes. Tengo una tabla (T1) con código, nombre y descripción. Por otra parte tengo una fila (F1) con solo códigos. Necesito saber que códigos en F1 NO ESTÁN en la tabla T1. Muchas Gracias!!

    ResponderEliminar
    Respuestas
    1. Hola Carol,
      en la fila inferios a la Fila1 aplica una función
      =BUSCARV(codF1;rango Tabla1;1;0)

      aquellos que devuelva #N/A serán códigos que no existen en la Tabla.

      Al revés, puedes aplicar en tu Tabla1 una función
      =BUSCARH(codigo;Fila1;1;0)
      aquellos que devuelva #N/A serán códigos que no existen en la fila.

      Saludos

      Eliminar
  61. hola no le puedo entender Quiero saber qué departamentos de 1 dormitorio tienen un costo entre $360.000 y $410.000. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?

    2) Quiero ver todas las propiedades que están vendidas y todas las que están alquiladas. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?

    3) Quiero ver los monoambientes y departamentos de 1 y 2dormitorios que están alquilados. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?

    4) Quiero ver los departamentos de 1 dormitorio que se hayan vendido por más de $390.000, y los de 2 dormitorios que hayan sido vendidos por más de $570.000. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?

    ResponderEliminar
    Respuestas
    1. Hola Nicole,
      te contesto la primera para que te hagas una idea.
      El rango de criterio sería:
      NumDormitorios_Costo________Costo
      1______________>=360.000___<=410.000
      Saludos

      Eliminar
    2. Hola! ¿Qué operador y cuál sería el rango para la pregunta Nº2?
      Saludos!

      Eliminar
    3. Hola
      Tipo________________Departamentos
      Monoambientales_____departamento 1
      Monoambientales_____departamento 2

      Saludos

      Eliminar
    4. Perdón, contesté la tercera pregunta.
      la segunda sería:
      Propiedad
      Vendida
      Alquilada

      Saludos

      Eliminar
  62. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  63. hola! cuales serian los criterio para el 3 y el 4? gracias! saludos

    ResponderEliminar
    Respuestas
    1. Hola,
      la cuarta:
      NumDormitorios______PrecioVenta
      1__________________ >390.000
      2__________________ >570.000

      la tercera pregunta está solucionada más arriba.

      Saludos

      Eliminar
  64. Quiero saber qué departamentos de 1 dormitorio tienen un costo entre $360.000 y $410.000. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?

    ResponderEliminar
    Respuestas
    1. Hola Laury,
      que tal estás?, espero te encuentres bien igualmente...
      La cuestión está contestado unos comentarios más arriba.

      Un cordial saludo

      Eliminar
  65. Hola Ismael,

    utilice tu guía para el Filtro Avanzado y genial. He solucionado gran parte de mi problema, pero me gustaría 'afinar' un poco más. Te cuento:
    - Recibo una hoja diaria con unas 200 filas (pedidos) y 12 columnas por fila.
    - en una de esas columnas aparece (al principio, en el medio o al final de la celda) una palabra 'clave' en concreto (existen 25 palabras clave diferentes, una por cada comercial que ha hecho la venta)
    - con el filtro avanzado que enseñaste, discrimino los pedidos que no son de ningún vendedor en concreto (es decir, no contienen ninguna de las palabras clave) y me quedo con las filas (pedidos) que pertenecen a algún comercial y lo imprimo con una Combinación de Correspondencia como un parte de trabajo para la preparación del pedido y la posterior entrega por parte del comercial.

    El caso es que como el filtro en excel no modifica el orden de las filas, los partes de trabajo que me quedan (unos 80 folios cada día) me salen con el mismo orden en que se registraron los pedidos y, por lo tanto, me tengo que poner a hacer montoncitos de papeles: los pedidos de Juan, los pedidos de Pedro, los pedidos de Ana,..
    La cuestión es que me gustaría poder añadir, (después de realizar el filtrado y antes de mandarlo a la combinación de correspondecia), una columna donde excel me escribiese la palabra clave que ha tenido en cuenta para el filtrado en cada caso, y luego ya ordeno según esa columna y listo.

    Espero haber sabido explicarme con claridad. Gracias.

    ResponderEliminar
    Respuestas
    1. Hola luanferas,
      tal cosa no es posible con la herramienta de Filtro, en todo caso habría que desarrollas una macro a medida que hiciera lo que planteas...o quizá trabajándolo bastante con una combinación de fórmulas
      :(
      Saludos

      Eliminar
    2. Me temía que no debía ser fácil, y la verdad es que lo de las macros se escapa a mi conocimiento (no sabría ni por donde empezar).
      También fui probando con HALLAR, ENCONTRAR y luego EXTRAER a partir del número de carácter dado, pero solo dejan buscar por una palabra (no por un rango donde haya varias palabras)

      Gracias por la rapidez.

      Eliminar
    3. :(
      ya te digo, con programación se podría lograr.. pero llevaría su tiempo
      Saludos

      Eliminar
    4. Hola, estoy intentando organizar por medio de filtros avanzados un listado de 51 filas y dos columnas. La primera con datos , la segunda con números.
      He seguido los pasos que aparecen en el inicio de este blog pero no consigo resolverlo.

      Se trata de seleccionar las filas que tienen un número entre 14 y 16 y copiarlas en una nueva posición.
      El rango de lista es $A$1:$B$51
      El rango de criterios $F$1:$G$1 donde F1 es >14,00 y G1 es <16,00

      Lo que ocurre al aplicar este filtro es que copia de nuevo todas las filas del listado en otro lugar.
      ¿Alguna idea de como resolverlo?

      Una vez resuelto me gustaría crear otro .filtro para seleccionar las filas donde se nombra la palabra TELEFONO.

      Gracias de antemano.

      Eliminar
    5. Hola Fernando,
      en el rango de criterios, en su primera fila, se debe incluir (como aparece en la imagen del post) el mismo encabezado que existe en el origen; en tu caso (no lo indicas) pero tu rango de criterio podría ser en F1:G2
      números_________números
      >14_____________<16

      Saludos

      Eliminar
  66. Muchisimas gracias Ismael.
    Funciona a la perfección.

    Felicidades por el blog y por la ayuda que prestas!

    ResponderEliminar
  67. Hola, como hago el filtro de que la tercera letra sea "a"

    ResponderEliminar
    Respuestas
    1. Hola Steff,
      el filtro sería:
      ??a*

      Saludos

      Eliminar
    2. Estimado Ismael :
      Tengo el mismo caso de Steff y hace varias horas vengo aplicando exactamente el mismo filtro que le indicaste a ella. ¿Por qué no me sale la respuesta esperada?
      Saludos.
      Ernesto Valdivia

      Eliminar
    3. Hola Ernesto,
      si aplicas un autofiltro sobre tu base de datos, simplemente selecciona el campo en cuestión y escribe el filtro comentado, empleando los comodines...
      Si empleas un Filtro avanzado debes escribir en el rango de criterios el nombre del campo y debajo lo expuesto.

      ??a*

      el comodín ? especifica UN solo caracter, y el comodín * un número indeterminado de caracteres...

      Saludos

      Eliminar
  68. Hola:
    Tengo una tabla donde en la columna A se repiten determinados valores (ej.: A, B, A, C...) y donde en otra columna hay una fecha para cada campo de la columna A.
    Pues bien, desearía que mediante una tabla dinámica se ordenasen por valores de columna A (A,A,B,C...) y por fecha (de más recientes a más antiguos) –hasta aquí he llegado yo- y se filtrasen de forma que de los registros repetidos de la columna A sólo se extrajera aquel que esté más próximo a la fecha actual y, obviamente, se extraiga también aquel registro de la columna A que es único y por tanto es el más próximo a día de hoy
    Tabla original Ordenada Final
    A 11/11/2015 A 11/11/2015 A 11/11/2015
    F 31/08/2015 B 13/11/2015 B 13/11/2015
    H 12/11/2015 B 05/09/2015 C 04/11/2015
    B 05/09/2015 B 05/09/2015 D 05/10/2015
    C 04/11/2015 C 04/11/2015 E 25/07/2015
    D 05/10/2015 D 05/10/2015 F 31/08/2015
    E 25/07/2015 E 25/07/2015 H 12/11/2015
    B 13/11/2015 F 31/08/2015
    F 01/01/2015 F 01/01/2015
    B 05/09/2015 H 12/11/2015

    ResponderEliminar
    Respuestas
    1. Hola Mitxel,
      puedes aplicar un filtro especial para que te muestre le valor más alto.. en este caso la fecha mayor o más reciente.
      Saludos

      Eliminar
  69. para filtrar mas de una tabla hermano con filtro avanzado

    ResponderEliminar
    Respuestas
    1. Hola que tal?
      espero te encuentre bien.
      No es posible filtrar más de una tabla a la vez con filtro avanzado...
      tendrías que reordenar de alguna manera todas tus tablas en una sola.. o bien aplicar alguna macro.
      Saludos

      Eliminar
  70. Hola que tal Ismael
    Quisiera saber como puedo hacer un filtro se manera que me arroje los mismos datos determinada cantidad de veces. tengo una tabla de tipos de trabajo con sus materiales y cantidades y cuando quiero ver una orden de pedido a veces tiene 2 tipos de trabajo iguales entonces quiero que me arroje 2 veces la misma lista.
    Gracias

    ResponderEliminar
    Respuestas
    1. Hola Jordany,
      lo primero que deberíamos saber es dónde quieres te arroje esas listas.. hablamos de impresión o de llevar los datos a una hoja de cálculo??.
      En todo caso, entiendo el proceso debería realizar primero un conteo de esos tipos de trabajo (quizá con una función CONTAR.SI.CONJUNTO), para tomar ese dato como variable y luego emplearlo para imprimirlo o pegar el rango en otro lugar...

      Hacerlo manualmente es otro opción, empleando el filtro avanzado, y siendo tú quien tras ver el primer resultado pegado en otro lugar, decida si copiarlo de nuevo...

      Saludos

      Eliminar
  71. hola buenas
    favor si me puedes ayudar con una macro que tengo,
    el problema es el siguiente, tengo un filtro avanzado en una columna al cual le aplico dos criterios (no contiene) , y me funciona bien, el problema es cuando trato de agregarle un tercer criterio,

    ActiveSheet.Range("$A$1:$FE$61044").AutoFilter Field:=70, Criteria1:= _
    "<>*caño*", Operator:=xlAnd, Criteria2:="<>*tabla*"

    como se puede hacer para que me filtre por mas de esos 2 criterios
    se agradece cualquier ayuda

    ResponderEliminar
    Respuestas
    1. Hola!,
      el problema de trabajar con la herramienta Autofiltro (Autfilter) es que estamos limitado a un máximo de dos criterios por campo...
      para aplicar más criterios tenemos que emplear el Filtro Avanzado y un rango de criterios auxiliar

      Entra aquí para ver algunos ejemplos de filtro Avanzado (con o sin macros):
      http://excelforo.blogspot.com.es/search/label/Filtros

      Saludos

      Eliminar
  72. Buenas noches si me pueden ayudar.necesito la fórmula para calcular el promedio de notas de un boletín,pero que me calcule solo aquellas materias que tengan notas.ejemplo:
    15
    13
    00

    16
    15
    00
    11
    00
    13
    09
    14
    Promedio:13,25
    Solo las materias que tienen notas.

    ResponderEliminar
    Respuestas
    1. Hola Carlos,
      la función que buscas es:
      =PROMEDIO.SI(A1:A12;"<>0")
      Saludos

      Eliminar
  73. Gracias Ismael por tu pronta ayuda.

    ResponderEliminar
  74. HOLA tengo un problema... quiero usar los datos de un filtro y que cuando por ejemplo filtre mexico me arroje el total de méxico como le hago???

    ResponderEliminar
    Respuestas
    1. Hola,
      para esto mejor emplea simplemente un Autofiltro y añádale la fila de totales incluyendo la función suma en el campo que desees ver ese total.
      Saludos

      Eliminar
  75. hola, para resolver esto como tendria que hacer? Quiero saber qué departamentos de 1 dormitorio tienen un costo entre $360.000 y $410.000. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?

    ResponderEliminar
    Respuestas
    1. Hola Heidi,
      por favor, revisa los comentarios anteriores en este post, esta misma pregunta está resuelta.
      Un saludo

      Eliminar
  76. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  77. hola....tengo una tabla y necesito filtrar una columna por las palabras que comiencen por f,l y m pero en el filtro solo me da la opcion para filtrarlo por dos, me puede ayudar...gracias!

    ResponderEliminar
    Respuestas
    1. Hola,
      para estos casos deberías emplear el Filtro avanzado con esos tres criterios.
      El rango de criterio debería ser el encabezado del campo y en las filas de abajo
      f*
      l*
      m*

      con eso obtendrás lo que necesitas...
      Un saludo

      Eliminar
  78. Hola podrian indicarme cómo se representa el operador O en los filtros avanzados? Gracias

    ResponderEliminar
    Respuestas
    1. Hola Mirian,
      puedes optar por escribir en filas diferentes (y seguidas) de la misma columna, debajo del rótulo del campo en el rango de criterios...
      Fíjate en la tercera imagen (columna J) del post de arriba.
      Saludos

      Eliminar
  79. 2) Quiero ver todas las propiedades que están vendidas y todas las que están alquiladas. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?
    ayuda por favor

    ResponderEliminar
    Respuestas
    1. Hola, qué tal?
      un placer saludarte.

      En el rango de criterios, bajo el nombre del campo, en dos filas distintas: Vendidas y Alquiladas.
      De esta forma:
      Situación (nombre del campo)
      Vendidas
      Alquiladas


      Saludos cordiales

      Eliminar
  80. Hola, soy estudiante de psicologia y me fue dado un trabajo práctico en el que se me pide filtrar con filtros avanzados cuántas personas han respondido con un puntuaje de 10 a las preguntas que se les hicieron.
    Al intentar filtrar los datos sólo los toma cuando el criterio está aplicado a una sola persona de 5, cuando lo aplico a todas directamente no me filtra nada. ¿Qué puedo estar haciendo mal?

    ResponderEliminar
    Respuestas
    1. Hola Soledad,
      asegúrate que en el rango de criterios el nombre del campo es igual al que existe en el origen de datos, debajo deberías poner:
      >10
      Saludos

      Eliminar
  81. Podrias indicarme como se representa el operador O en filtros avanzados?

    ResponderEliminar
    Respuestas
    1. Hola!
      tal como se indica en el post:'y que las condiciones en distintas filas indicarán un cumplimiento adicional (i.e., equivale a un operador O)'
      esto es, debes situar una condición debajo de otra
      ;-)
      Saludos

      Eliminar
  82. Buenas tardes

    Quisiera saber como hacer para que al momento de uno hacer un filtro y que el valor que arroje aparezca tambien en otrs hoja, ejemplo tenemos todos los paises del mundo y cuando yo filtre y solo me aparezca información de Colombia, esa misma información me aparezca en otra hoja.

    ResponderEliminar
  83. Buenas tardes Ismael.
    Recién entre a este nuevo trabajo, donde el control sobre la información se lleva bien, pero todo es manual, requiere tiempo del que se podría invertir en otras actividades.
    Aquí se rentan trailers a otras empresas, y cada viaje se registra con un folio. Cada que se hace pago por quincena, se busca manualmente el folio para subrayarlo y ponerle que ya se pagó.
    Lo que quiero es que al momento de ingresar el folio, este se elimine automáticamente, o se remarque como pagado, sin tener que hacerlo manualmente.
    Esto es posible con filtros y/o comandos?

    ResponderEliminar
    Respuestas
    1. Hola,
      se podría realizar una búsqueda de la base de datos original sorbe la secundaria donde se registran/ingresa el folio.. quizá un BUSCARV o similar, para que localiza automáticamente si aparece o no el folio.

      Esa podría ser una idea, sin ver estructura de datos es difícil precisar más.
      Saludos

      Eliminar
  84. hola, tengo que filtrar los datos de una tabla con por ejemplo las columnas f,g,h,i,j pero solo quiero que muestre las columnas g y h, como podria hacerlo con un filtro avanzado? muchas gracias, saludos

    ResponderEliminar
  85. Hola estimado!! necesito ayuda. La lógica de lo que debo hacer es la siguiente:

    Hoja de cálculo 1 con la QUERY
    Hoja de cálculo 2 donde se reordenan los datos

    En la hoja 1 la query toma datos en linea desde SQL a partir de una base de datos que se actualiza minuto a minuto. En esta query hay columnas que me sirven como criterio para poder extraer el nombre de todas las personas que cumplen la condición según la cual necesito ordenarlas. Para ser mas especifico, seria algo así:

    BUSCAR EN BASE DE DATOS SEGÚN LA FECHA, SEGÚN EL CRITERIO 1, CRITERIO 2, CRITERIO 3 Y CRITERIO 4. Lo que busco es que todas aquellas personas que cumplen todas esas condciones se copie el nombre en la hoja 2, considerando que cada nombre tiene asociada una variable que identifica a esas personas (es una nota o calificación de cada persona).

    No logro que se realice esta copia, ya que probe con usar "SUMAR.SI.CONJUNTO" para que buscara el valor de la calificación que cumple los 4 criterios + la fecha y le agregue un "CONCATENAR" para que me buscara el nombre de la persona asociada a esa calificación, sin embargo no me toma todas las personas que cumplen las condiciones, ya que siempre toma la ultima de toda la lista de datos.

    ¿Qué puedo hacer?

    De antemano gracias.

    ResponderEliminar
    Respuestas
    1. Hola,
      si necesitas aplicar un filtro Avanzado solo añade a tu Rango de Criterios las condiciones que necesites, como en el ejemplo del post.. no haría falta incluir funciones (SUMAR.SI.CONJUNTO, CONCATENAR, etc.)

      Te devolverá todos los registros que verifiquen esos criterios.

      Espero haber entendido qué necesitas
      Saludos

      Eliminar
  86. Hola me gusto mucho tu video,Tengo una duda estoy tratando de filtrar,una base de datos
    con dos criterios uno con la clave de un articulo y otro para que busque el precio minimo de dicho articulo peo no funciona
    Criterios
    IGUAL(H6,"IM02413") I6>MIN($I$6:$I$6283)

    Base de datos
    CVE_ART PREC
    IM02413 488.600000
    IM02413 510.600000
    IM02401 419.000000
    IM02401 401.000000
    IM02442 553.900000
    IM02442 530.000000
    IM02410 450.000000
    IM06009 1574.200000
    IM02413 488.600000

    ResponderEliminar
    Respuestas
    1. Hola,
      ?has tenido la precaución de marcar la fila superior vacía sobre las celdas donde insertaste las fórmulas
      IGUAL(H6,"IM02413") I6>MIN($I$6:$I$6283)
      ??

      En todo caso para buscar el precio mínimo de ese artículo escribe
      I6=MIN(SI($H$6:$H$6283="IM02413";$I$6:$I$6283))
      y ejecuta matricialmente (presiona Ctrl+Mayusc+Enter)

      Debería funcionar
      Saludos

      Eliminar
    2. Gracias Jorge a nivel formula si me sirvio,pero al usar esta formula Matricial como Criterio(dejando la fila superior vacia)
      en un filtro no funciono
      ya se me hizo reto saber si =min junto con otro criterio funciona
      he encontrado en internet personas que tienen la misma duda
      pero no he encontrado ni la solucion ni nadie que diga si es posible usar este criterio(=min) con otro

      Eliminar
    3. Hola 20021957,
      indicarte que mi nombre es Ismael ;-)
      Prueba lo siguiente (probado y funciona).
      Crea un nombre definido (llámalo minimo):
      minimo =MIN(SI(Hoja1!$H$6:$H$14="IM02413";Hoja1!$I$6:$I$14))

      Luego en tu celda de criterio añade:
      =I6=minimo
      (te aseguras que la celda de arriba esté vacía (y la seleccionas como parte del criterio).
      Ejecuta el filtro avanzado y obtendrás lo que necesitas
      Saludos

      Eliminar
    4. Funciono Perfecto Muchas Gracias

      Eliminar
  87. Quiero saber qué departamentos de 1 dormitorio tienen un costo entre $360.000 y $410.000. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?

    ResponderEliminar
    Respuestas
    1. Hola Roxana,
      que tal estás?, un placer saludarte igualmente.
      Si lees con atención el post, y los comentarios anteriores de otros usuarios verás que la respuesta la tienes a tu disposición.

      Un cordial saludo

      Eliminar
  88. Buenas tengo una tabla con una lista de nombres y apellidos quisiera con filtros avanzados filtrar sólo los apellidos que terminen en la letra "o"

    ResponderEliminar
    Respuestas
    1. Hola Juan,
      en el rango de criterios, debajo del campo de apellidos, inserta la condición:
      *o

      Saludos

      Eliminar
  89. Hola
    fíjate que tengo 4 columnas pero necesito los nombres de los nombres que perdieron clases

    ResponderEliminar
    Respuestas
    1. Hola,
      no tengo información suficiente para darte una respuesta...
      habría que ver la distribución de datos y cómo reconocer esos que perdieron datos...
      Slds

      Eliminar
  90. Muy bueno el tutorial!!

    Tengo una base de datos de visitas mensual a clientes de rutas de distintos ejecutivos, en ella tengo algunos clientes visitados más de una vez en diferentes fechas del mismo mes, cómo puedo filtrar y que me de como resultado la fecha más reciente y con ella extraer toda la información de dicha visita.

    ResponderEliminar
  91. 1) Quiero saber qué departamentos de 1 dormitorio tienen un costo entre $360.000 y $410.000. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?

    ResponderEliminar
  92. 2) Quiero ver todas las propiedades que están vendidas y todas las que están alquiladas. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?
    3) Quiero ver los monoambientes y departamentos de 1 y 2dormitorios que están alquilados. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?
    4) Quiero ver los departamentos de 1 dormitorio que se hayan vendido por más de $390.000, y los de 2 dormitorios que hayan sido vendidos por más de $570.000. ¿Cómo tendría que escribir el criterio para aplicar un filtro avanzado?

    ResponderEliminar
    Respuestas
    1. Hola Luciana,
      revisa por favor todos los comentarios anteriores, porque esas mismas preguntas ya están respondidas
      Gracias

      Eliminar
  93. Buenas noches.

    Realice un filtro avanzado en exls, en donde utilicé criterios de varias columnas, y con valores únicos

    Para comprobar si estaba correcto, concatené las columnas utilizadas para el filtro avanzado, copie y pegué como texto, y le apliqué formato condicional, duplicar valores y me aparecen 5 registros repetidos.

    Si alguien me puede ayudar, le agradezco inmensamente.

    ResponderEliminar
    Respuestas
    1. Hola María,
      trataré de subir un ejemplo que replique tu caso

      Saludos

      Eliminar
  94. Estimados, estoy haciendo una macro con filtro avanzado pero me da error "El rango de extracción tiene un nombre de campo inexistente o no permitido" creo que se debe a que el rango de criterios es de 8 columnas la hoja en la que busca esos criterios es de 8 columnas y yo solo quiero mostrar luego del filtro 6 columnas, como puedo hacer?

    ResponderEliminar
    Respuestas
    1. Hola Diego
      te has asegurado que las 6 columnas de destino indicadas tienen el mismo nombre?
      Y en tu macro has marcado como destino ese rango concreto de seis columnas?

      Saludos

      Eliminar
  95. Sería chévere que dieras el enlace para descargar el archivo del excel como ejemplo para nosotros mismo ir haciendo paso a paso. Gracias!

    ResponderEliminar
    Respuestas
    1. Lo siento, pero no hay fichero que compartir
      :'(
      Sigue los pasos y cualquier duda comentas

      Saludos cordiales

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.