Repetir una matriz N veces por filas: 4 enfoques comparados
Un miembro de la comunidad lanza una pregunta aparentemente simple: ¿cómo repetir una matriz N veces por filas? La pregunta desata una sesión de casi 3 horas con 4 enfoques distintos y una explicación magistral de Leo sobre cómo funciona REDUCE internamente.
Nacho responde primero con un enfoque basado en LAMBDA que concatena y separa:
``
=LAMBDA(_rango;_reps;
TEXTOANTES(
ENCOL(_rango & "|" & SECUENCIA(;_reps);; VERDADERO);
"|"
)
)
`
El truco: al concatenar cada valor con "|" y una SECUENCIA horizontal, se generan N copias de cada elemento. ENCOL los aplana y TEXTOANTES elimina el separador auxiliar.
John propone dos soluciones progresivas. Para repetir una sola fila, una elegancia en miniatura:
`
=SI(SECUENCIA(5); R7:T7)
`
SECUENCIA(5) genera 5 filas de TRUE, y SI(TRUE; fila) repite la fila en cada una. Para matrices completas (varias filas y columnas), la solución definitiva con ELEGIRFILAS:
`
=LET(
r; B3:F5;
f; FILAS(r);
ELEGIRFILAS(r; 1 + RESIDUO(SECUENCIA(5f) - 1; f))
)
`
SECUENCIA(5f) genera índices del 1 al 15 (5 repeticiones × 3 filas), RESIDUO(...;f) los cicla de 0 a 2, y 1+ los convierte en índices válidos para ELEGIRFILAS. Resultado: la matriz original repetida 5 veces. Sin bucles, sin acumuladores, rendimiento constante.
Leo muestra el enfoque clásico con REDUCE+APILARV:
`
=LET(
m; B2:F5;
n; 3;
EXCLUIR(
REDUCE(""; SECUENCIA(n); LAMBDA(a;b; APILARV(a; m)));
1
)
)
`
Pero añade una advertencia importante: se desaconseja usar REDUCE+APILAR para un número grande de repeticiones, ya que el acumulador crece en cada paso y el rendimiento se degrada. La fórmula de John con ELEGIRFILAS es más óptima.
Leo aprovecha para explicar en detalle el funcionamiento interno de REDUCE: el parámetro a (acumulador) arranca con el valor inicial (""), en cada iteración b toma el siguiente valor de la secuencia, y el resultado del LAMBDA reemplaza al acumulador. Al final, EXCLUIR(...;1) elimina la primera fila vacía del valor inicial. "El funcionamiento es muy parecido al bucle FOR TO NEXT", explica.
John remata con una variante que genera encabezados dinámicos automáticamente:
`
=LET(
m; B2:F5;
n; 3;
REDUCE(
"Columna" & SECUENCIA(;COLUMNAS(m));
SECUENCIA(n);
LAMBDA(a;b; APILARV(a; m))
)
)
`
Aquí el valor inicial del REDUCE no es vacío sino una fila de encabezados generados con "Columna" & SECUENCIA(;COLUMNAS(m))`, que produce "Columna1", "Columna2", etc.
Un hilo que empieza con una pregunta sencilla y acaba siendo una clase magistral sobre rendimiento de fórmulas matriciales.
Más contenido de Excel en InflueXcel
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calcul
- Nueva Función IMPORTTEXT TutorialNueva función IMPORTTEXT en Excel!! https://techcommunity.microsoft.com/blog/microsoft365insiderblog/bring-data-into-excel-with-the-new-impo
- ¿Columnas con nombres distintos en Power Query? Tutorial¿Columnas con nombres distintos en Power Query? Aquí tienes la solución definitiva para normalizar tus datos y evitar errores al combinar fi
- BUSCARX con valor devuelto dinámico: elige la columna con un botón o un segmentador CasoUna integrante de la comunidad planteó un reto muy habitual al trabajar con tablas de varias columnas: tiene una lista de municipios con cua
- Saldo acumulado por mes: tres enfoques (REDUCE+BYROW, PIVOTARPOR+acumulado, MMULT) CasoJuan plantea una pregunta que parece sencilla y se acaba convirtiendo en tres clases magistrales sobre cómo recorrer una matriz mes a mes. T
- Mapa de España con burbujas: ubicar variables por provincia usando coordenadas X/Y CasoEsta semana surgió una duda muy visual en el grupo: cómo mostrar dos variables por provincia en un mapa de España — una pintada en intensida
- Regularización trimestral con AGRUPARPOR y ARCHIVOMAKEARRAY: del caos a una fórmula CasoCaso fresquito de la comunidad. Juan plantea un problema contable: tiene una tabla de movimientos (Nombre, Cuenta, Importe, Fecha) y necesit
- Grado de avance por proyecto: despivotar y volver a pivotar por fecha CasoNuevo caso de la comunidad con mucho jugo para los que trabajan con reporting de proyectos. Juan plantea un problema habitual en oficinas té