IMPORTTEXT: importar múltiples CSV con LAMBDA recursiva y exploración profunda
Caso doble que combina la resolución de un problema práctico con una exploración exhaustiva de las nuevas funciones IMPORTTEXT e IMPORTCSV de Excel 365.
La comunidad se enfrenta a un problema real: importar y consolidar múltiples archivos CSV con una sola fórmula. El enfoque natural sería usar REDUCE con SECUENCIA para iterar sobre los archivos:
``
=REDUCE("";
SECUENCIA(5);
LAMBDA(_a;_i;
APILARV(_a; IMPORTTEXT("ruta\datos"&_i&".csv";""))
)
)
`
Sin embargo, IMPORTTEXT se "atasca" dentro de REDUCE y SCAN. Nacho descubre que la solución es usar bisección recursiva — una LAMBDA que se llama a sí misma dividiendo el problema a la mitad:
`
=LET(
F; LAMBDA(F;x;
LET(
n; FILAS(x);
SI(n = 1;
IMPORTTEXT("C:\datos\datos" & n & ".csv";";";;;1252);
APILARV(F(F; TOMAR(x; n/2)); F(F; EXCLUIR(x; n/2)))
)
)
);
F(F; SECUENCIA(5))
)
`
John logra hacerlo con REDUCE usando un "empaquetado" con LAMBDA(x;LAMBDA(x)) (thunking) para diferir la evaluación:
`
=LET(
th; LAMBDA(x;LAMBDA(x));
f; MAP(B2:B3; LAMBDA(x; th(IMPORTTEXT(x;;1;;;"en-us"))));
EXCLUIR(REDUCE(0;{1;2}; LAMBDA(a;v; APILARV(a; INDICE(f;v;1)())); 1)
)
`
Por otro lado, Andrés Rojas Moncada realiza una investigación minuciosa sobre el comportamiento interno de IMPORTCSV e IMPORTTEXT: cómo funciona el delimitador por posiciones numéricas, la precedencia entre omitir_filas y tomar_filas que emula EXCLUIR + TOMAR, y las configuraciones regionales disponibles. Descubre que solo 3 de todas las configuraciones regionales de Windows no usan la coma como delimitador por defecto.
Sergio Alejandro Campos (experto de Excel) aporta que incluso se puede combinar con COPILOT:
`
=COPILOT("Dame indicadores"; IMPORTCSV("ruta\archivo.csv"))
`
Aviso (agosto de 2026): Microsoft ha anunciado la retirada de la función COPILOT de Excel, así que esta última combinación con IMPORTCSV deja de ser una vía sobre la que construir a futuro. El resto del caso no se ve afectado: IMPORTTEXT, IMPORTCSV`, la bisección recursiva y el thunking siguen siendo válidos.
El archivo adjunto incluye un ejemplo práctico con un archivo .txt de prueba (datos con separadores |, ; y ,) y la hoja Excel con las fórmulas de importación y una tabla completa de configuraciones regionales.
El problema: importar y consolidar varios CSV con una sola fórmula
Excel 365 estrenó IMPORTTEXT e IMPORTCSV, funciones que leen un archivo de texto directamente desde una fórmula, sin Power Query. La comunidad se planteó el reto natural: importar varios CSV de golpe y apilarlos en una única tabla, todo con fórmulas.
El enfoque intuitivo es iterar con REDUCE sobre una secuencia de números de archivo:
=REDUCE("";
SECUENCIA(5);
LAMBDA(_a;_i;
APILARV(_a; IMPORTTEXT(Ruta&_i&".csv";""))
)
)donde Ruta es la ruta de la carpeta más el prefijo del nombre. El problema: IMPORTTEXT se "atasca" dentro de REDUCE y SCAN. Estas funciones de importación no se comportan bien cuando se las evalúa repetidamente dentro de una iteradora, y el resultado no es el esperado.
Solución 1: bisección recursiva (Nacho)
Nacho descubrió que la salida es una LAMBDA que se llama a sí misma dividiendo el problema por la mitad, en lugar de recorrerlo linealmente:
=LET(
F; LAMBDA(F;x;
LET(
n; FILAS(x);
SI(n = 1;
IMPORTTEXT(Ruta & n & ".csv"; ";";;;1252);
APILARV(F(F; TOMAR(x; n/2)); F(F; EXCLUIR(x; n/2)))
)
)
);
F(F; SECUENCIA(5))
)La idea: si el bloque de archivos tiene una sola fila (n = 1), importa ese archivo; si tiene más, se parte en dos mitades con TOMAR y EXCLUIR, y cada mitad se resuelve por recursión. Al reducir el problema por bisección, IMPORTTEXT se llama de forma "limpia" en las hojas del árbol y ya no se atasca. El último parámetro (1252) es la página de códigos regional.
Solución 2: thunking con REDUCE (John)
John consiguió que REDUCE funcionara usando una técnica llamada thunking: envolver cada importación en LAMBDA(x;LAMBDA(x)) para diferir su evaluación hasta el momento justo.
=LET(
th; LAMBDA(x;LAMBDA(x));
f; MAP(B2:B3; LAMBDA(x; th(IMPORTTEXT(x;;1;;;"en-us"))));
EXCLUIR(REDUCE(0;{1;2}; LAMBDA(a;v; APILARV(a; INDICE(f;v;1)()))); 1)
)Cada celda de f no contiene el CSV ya leído, sino una promesa de leerlo (el thunk). REDUCE las va invocando una a una con INDICE(f;v;1)(), y el paréntesis final "despierta" el thunk en ese instante. Así se sortea el atasco sin recursión.
La investigación de Andrés: cómo funciona IMPORTCSV por dentro
Andrés Rojas hizo una exploración minuciosa del comportamiento interno de ambas funciones: cómo se indica el delimitador por posiciones numéricas, cómo la precedencia entre "omitir filas" y "tomar filas" emula un EXCLUIR + TOMAR, y qué configuraciones regionales hay disponibles. Un hallazgo curioso: de todas las configuraciones regionales de Windows, solo tres no usan la coma como delimitador por defecto.
Bonus: combinar con COPILOT
Sergio Alejandro Campos apuntó que la importación se puede encadenar con la nueva función COPILOT para analizar los datos recién leídos en la misma fórmula:
=COPILOT("Dame indicadores"; IMPORTCSV(RutaArchivo))Funciones clave
IMPORTTEXT/IMPORTCSV: leen un archivo de texto o CSV desde una fórmula, con control de delimitador y región.LAMBDArecursiva: la bisección que evita el atasco dentro de las iteradoras.- Thunking (
LAMBDA(x;LAMBDA(x))): difiere la evaluación para queREDUCEfuncione. APILARV/TOMAR/EXCLUIR: apilan y parten los bloques de archivos.
Conclusión
Las funciones de importación de Excel 365 son potentísimas, pero tienen truco cuando quieres iterarlas: no encajan bien en REDUCE o SCAN a las bravas. Las dos vías que funcionan —bisección recursiva o thunking— son patrones avanzados que merece la pena tener en el bolsillo. Exploraciones así, que llegan hasta el detalle de las páginas de códigos regionales, son marca de la casa en la comunidad de InflueXcel.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- Repetir valores N veces: tres enfoques con REDUCE, SCAN y ARCHIVOMAKEARRAY CasoJoan Recasens plantea un problema clásico: tiene una lista de categorías (A, B, C) con el número de repeticiones de cada una (4, 2, 3) y qui
- Error #CALC! con MAP y AGRUPARPOR: solución con REDUCE+APILARV CasoNuevo reto de Excel resuelto por la comunidad: un usuario necesita aplicar AGRUPARPOR de forma iterativa sobre un rango de códigos de cuenta
- Cálculos iterativos con REDUCE y APILARV en Excel CasoLa comunidad aborda un caso sobre cómo trabajar con bucles iterativos en Excel usando funciones modernas. Un miembro necesita realizar cálcu
- Media móvil dinámica: 6 enfoques con SCAN, MMULT y MAP CasoUn miembro de la comunidad tiene un rango con ventas mensuales y necesita generar una columna con la media móvil de los últimos 3 meses usan
- Descomposición de Cholesky con matrices dinámicas: de VBA a LAMBDA+REDUCE CasoJuan Pablo lanza un reto al grupo: tiene una descomposición de Cholesky resuelta con VBA y quiere saber si se puede hacer con matrices dinám
- Distribución equitativa con LAMBDA, REDUCE y ALEATORIO CasoHéctor plantea la necesidad de repartir un conjunto de líneas (tareas, actividades) entre varios grupos de forma equitativa y aleatoria. Ide
- Funciones personalizadas en Excel: LET, LAMBDA y recursividad TutorialCómo pasar de una fórmula escrita a mano a una función propia que puedes llamar por su nombre en cualquier libro. Los tres vídeos de esta pá
- Interactive Canvas en Excel: dashboards interactivos con Copilot (Gantt, Sankey y más) TutorialInteractive Canvas es la nueva función de Copilot en Excel que crea dashboards interactivos dentro de tu libro con una sola frase: desde una
- Detectar qué celdas dependen de otras hojas o ficheros con formato condicional TutorialTe pasan un fichero que no has hecho tú y la primera pregunta siempre es la misma: ¿de dónde salen estos números? Algunos están escritos a m
- 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