Aplicar DIVIDIRTEXTO a un rango completo: 5 formas distintas

Un miembro de la comunidad intenta aplicar DIVIDIRTEXTO a un rango completo de celdas en lugar de celda por celda. Su fórmula inicial usa BYROW:

``
=BYROW(B5:B56;LAMBDA(fila;DIVIDIRTEXTO(fila;" ")))
`

El problema es que BYROW no puede devolver más de una celda por fila, así que la fórmula da error #CALC!.

Leo aporta nada menos que 5 enfoques distintos para resolver el problema, cada uno con sus ventajas:

1. DIVIDIRTEXTO + UNIRCADENAS (la más sencilla para pocos datos):

`
=DIVIDIRTEXTO(UNIRCADENAS("|";;B5:B56);" ";"|";;;"")
`

Concatena todo el rango con un separador especial y luego divide de golpe.

2. REDUCE + APILARV (el patrón clásico para apilar resultados de tamaño variable):

`
=SI.ND(
EXCLUIR(
REDUCE("";B5:B56;
LAMBDA(a;x;APILARV(a;DIVIDIRTEXTO(x;" ")))
);1
);"")
`

3. TEXTOANTES + TEXTODESPUES (para muchos datos, usando instancias):

`
=LET(
i; B5:B56;
k; " ";
s; SECUENCIA(;MAX(LARGO(i)-LARGO(SUSTITUIR(i;k;"")))+1);
SI.ERROR(TEXTODESPUES(k&TEXTOANTES(i&k;k;s);k;s);"")
)
`

Evita la recursión y es más eficiente con grandes volúmenes de datos.

4. Recursividad en bisección (enfoque avanzado):

`
=LET(
F; LAMBDA(F;x;LET(
n; FILAS(x);
SI(n=1;
DIVIDIRTEXTO(x;" ");
APILARV(F(F;TOMAR(x;n/2));F(F;EXCLUIR(x;n/2)))
)
));
SI.ND(F(F;B5:B56);"")
)
`

Divide el rango por la mitad recursivamente, lo que mejora el rendimiento en rangos grandes.

5. Recursividad normal (alternativa más directa):

`
=LET(
i; B5:B56;
F; LAMBDA(F;x;n;LET(
y; DIVIDIRTEXTO(INDICE(i;n;);" ");
SI(n<FILAS(i);APILARV(y;F(F;x;n+1));y)
));
SI.ND(F(F;i;1);"")
)
`

Un caso muy completo que ilustra la limitación de BYROW` y varias técnicas para superarla, desde las más sencillas hasta recursividad avanzada con bisección.

El problema

Separar texto con DIVIDIRTEXTO es trivial en una celda. El reto llega cuando quieres aplicarlo a un rango entero de golpe. La tentación es envolverlo en BYROW:

=BYROW(B5:B56;LAMBDA(fila;DIVIDIRTEXTO(fila;" ")))

Pero falla con un error de cálculo, porque BYROW no puede devolver más de una celda por fila y DIVIDIRTEXTO genera varias columnas. Leo respondió con cinco enfoques, de lo más sencillo a lo más avanzado.

Enfoque 1: DIVIDIRTEXTO + UNIRCADENAS

La opción más directa para volúmenes pequeños: concatena todo el rango con un separador especial y divídelo de una sola vez.

=DIVIDIRTEXTO(UNIRCADENAS("|";;B5:B56);"  ";"|";;;"")

UNIRCADENAS une el rango insertando un marcador entre celdas y DIVIDIRTEXTO trocea usando tanto el espacio como ese marcador.

Enfoque 2: REDUCE + APILARV

El patrón de referencia para apilar resultados de tamaño variable:

=SI.ND(
    EXCLUIR(
        REDUCE("";B5:B56;LAMBDA(a;x;APILARV(a;DIVIDIRTEXTO(x;" "))));
        1
    );"")

Recorre las celdas una a una, divide cada texto y va apilando. EXCLUIR(...;1) retira la fila vacía inicial y SI.ND limpia los huecos.

Enfoque 3: TEXTOANTES + TEXTODESPUES

Para muchos datos, este enfoque evita la recursión y gana en velocidad. Cuenta cuántas palabras hay midiendo la diferencia de longitud con LARGO y SUSTITUIR, genera una SECUENCIA de posiciones y extrae cada fragmento con TEXTODESPUES y TEXTOANTES.

=LET(
    i; B5:B56;
    k; " ";
    s; SECUENCIA(;MAX(LARGO(i)-LARGO(SUSTITUIR(i;k;"")))+1);
    SI.ERROR(TEXTODESPUES(k&TEXTOANTES(i&k;k;s);k;s);"")
)

Enfoques 4 y 5: recursividad

Para cerrar, Leo muestra dos versiones recursivas con LAMBDA. La primera usa bisección: parte el rango por la mitad en cada llamada, lo que mejora mucho el rendimiento en rangos grandes. La segunda es una recursión lineal más directa, que procesa fila a fila. Son la artillería pesada, útiles cuando los otros métodos se quedan cortos.

Funciones clave

  • DIVIDIRTEXTO: la protagonista, que trocea texto por uno o varios separadores.
  • UNIRCADENAS: concatena un rango con separadores personalizados.
  • REDUCE y APILARV: acumulan resultados de tamaño variable.
  • TEXTOANTES y TEXTODESPUES: extracción quirúrgica por posición.
  • LAMBDA recursiva: el recurso final para grandes volúmenes.

Conclusión

Un mismo obstáculo —la limitación de BYROW— abordado con cinco técnicas que escalan desde lo trivial hasta la recursión con bisección. Es un ejemplo perfecto de cómo en la comunidad de Influexcel una duda concreta se transforma en un catálogo de patrones reutilizables. La próxima vez que BYROW te devuelva un error de cálculo, ya sabes que tienes al menos cinco salidas.

Más casos con estas funciones

Más contenido de Excel en InflueXcel