Aplicar DIVIDIRTEXTO a una matriz dinámica completa

Un miembro de la comunidad tiene una columna dinámica generada con UNICOS (600 filas) y necesita dividir cada celda por un separador "/". El problema: DIVIDIRTEXTO aplicado con el operador # solo procesa la primera celda.

La comunidad propone tres enfoques con niveles de complejidad creciente:

Con SECUENCIA + TEXTOANTES + TEXTODESPUES (Leo): recorre las N partes del texto usando SECUENCIA como índice de posición. Funciona cuando sabes cuántas columnas tendrá el resultado:

``
=LET(
i; E3#;
d; "/";
s; SECUENCIA(; 3);
TEXTODESPUES(d&TEXTOANTES(i&d; d; s); d; s)
)
`

Con MATRIZATEXTO + DIVIDIRTEXTO (Alejandro): la solución más corta. Convierte toda la matriz a un solo texto y luego divide:

`
=DIVIDIRTEXTO(MATRIZATEXTO(E3#); "/"; ";")
`

Leo advierte que esta solución tiene un límite: si LARGO(CONCAT(E3#)) supera 32.767 caracteres (probable con 600 filas), la fórmula falla.

Con LAMBDA recursiva y bisección (Leo): la solución definitiva para cualquier número de filas. Divide la matriz en mitades recursivamente, aplica DIVIDIRTEXTO a cada celda individual, y las apila con APILARV:

`
=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; E3#); "")
)
``

La técnica de bisección divide el array por la mitad en cada llamada recursiva, lo que mantiene la profundidad de recursión en O(log n) en lugar de O(n). Con 600 filas, solo necesita ~10 niveles de recursión en vez de 600.

Más contenido de Excel en InflueXcel