Tabla de contenido
En esta lección rápida, aprenderá cómo filtrar en Excel dinámicamente con fórmulas. Ejemplos para filtrar duplicados, celdas que contienen cierto texto, con múltiples criterios, y más.
¿Cómo se suele filtrar en Excel? En la mayoría de los casos, utilizando Autofiltro, y en escenarios más complejos con Filtro Avanzado. Siendo rápidos y potentes, estos métodos tienen un inconveniente importante: no se actualizan automáticamente cuando cambian los datos, lo que significa que tendría que limpiar y filtrar de nuevo. La introducción de la función FILTRO en Excel 365 se convierte en una alternativa muy esperada paraA diferencia de ellas, las fórmulas de Excel se recalculan automáticamente con cada cambio en la hoja de cálculo, por lo que sólo tendrás que configurar el filtro una vez.
Función FILTRO de Excel
La función FILTRO de Excel se utiliza para filtrar un rango de datos en función de los criterios que se especifiquen.
Esta función pertenece a la categoría de funciones de matrices dinámicas. El resultado es una matriz de valores que se derrama automáticamente en un rango de celdas, empezando por la celda en la que se introduce una fórmula.
La sintaxis de la función FILTRO es la siguiente:
FILTRO(array, incluir, [si_vacío])Dónde:
- Matriz (obligatorio) - el rango o matriz de valores que desea filtrar.
- Incluya (obligatorio) - los criterios suministrados como matriz booleana (valores TRUE y FALSE).
Su altura (cuando los datos están en columnas) o anchura (cuando los datos están en filas) debe ser igual a la del matriz argumento.
- Si_vacío (opcional) - el valor a devolver cuando no hay entradas que cumplan los criterios.
La función FILTRO solo está disponible en Excel para Microsoft 365 y Excel 2021. En Excel 2019, Excel 2016 y versiones anteriores, no es compatible.
Fórmula básica de FILTRO en Excel
Para empezar, analicemos un par de casos muy sencillos para comprender mejor cómo funciona una fórmula de Excel para filtrar datos.
Supongamos que, a partir del siguiente conjunto de datos, desea extraer los registros con un valor específico en el campo Grupo Para ello, introducimos la expresión B2:B13="C" en la columna incluir que producirá una matriz booleana requerida, en la que TRUE corresponde a los valores "C".
=FILTRO(A2:C13, B2:B13="C", "Sin resultados")
En la práctica, es más cómodo introducir los criterios en una celda aparte, por ejemplo F1, y utilizar una referencia de celda en lugar de codificar el valor directamente en la fórmula:
=FILTRO(A2:C13, B2:B13=F1, "Sin resultados")
A diferencia de la función Filtro de Excel, la función no realiza ningún cambio en los datos originales, sino que extrae los registros filtrados en el denominado rango de derrame (E4:G7 en la captura de pantalla siguiente), comenzando en la celda en la que se introduce la fórmula:
Si no hay registros que coincidan con los criterios especificados, la fórmula devuelve el valor introducido en el campo si_vacío argumento, "Sin resultados" en este ejemplo:
Si prefiere no devolver nada en este caso, introduzca una cadena vacía ("") como último argumento:
=FILTRO(A2:C13, B2:B13=F1, "")
En caso de que sus datos estén organizados horizontalmente de izquierda a derecha como se muestra en la siguiente captura de pantalla, la función FILTRO también funcionará bien. Sólo asegúrese de definir los rangos apropiados para los campos matriz y incluir para que la matriz fuente y la matriz booleana tengan la misma anchura:
=FILTRO(B2:M4, B3:M3= B7, "Sin resultados")
Función FILTRO de Excel - Notas de uso
Para filtrar eficazmente en Excel con fórmulas, aquí hay un par de puntos importantes a tener en cuenta:
- La función FILTRO derrama automáticamente los resultados vertical u horizontalmente en la hoja de cálculo, dependiendo de cómo estén organizados sus datos originales. Por lo tanto, asegúrese de tener siempre suficientes celdas vacías abajo y a la derecha, de lo contrario obtendrá un error #SPILL.
- Los resultados de la función FILTRO de Excel son dinámicos, lo que significa que se actualizan automáticamente cuando cambian los valores del conjunto de datos original. Sin embargo, el intervalo suministrado para la función matriz no se actualiza cuando se añaden nuevas entradas a los datos de origen. Si desea que el argumento matriz para redimensionarla automáticamente, conviértela en una tabla de Excel y construye fórmulas con referencias estructuradas, o crea un rango dinámico con nombre.
Cómo filtrar en Excel - ejemplos de fórmulas
Ahora que ya sabe cómo funciona una fórmula de filtro básica de Excel, es hora de conocer cómo podría ampliarse para resolver tareas más complejas.
Filtro con criterios múltiples (lógica AND)
Para filtrar datos con varios criterios, debe proporcionar dos o más expresiones lógicas para el campo incluir argumento:
FILTRO(array, ( gama1 = criterios1 ) * ( gama2 = criterios2 ), "Sin resultados")La operación de multiplicación procesa las matrices con el valor Lógica AND garantizando que sólo los registros que cumplan todos los criterios Técnicamente, funciona así:
El resultado de cada expresión lógica es una matriz de valores booleanos, donde VERDADERO equivale a 1 y FALSO a 0. A continuación, se multiplican los elementos de todas las matrices en las mismas posiciones. Dado que la multiplicación por cero siempre da cero, sólo los elementos para los que todos los criterios son VERDADEROS entran en la matriz resultante y, en consecuencia, sólo se extraen esos elementos.
Los siguientes ejemplos muestran esta fórmula genérica en acción.
Ejemplo 1. Filtrar varias columnas en Excel
Ampliando un poco más nuestra fórmula básica FILTRAR de Excel, vamos a filtrar los datos por dos columnas: Grupo (columna B) y Gana (columna C).
Para ello, establecemos los siguientes criterios: escriba el nombre del grupo destinatario en F2 ( criterios1 ) y el número mínimo necesario de victorias en F3 ( criterios2 ).
Dado que nuestros datos de origen están en A2:C13 ( matriz ), los grupos están en B2:B13 ( gama1 ) y las victorias están en C2:C13 ( gama2 ), la fórmula adopta esta forma:
=FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "Sin resultados")
Como resultado, se obtiene una lista de los jugadores del grupo A que han conseguido 2 o más victorias:
Ejemplo 2. Filtrar datos entre fechas
En primer lugar, debe tenerse en cuenta que no es posible inventar una fórmula genérica para filtrar por fecha en Excel. En diferentes situaciones, tendrá que construir criterios de manera diferente, dependiendo de si desea filtrar por una fecha específica, por mes o por año. El propósito de este ejemplo es demostrar el enfoque general.
A nuestros datos de muestra, añadimos una columna más que contiene las fechas de la última victoria (columna D). Y ahora, extraeremos las victorias que se produjeron en un periodo concreto, digamos entre el 17 y el 31 de mayo.
Tenga en cuenta que, en este caso, ambos criterios se aplican al mismo intervalo:
=FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "Sin resultados")
Donde G2 y G3 son las fechas entre las que filtrar.
Filtro con criterios múltiples (lógica OR)
Para extraer datos basados en una condición OR múltiple, también se utilizan expresiones lógicas como las mostradas en los ejemplos anteriores, pero en lugar de multiplicarlas, se suman. Cuando se suman las matrices booleanas devueltas por las expresiones, la matriz resultante tendrá 0 para las entradas que no cumplan ningún criterio (es decir, todos los criterios son FALSE), y dichas entradas se filtrarán. Las entradas para las que ense extraerá al menos un criterio que sea VERDADERO.
Esta es la fórmula genérica para filtrar columnas con la lógica OR:
FILTRO(array, ( gama1 = criterios1 ) + ( gama2 = criterios2 ), "Sin resultados")Como ejemplo, extraigamos una lista de jugadores que tienen esto o aquello número de victorias.
Suponiendo que los datos de origen estén en A2:C13, las victorias en C2:C13 y los números de victorias de interés en F2 y F3, la fórmula sería la siguiente:
=FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "Sin resultados")
Como resultado, sabes qué jugadores han ganado todas las partidas (4) y cuáles no han ganado ninguna (0):
Filtro basado en múltiples criterios AND y OR
Si necesita aplicar ambos tipos de criterios, recuerde esta sencilla regla: una los criterios Y con un asterisco (*) y los criterios O con el signo más (+).
Por ejemplo, para devolver una lista de jugadores que tienen un número determinado de victorias (F2) Y pertenecen al grupo mencionado en E2 O E3, construya la siguiente cadena de expresiones lógicas:
=FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "Sin resultados")
Y obtendrá el siguiente resultado:
Cómo filtrar duplicados en Excel
Cuando se trabaja con hojas de cálculo enormes o se combinan datos de distintas fuentes, suele existir la posibilidad de que se cuelen algunos duplicados.
Si desea filtrar duplicados y extraer los elementos únicos, a continuación, utilice la función UNIQUE como se explica en el tutorial vinculado anteriormente.
Si su objetivo es filtrar duplicados es decir, extraer las entradas que aparecen más de una vez, utilice la función FILTRO junto con COUNTIFS.
La idea es obtener los recuentos de ocurrencias de todos los registros y extraer los mayores de 1. Para obtener los recuentos, se suministra el mismo rango para cada rango_de_criterios / criterios a un par de CONJUNTOS les gusta esto:
FILTRO( matriz COUNTIFS( columna1 , columna1, columna2 , columna2 )>1, "Sin resultados")Por ejemplo, para filtrar filas duplicadas de los datos de A2:C20 basándose en los valores de las 3 columnas, ésta es la fórmula que hay que utilizar:
=FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "Sin resultados")
Consejo: para filtrar los duplicados en función de los valores de los campos columnas clave incluya sólo esas columnas específicas en la función COUNTIFS.
Cómo filtrar espacios en blanco en Excel
Una fórmula para filtrar las celdas en blanco es, de hecho, una variación de la fórmula FILTRAR de Excel con múltiples criterios Y. En este caso, comprobamos si todas (o determinadas) columnas tienen algún dato y excluimos las filas en las que al menos una celda está vacía. Para identificar las celdas que no están en blanco, se utiliza el operador "no igual a" () junto con una cadena vacía ("") de la siguiente manera:
FILTRO(array, ( columna1 "") * ( columna2 =""), "Sin resultados")Con los datos de origen en A2:C12, para filtrar las filas que contienen una o más celdas en blanco, se introduce la siguiente fórmula en E3:
Filtrar celdas que contienen un texto específico
Para extraer celdas que contengan un texto determinado, puede utilizar la función FILTRO junto con la fórmula clásica Si la celda contiene:
FILTER(array, ISNUMBER(SEARCH(" texto ", gama )), "Sin resultados")Así es como funciona:
- La función BUSCAR busca una cadena de texto especificada en un rango dado y devuelve un número (la posición del primer carácter) o un error #¡VALOR! (texto no encontrado).
- La función ISNUMBER convierte todos los números a TRUE y los errores a FALSE y pasa la matriz booleana resultante a la función incluir de la función FILTER.
Para este ejemplo, hemos añadido el Apellidos de jugadores en B2:B13, escribimos la parte del nombre que queremos encontrar en G2 y, a continuación, utilizamos la siguiente fórmula para filtrar los datos:
=FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Sin resultados")
Como resultado, la fórmula recupera los dos apellidos que contienen "han":
Filtrar y calcular (Suma, Media, Mín, Máx, etc.)
Lo bueno de la función FILTRO de Excel es que no sólo puede extraer valores con condiciones, sino también resumir los datos filtrados. Para ello, combina FILTRO con funciones de agregación como SUMA, PROMEDIO, CONTAR, MÁX o MÍN.
Por ejemplo, para agregar datos de un grupo específico en F1, utilice las siguientes fórmulas:
Total de victorias:
=SUMA(FILTRO(C2:C13, B2:B13=F1, 0))
Promedio de victorias:
=MEDIA(FILTRO(C2:C13, B2:B13=F1, 0))
Máximo de victorias:
=MAX(FILTER(C2:C13, B2:B13=F1, 0))
Ganancias mínimas:
=MIN(FILTER(C2:C13, B2:B13=F1, 0))
Preste atención a que, en todas las fórmulas, utilizamos cero para el si_vacío por lo que las fórmulas devolverán 0 si no se encuentra ningún valor que cumpla los criterios. Si se introduce un texto del tipo "No hay resultados", se producirá un error #VALUE, que obviamente es lo último que se desea :)
Fórmula FILTRO que distingue mayúsculas de minúsculas
Una fórmula FILTRO estándar de Excel no distingue entre mayúsculas y minúsculas, es decir, no distingue entre mayúsculas y minúsculas. Para distinguir entre mayúsculas y minúsculas, anide la función EXACTO en el campo incluir Esto obligará a FILTER a realizar la prueba lógica distinguiendo entre mayúsculas y minúsculas:
FILTRO(array, EXACTO( gama , criterios ), "Sin resultados")Suponiendo, que tienes ambos grupos A y a y desea extraer los registros cuyo grupo sea la "a" minúscula. Para ello, utilice la siguiente fórmula, donde A2:C13 son los datos de origen y B2:B13 son los grupos a filtrar:
=FILTRO(A2:C13, EXACTO(B2:B13, "a"), "Sin resultados")
Como de costumbre, puede introducir el grupo de destino en una celda predefinida, por ejemplo F1, y utilizar esa referencia de celda en lugar del texto codificado:
=FILTRO(A2:C13, EXACTO(B2:B13, F1), "Sin resultados")
Cómo FILTRAR datos y devolver sólo columnas específicas
En la mayoría de los casos, filtrar todas las columnas con una única fórmula es lo que desean los usuarios de Excel. Pero si su tabla de origen contiene decenas o incluso cientos de columnas, es posible que desee limitar los resultados a unas pocas de las más importantes.
Ejemplo 1. Filtrar algunas columnas adyacentes
Si desea que algunas columnas vecinas aparezcan en el resultado de un FILTRO, incluya sólo esas columnas en el campo matriz porque es este argumento el que determina qué columnas devolver.
En el ejemplo básico de la fórmula FILTRO, supongamos que desea devolver las 2 primeras columnas ( Nombre y Grupo ). Por lo tanto, se suministra A2:B13 para el matriz argumento:
=FILTRO(A2:B13, B2:B13=F1, "Sin resultados")
Como resultado, obtenemos una lista de participantes del grupo objetivo definido en F1:
Ejemplo 2. Filtrar columnas no adyacentes
Para que la función FILTER devuelva columnas no contiguas, utilice este ingenioso truco:
- Haga una fórmula FILTRO con la(s) condición(es) deseada(s) utilizando toda la tabla para matriz .
- Anida la fórmula anterior dentro de otra función FILTER. Para configurar la función "envoltorio", utiliza una constante de matriz de valores TRUE y FALSE o 1's y 0's para la función incluir donde TRUE (1) indica las columnas que deben conservarse y FALSE (0) indica las columnas que deben excluirse.
Por ejemplo, para devolver sólo Nombres (1ª columna) y Gana (3ª columna), estamos utilizando {1,0,1} o {TRUE,FALSE,TRUE} para el incluir de la función FILTER externa:
=FILTRO(FILTRO(A2:C13, B2:B13=F1), {1,0,1})
O
=FILTRO(FILTRO(A2:C13, B2:B13=F1), {TRUE,FALSE,TRUE})
Cómo limitar el número de filas devueltas por la función FILTER
Si su fórmula FILTRO encuentra bastantes resultados, pero su hoja de cálculo tiene un espacio limitado y no puede eliminar los datos de abajo, entonces puede limitar el número de filas que devuelve la función FILTRO.
Veamos cómo funciona en un ejemplo de fórmula simple que extrae jugadores del grupo objetivo en F1:
=FILTRO(A2:C13, B2:B13=F1)
La fórmula anterior muestra todos los registros que encuentra, 4 filas en nuestro caso. Pero suponga que sólo tiene espacio para dos. Para mostrar sólo las 2 primeras filas encontradas, esto es lo que tiene que hacer:
- Introduzca la fórmula FILTER en el campo matriz de la función INDEX.
- Para el número_de_fila de INDEX, utilice una constante de matriz vertical como {1;2}. Determina cuántas filas devolver (2 en nuestro caso).
- Para el columna_num utilice una constante de matriz horizontal como {1,2,3}. Especifica qué columnas devolver (las 3 primeras columnas en este ejemplo).
- Para tener en cuenta posibles errores cuando no se encuentran datos que coincidan con sus criterios, puede envolver su fórmula en la función IFERROR.
La fórmula completa tiene esta forma:
=IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "Sin resultado")
Cuando se trabaja con tablas de gran tamaño, escribir manualmente las constantes de las matrices puede resultar bastante engorroso. No hay problema, la función SECUENCIA puede generar los números secuenciales por usted automáticamente:
=IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), SEQUENCE(2), SEQUENCE(1, COLUMNS(A2:C13))), "No result")
La primera SECUENCIA genera una matriz vertical que contiene tantos números secuenciales como se especifican en el primer (y único) argumento. La segunda SECUENCIA utiliza la función COLUMNAS para contar el número de columnas del conjunto de datos y produce una matriz horizontal equivalente.
Consejo: para devolver datos de columnas específicas y no todas las columnas, en la constante de la matriz horizontal que se utiliza para la columna columna_num de INDEX, incluya sólo esos números específicos. Por ejemplo, para extraer datos de la 1ª y 3ª columnas, utilice {1,3}.
La función FILTRO de Excel no funciona
En una situación en la que su fórmula FILTRO de Excel dé como resultado un error, lo más probable es que sea uno de los siguientes:
¡Error #CALC!
Se produce si la opción si_vacío se omite y no se encuentra ningún resultado que cumpla los criterios. La razón es que actualmente Excel no admite matrices vacías. Para evitar estos errores, asegúrese de definir siempre el argumento si_vacío en sus fórmulas.
Error #VALOR
Se produce cuando el matriz y incluir argumento tienen dimensiones incompatibles.
#N/A, #VALOR, etc.
Pueden producirse diferentes errores si algún valor de la incluir es un error o no puede convertirse en un valor booleano.
Error #NAME
Ocurre al intentar utilizar FILTRO en una versión antigua de Excel. Recuerda que es una función nueva, que solo está disponible en Office 365 y Excel 2021.
En el nuevo Excel, se produce un error #NAME si accidentalmente escribe mal el nombre de la función.
Error #SPILL
La mayoría de las veces, este error se produce si una o más celdas del rango de derrame no están completamente en blanco. Para solucionarlo, simplemente borre o elimine las celdas que no estén vacías. Para investigar y resolver otros casos, consulte Error #SPILL! en Excel: qué significa y cómo solucionarlo.
#Error
Ocurre cuando se utiliza una fórmula FILTRO entre diferentes libros de trabajo y se cierra el libro de origen.
Así es cómo archivar datos en Excel de forma dinámica. Gracias por leer y ¡espero verte en nuestro blog la semana que viene!
Descargar el cuaderno de prácticas
Filtrar en Excel con fórmulas (archivo .xlsx)