Filtrar columnas que contienen negativos con BYCOL y N()
Juan plantea cómo detectar valores negativos en una matriz numérica. Conoce HALLAR para buscar texto, pero no encuentra el equivalente para números. Leo aclara que para números no se necesita HALLAR — basta con una comparación directa:
``
=N(K11:L15<0)
`
N() convierte los booleanos (VERDADERO/FALSO) a números (1/0), generando una matriz espejo donde los 1 indican negativos.
El problema se amplía: Juan necesita filtrar solo las columnas que contienen al menos un valor negativo. Leo lo resuelve combinando BYCOL con FILTRAR:
`
=FILTRAR(C4:J20; BYCOL(N(C4:J20<0); SUMA))
`
BYCOL(N(C4:J20<0); SUMA) recorre cada columna y suma los indicadores de negativos. Si la suma es mayor que 0, esa columna tiene al menos un negativo y FILTRAR la incluye en el resultado.
Antonio aporta un enfoque alternativo usando HALLAR para detectar el signo menos como carácter:
`
=SI.ERROR(HALLAR("-"; F2:F5; 1); 0)
`
Esta técnica funciona porque HALLAR busca el guion "-" en la representación textual del número, pero es menos robusta que la comparación directa <0`, que funciona independientemente del formato de la celda.
Juan llegó a la comunidad con una pregunta que parece de principiante y no lo es: sabe que HALLAR sirve para buscar un texto dentro de otro, pero no encuentra la función equivalente para buscar números. En concreto quería localizar los valores negativos de una matriz. La respuesta de Leo fue directa: para números no necesitas ninguna función de búsqueda, basta con una comparación.
Marcar los negativos: una comparación y nada más
=N(0 > K11:L15)Esa fórmula devuelve una matriz del mismo tamaño que el rango, con un 1 en cada posición donde el valor es negativo y un 0 en el resto. Vamos por partes:
0 > K11:L15compara el cero contra cada celda del rango y produce una matriz de VERDADERO y FALSO. Escrito así, se lee como "el cero es mayor que la celda", que es exactamente lo mismo que decir que la celda es negativa.N()convierte esos valores lógicos en números: VERDADERO pasa a 1 y FALSO a 0.
Ese paso por N() es lo que hace la matriz útil. Mientras sean VERDADERO y FALSO puedes filtrar con ella, pero en cuanto la conviertes a unos y ceros puedes sumarla, contarla y agregarla como cualquier otro rango numérico. Es el mismo truco que hay detrás de casi todas las fórmulas matriciales de conteo.
El problema real: filtrar columnas enteras
La duda de Juan creció enseguida: no le bastaba con saber dónde están los negativos, quería quedarse solo con las columnas que contienen al menos uno. Leo lo resolvió combinando BYCOL con FILTRAR:
=FILTRAR(C4:J20; BYCOL(N(0 > C4:J20); SUMA))La lógica encaja pieza a pieza:
N(0 > C4:J20)genera la matriz espejo de unos y ceros.BYCOL(...; SUMA)recorre columna por columna y suma sus indicadores. El resultado es un vector horizontal con un número por columna: cuántos negativos tiene cada una.FILTRARrecibe ese vector como criterio. Aquí ocurre algo que conviene entender:FILTRARinterpreta cualquier valor distinto de cero como VERDADERO, así que las columnas con al menos un negativo pasan el filtro y las que suman cero se descartan. No hace falta añadir ninguna comparación extra.
Fíjate en el detalle de orientación: como estamos filtrando columnas y no filas, el criterio tiene que ser un vector horizontal, y por eso se usa BYCOL y no BYROW.
El enfoque alternativo de Antonio
Antonio propuso otra vía, buscando el signo menos como si fuera un carácter de texto:
=SI.ERROR(HALLAR("-"; F2:F5; 1); 0)Es ingeniosa y en muchos casos funciona, pero conviene conocer sus límites. HALLAR trabaja sobre la representación textual del número, así que depende de cómo esté formateada la celda: si los negativos se muestran entre paréntesis o en rojo sin signo, la búsqueda no los encuentra. También puede dar falsos positivos si el valor contiene un guion por otro motivo, por ejemplo en códigos o referencias mezcladas con números.
La comparación numérica directa no tiene ninguno de esos problemas: mira el valor, no su aspecto. Por eso es la opción recomendable salvo que estés trabajando explícitamente con textos.
Funciones clave
N: convierte valores lógicos en 1 y 0, y deja los números tal cual. Es el puente entre "condición cumplida" y "número que puedo sumar".BYCOL: aplica una función a cada columna de una matriz y devuelve un vector horizontal con un resultado por columna.SUMA: aquí se pasa directamente como función, sin envolverla enLAMBDA(la llamada eta-lambda).FILTRAR: se queda con las columnas cuyo criterio sea distinto de cero.HALLAR: busca texto dentro de texto; útil, pero sensible al formato cuando lo aplicas a números.
Conclusión
La pregunta de partida —"¿cuál es el HALLAR de los números?"— tenía trampa: no existe porque no hace falta. En Excel, una comparación entre un valor y un rango ya devuelve toda la información, y N() la convierte en algo con lo que puedes agregar. A partir de ahí, elegir entre BYROW y BYCOL es solo cuestión de si quieres resumir filas o columnas.
Estas conversaciones son el pan de cada día en la comunidad de InflueXcel: alguien pregunta por una función concreta y acaba llevándose un patrón que le sirve para media docena de problemas distintos.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- Filtrar datos por código parcial y crear listas desplegables dependientes CasoRosario pone en práctica las enseñanzas de la comunidad pero se queda atascada: tiene una tabla con códigos jerárquicos (1.01, 1.02, 2.01, 2
- Buscar múltiples palabras simultáneamente con FILTRAR y BYROW CasoJuan consigue filtrar una tabla buscando una palabra con HALLAR, pero cuando intenta buscar dos palabras a la vez pasando un rango (K16:L16)
- Sustituir SUMAR.SI.CONJUNTO lento por MMULT y BYCOL en análisis de inventario CasoUn miembro desde Ecuador tiene un modelo de inventario con SUMAR.SI.CONJUNTO dentro de una fórmula LET con ELEGIRCOLS y FILTRAR. El problema
- SI.ERROR falla con textos de más de 255 caracteres: alternativa con ESERROR CasoUn caso que pilló desprevenida a la comunidad: al usar FILTRAR sobre una columna que contiene textos largos (más de 255 caracteres), las fil
- Filtro multicriteria dinámico con LET, FILTRAR y LAMBDA CasoHéctor comparte con la comunidad una fórmula avanzada para filtrar una tabla de productos/servicios por múltiples criterios opcionales (clav
- FILTRAR con ELEGIR y BUSCARX para consultas cruzadas entre tablas CasoInteresante problema planteado por Héctor sobre cómo construir una consulta dinámica que combine columnas de una tabla con datos cruzados de
- FILTRAR en Excel: las 5 dudas más buscadas, resueltas (y una extra: filtrar entre fechas) TutorialLe preguntamos a Copilot cuáles son las 5 dudas que más se buscan sobre FILTRAR y las resolvemos una a una en Excel, cada una con un truco e
- Filtrar una tabla por una lista de valores: una LAMBDA propia y su inversa TutorialTe pasan una lista de 30 números de albarán y hay que sacar esas filas de una tabla de miles. Con el autofiltro es marcar casillas una a una
- Gráficos que se actualizan solos en Excel: orden, etiquetas condicionales y rangos dinámicos TutorialTres problemas que aparecen en cuanto un gráfico deja de leer una tabla fija y pasa a leer el resultado de un cálculo. Salieron montando el
- Casillas de verificación en Excel: tres formas de sacarles partido TutorialLas casillas de verificación nativas llegaron a Excel 365 en julio de 2024, tras meses en pruebas. No son el control de formulario de toda l