Cuando BYROW sobra: FILTRAR por una sola columna

Nuevo reto de Excel resuelto por la comunidad con un apunte que muchos usuarios agradecen. Óscar comparte que ha conseguido filtrar una tabla usando FILTRAR combinado con BYROW, evaluando si la columna "Descripcion" no está vacía:

``
=FILTRAR(
Tbl_Equipo_Infraestructura;
BYROW(Tbl_Equipo_Infraestructura[Descripcion] <> ""; O)
)
`

Un miembro de la comunidad le señala que, al filtrar por una única columna, BYROW es innecesario. La comparación Tbl_Equipo_Infraestructura[Descripcion] <> "" ya devuelve un array vertical de TRUE/FALSE que FILTRAR acepta directamente:

`
=FILTRAR(
Tbl_Equipo_Infraestructura;
Tbl_Equipo_Infraestructura[Descripcion] <> ""
)
`

BYROW tiene sentido cuando necesitas evaluar múltiples columnas por fila (por ejemplo, comprobar si al menos una celda de la fila cumple una condición). Pero cuando el criterio afecta a una sola columna, la condición ya produce un vector compatible y el BYROW` solo añade complejidad sin beneficio. Una optimización sencilla pero que mejora la legibilidad y el rendimiento de la fórmula.

Hay optimizaciones que no hacen la fórmula más potente, solo más honesta. Esta es una de ellas: Óscar compartió en la comunidad una fórmula que le funcionaba perfectamente para filtrar una tabla, y otro miembro le señaló que sobraba una función entera. El resultado es el mismo, pero se entiende mejor y calcula menos.

El punto de partida

Óscar necesitaba quedarse solo con las filas de una tabla cuya columna Descripcion tuviera contenido. Su solución combinaba FILTRAR con BYROW:

=FILTRAR(
  Tbl_Equipo_Infraestructura;
  BYROW(NO(Tbl_Equipo_Infraestructura[Descripcion] = ""); O)
)

Funciona. La comparación marca cada celda con contenido, BYROW recorre fila por fila aplicando O, y FILTRAR se queda con las que dan VERDADERO.

Por qué BYROW no hace falta aquí

La clave está en la forma del resultado intermedio. Cuando comparas una única columna con el texto vacío, lo que obtienes ya es un vector vertical de VERDADERO y FALSO, con exactamente una posición por fila de la tabla. Y eso es justo lo que FILTRAR espera como segundo argumento.

Es decir, BYROW está recibiendo un vector de una sola columna, recorriéndolo fila a fila, aplicando O a un único valor por fila y devolviendo... el mismo vector con el que empezó. Un rodeo perfectamente inofensivo, pero un rodeo al fin y al cabo.

La versión limpia:

=FILTRAR(
  Tbl_Equipo_Infraestructura;
  NO(Tbl_Equipo_Infraestructura[Descripcion] = "")
)

Misma tabla filtrada, una función menos y una fórmula que se lee de un tirón.

Entonces, ¿cuándo sí necesitas BYROW?

BYROW gana su sueldo cuando el criterio abarca varias columnas y tienes que colapsar cada fila a un único valor lógico. Casos típicos:

  • Quedarte con las filas en las que al menos una celda tiene contenido: ahí la comparación produce una matriz de varias columnas, y BYROW(...; O) la reduce a un vector.
  • Quedarte con las filas en las que todas las celdas cumplen la condición: mismo esquema, pero aplicando Y en lugar de O.
  • Aplicar una LAMBDA propia por fila, por ejemplo para sumar solo algunas columnas y comparar el total contra un umbral.

La regla mental es sencilla: si tu criterio ya devuelve una sola columna, FILTRAR lo acepta tal cual. Si devuelve varias, necesitas reducirlo con BYROW.

Qué ganas al quitarlo

  • Legibilidad: quien lea la fórmula dentro de seis meses verá el criterio directamente, sin tener que descifrar qué hace la función envolvente.
  • Rendimiento: BYROW lanza una llamada por fila. En una tabla pequeña no se nota, pero en decenas de miles de filas estás pagando miles de llamadas para no cambiar nada.
  • Menos superficie de error: cada función que quitas es una menos que puede fallar al cambiar el rango o al copiar la fórmula a otra hoja.

Funciones clave

  • FILTRAR: devuelve las filas de un rango que cumplen un criterio. El criterio debe tener el mismo número de filas que el rango filtrado y una sola columna.
  • BYROW: aplica una función a cada fila de una matriz y devuelve un vector con un resultado por fila. Su utilidad real aparece con criterios de varias columnas.
  • O y Y: agregadores lógicos que suelen acompañar a BYROW para pedir "al menos una" o "todas".
  • NO: invierte una matriz lógica; es la forma más legible de expresar "distinto de vacío".

Conclusión

No todas las mejoras consisten en añadir funciones más modernas. A veces la mejor versión de una fórmula es la misma con una capa menos, y detectar esa capa sobrante exige entender qué forma tiene cada resultado intermedio: una columna, una matriz, un valor suelto.

Este tipo de repaso entre compañeros es lo que más se ve en la comunidad de InflueXcel: alguien comparte una fórmula que ya le funciona, y sale una versión más simple que además explica el porqué.

Más casos con estas funciones

Más contenido de Excel en InflueXcel