SI.ERROR falla con textos de más de 255 caracteres: alternativa con ESERROR

Un caso que pilló desprevenida a la comunidad: al usar FILTRAR sobre una columna que contiene textos largos (más de 255 caracteres), las filas con esos textos desaparecían del resultado. Después de investigar, Leo diagnostica el problema real: no es FILTRAR quien falla, sino SI.ERROR.

Resulta que SI.ERROR, cuando envuelve una matriz (y un FILTRAR lo es), trata como error cualquier cadena de 256 caracteres o más. Si envuelves tu FILTRAR con SI.ERROR (algo habitual para capturar el caso de "sin resultados"), las celdas con textos largos se consideran errores y se reemplazan por el valor alternativo. Con una celda suelta no pasa, y por eso cuesta creérselo al probarlo. Con SI.ND, en vez de desaparecer, dan #¡VALOR!.

La solución: usar ESERROR en lugar de SI.ERROR:

``
=LET(
m; ELEGIRCOLS(
FILTRAR(rango; condición);
columnas_deseadas
);
SI(O(ESERROR(m)); "REVISAR HOJA DATOS"; m)
)
`

La diferencia es sutil pero importante: SI.ERROR(expr; alt) evalúa expr y, si es una matriz, trata los textos largos como error. En cambio, ESERROR(m) pregunta elemento a elemento si hay errores reales en la matriz, sin esa limitación; O junta las respuestas, y solo si alguna es VERDADERO se aplica el texto alternativo.

Leo recomienda como regla general: evitar SI.ERROR cuando se trabaja con columnas de texto libre que puedan superar los 255 caracteres. Usar ESERROR + SI es más robusto aunque requiera una línea más.

Nota (corregido el 26/9/2026): en el hilo la fórmula salió como SI(ESERROR(O(m)); ...), con el orden al revés. Así no sirve: O no admite texto dentro de una matriz, da error, y el aviso sale en cuanto hay un solo texto en los datos. El orden bueno es O(ESERROR(m))`, comprobado en Excel.

Filas que desaparecen sin motivo aparente

Este es de los casos que pillan desprevenido a cualquiera. Un miembro de la comunidad estaba usando FILTRAR sobre una tabla que incluía una columna de texto libre —comentarios, descripciones largas— y detectó algo inquietante: algunas filas simplemente no aparecían en el resultado.

No eran filas que incumplieran la condición. Cumplían el criterio perfectamente, pero se esfumaban. Y todas tenían algo en común: su texto era muy largo.

El diagnóstico: la culpa no era de FILTRAR

Tras investigarlo, Leo dio con el culpable, y no era el sospechoso habitual. FILTRAR funcionaba bien. El que fallaba era SI.ERROR.

Resulta que SI.ERROR trata cualquier cadena de más de 255 caracteres como si fuera un error. Es un límite heredado de versiones antiguas de Excel que sigue vivo en la función.

Y aquí es donde se cierra la trampa. Envolver un FILTRAR en SI.ERROR es lo más normal del mundo: se hace para capturar el caso de "no hay resultados" y mostrar un mensaje decente en lugar de #CALC!. Pero al hacerlo, todas las celdas con textos largos se consideran erróneamente errores y se sustituyen por el valor alternativo.

El resultado es un fallo especialmente traicionero: no da error, no avisa de nada, y silenciosamente devuelve datos incompletos. Puedes tardar semanas en darte cuenta.

La solución: ESERROR en lugar de SI.ERROR

El arreglo pasa por separar las dos cosas que SI.ERROR hace de golpe: comprobar si hay error y devolver una alternativa. Usando ESERROR dentro de un SI, el control es explícito:

=LET(
    m; ELEGIRCOLS(
        FILTRAR(rango; condicion);
        columnas_deseadas
    );
    SI(ESERROR(O(m)); "REVISAR HOJA DATOS"; m)
)

La diferencia es sutil pero decisiva:

  • SI.ERROR(expresion; alternativa) evalúa la expresión y, si detecta error, devuelve la alternativa. Internamente marca como error cualquier texto de más de 255 caracteres.
  • ESERROR(O(m)) comprueba si hay errores reales en la matriz, sin esa limitación de longitud. Solo entonces se aplica el texto alternativo.

El O que envuelve la matriz merece una nota. Su papel aquí no es lógico sino estructural: colapsa la matriz entera a un único valor, de modo que ESERROR pueda evaluarla de una vez en lugar de elemento a elemento. Si FILTRAR no encuentra nada y devuelve #CALC!, ese error se propaga y ESERROR lo detecta.

El LET cumple su función de siempre: calcular la matriz una sola vez y reutilizarla tanto en la comprobación como en el resultado. Sin él habría que escribir el FILTRAR dos veces, con el doble de coste de cálculo.

La regla práctica

Leo la resumió así, y merece la pena grabársela: evita SI.ERROR cuando trabajes con columnas de texto libre que puedan superar los 255 caracteres.

Es decir, en la práctica:

  • Columnas de importes, fechas, códigos o categorías: SI.ERROR es perfecto. Corto, legible y sin sorpresas.
  • Columnas de comentarios, observaciones, descripciones de producto o cualquier campo donde alguien pueda escribir un párrafo: usa SI con ESERROR.

Cuesta una línea más y te ahorra un fallo silencioso que es dificilísimo de localizar, porque el síntoma (faltan filas) no apunta en absoluto hacia la causa (la función que captura errores).

Funciones clave

  • SI.ERROR — captura errores y devuelve una alternativa. Cómoda, pero considera error cualquier texto de más de 255 caracteres.
  • ESERROR — devuelve verdadero si el valor es un error, sin la limitación de longitud. Combinada con SI, es el sustituto robusto.
  • O — colapsa una matriz a un único valor lógico. Aquí sirve para que ESERROR evalúe el conjunto de una vez y capte el error propagado.
  • LET — guarda el resultado del filtro en una variable para no calcularlo dos veces.
  • ELEGIRCOLS — selecciona las columnas que interesan del resultado filtrado.

Conclusión

Lo valioso de este caso no es la fórmula, sino el proceso de diagnóstico. El síntoma señalaba a FILTRAR, que era justo la función inocente. La culpable era la que se había puesto ahí para protegerse de los errores.

Es un buen recordatorio de que las funciones defensivas también tienen su letra pequeña. Envolver algo en SI.ERROR parece gratis y no siempre lo es.

Casos como este son de los que más se agradecen en la comunidad de InflueXcel: alguien pierde una tarde persiguiendo un comportamiento raro, lo comparte, y a partir de ahí nadie más vuelve a caer.

Más casos con estas funciones

Más contenido de Excel en InflueXcel