Eliminar filas en blanco de una tabla con FILTRAR y BYROW

Óscar plantea una duda práctica: tiene una tabla en Excel con filas que contienen información y otras vacías, y necesita extraer solo las filas con datos válidos, eliminando las que están en blanco.

Hugo apunta rápidamente la dirección correcta: FILTRAR. A partir de ahí, Ned desarrolla la solución completa combinando FILTRAR con BYROW para evaluar cada fila de la tabla:

``
=FILTRAR(Tabla1,BYROW(Tabla1<>"",LAMBDA(r,O(r))))
`

La lógica es sencilla: Tabla1<>"" genera una matriz de verdaderos/falsos para cada celda, BYROW recorre fila por fila aplicando la función O() (que devuelve VERDADERO si al menos una celda de la fila tiene contenido), y FILTRAR se queda solo con las filas que pasan el filtro.

Ned comparte además una versión más compacta usando la eta-lambda, que simplifica la sintaxis eliminando la necesidad de declarar el parámetro explícitamente:

`
=FILTRAR(Tabla1,BYROW(Tabla1<>"",O))
`

Esta segunda forma aprovecha que O ya es una función que acepta un array, por lo que se puede pasar directamente como argumento de BYROW sin envolverla en LAMBDA`.

Una tabla con filas vacías intercaladas es un clásico de los ficheros que vienen de otro sistema: exportas, y entre bloque y bloque aparecen filas completamente en blanco. Si luego quieres alimentar un gráfico, una tabla dinámica o una fórmula de agregación, esas filas molestan. Óscar planteó exactamente ese problema en la comunidad, y la solución salió en dos pasos entre varios miembros.

La dirección correcta: FILTRAR

Hugo apuntó lo primero que hay que tener claro: esto no es un trabajo de borrar filas a mano ni de ordenar la tabla para juntar los huecos. Es un trabajo de FILTRAR. La tabla original se queda como está, y en otra zona de la hoja obtienes una copia limpia que se actualiza sola cada vez que llegan datos nuevos.

El único reto es construir el criterio: ¿cómo le digo a FILTRAR que una fila entera tiene algo escrito?

La fórmula completa

Ned desarrolló la solución combinando FILTRAR con BYROW:

=FILTRAR(Tabla1; BYROW(NO(Tabla1 = ""); LAMBDA(r; O(r))))

Vamos por partes, porque cada trozo hace algo muy concreto:

  1. Tabla1 = "" compara cada celda de la tabla con el texto vacío y devuelve una matriz de VERDADERO y FALSO del mismo tamaño que la tabla.
  2. NO(...) invierte esa matriz: ahora hay un VERDADERO en cada celda que sí tiene contenido.
  3. BYROW(...; LAMBDA(r; O(r))) recorre esa matriz fila por fila. O devuelve VERDADERO si al menos una celda de la fila tiene algo. El resultado es un vector con un valor por fila.
  4. FILTRAR recibe ese vector y se queda solo con las filas marcadas como VERDADERO.

El corazón de todo es el paso 3: una fila está en blanco cuando ninguna de sus celdas tiene contenido, así que basta con preguntar si hay alguna. Por eso se usa O y no Y.

La versión compacta con eta-lambda

Ned compartió además una forma más corta de escribir lo mismo:

=FILTRAR(Tabla1; BYROW(NO(Tabla1 = ""); O))

Aquí O se pasa directamente como función, sin envolverla en LAMBDA. Esto se conoce como eta-lambda o eta-reducción, y funciona siempre que la función que quieres aplicar ya acepte los argumentos tal y como se los va a entregar BYROW. Como O admite un array y devuelve un único valor lógico, encaja sin adaptador.

Es un patrón que conviene tener en la cabeza porque se repite mucho: cuando veas LAMBDA(r; FUNCION(r)), casi siempre puedes escribir FUNCION a secas.

Variantes útiles

  • Filas completas, no solo una columna: si el criterio afecta a una sola columna, BYROW sobra; la comparación ya devuelve un vector válido para FILTRAR.
  • Quedarte con las filas totalmente rellenas: cambia O por Y y solo pasarán las filas sin ningún hueco.
  • Ignorar espacios sueltos: si las celdas "vacías" contienen espacios, envuelve la tabla en ESPACIOS antes de comparar, o el criterio las dará por rellenas.
  • Evitar el error de resultado vacío: FILTRAR admite un tercer argumento con el valor a devolver cuando ninguna fila cumple el criterio; muy recomendable si la tabla puede llegar vacía.

Funciones clave

  • FILTRAR: devuelve las filas que cumplen un criterio; el criterio debe ser un vector de una sola columna con tantas filas como el rango.
  • BYROW: colapsa cada fila de una matriz a un único valor aplicando la función que le indiques.
  • O y Y: agregadores lógicos, "al menos una" y "todas" respectivamente.
  • NO: invierte una matriz de valores lógicos, la forma más limpia de expresar "distinto de vacío".

Conclusión

Con una sola fórmula obtienes una copia siempre limpia de la tabla, sin macros y sin tocar los datos originales. Y de paso se aprende el patrón general: comparar toda la matriz, colapsar por filas con BYROW y dejar que FILTRAR haga el resto. Ese esquema sirve para muchísimo más que eliminar filas en blanco.

Como casi todo lo que se publica aquí, salió de una duda concreta planteada en la comunidad de InflueXcel y de las respuestas de varios miembros afinando la misma idea.

Más casos con estas funciones

Más contenido de Excel en InflueXcel