Apilar pares de columnas dinámicamente: 5 enfoques

Hugo tiene un rango con pares de columnas (A-B, C-D, E-F, G-H, I-J) y necesita apilarlos todos en una matriz de 2 columnas. La solución manual con APILARV(A2:B6;C2:D6;E2:F6;...) funciona, pero se complica cuando el rango es grande.

Leo aporta hasta 5 soluciones distintas, de menor a mayor complejidad:

1. AJUSTARFILAS + ENCOL + ORDENAR (si el orden alfabético es aceptable):

``
=ORDENAR(AJUSTARFILAS(ENCOL(A2:J6);2);1)
`

2. REDUCE + APILARV + ELEGIRCOLS (mantiene el orden original):

`
=LET(
i; A2:J6;
c; COLUMNAS(i);
EXCLUIR(
REDUCE(""; 2SECUENCIA(c/2)-2;
LAMBDA(a;b; APILARV(a; ELEGIRCOLS(i; {1\2}+b)))
);
1
)
)
`

3. TOMAR + EXCLUIR (variante del anterior):

`
=LET(
i; A2:J6;
c; COLUMNAS(i);
EXCLUIR(
REDUCE(""; 2SECUENCIA(c/2)-2;
LAMBDA(a;b; APILARV(a; TOMAR(EXCLUIR(i;;b);;2)))
);
1
)
)
`

4. INDICE + ARCHIVOMAKEARRAY:

`
=LET(
i; A2:J6;
f; FILAS(i);
c; COLUMNAS(i);
ARCHIVOMAKEARRAY(fc/2; 2;
LAMBDA(a;b; INDICE(i; RESIDUO(a-1;f)+1; b+2ENTERO((a-1)/f)))
)
)
`

5. INDICE + SECUENCIA (la más compacta):

`
=LET(
i; A2:J6;
f; FILAS(i);
c; COLUMNAS(i);
s; SECUENCIA(fc/2);
t; {1\2};
INDICE(i; RESIDUO(s-1;f)+1; t+2ENTERO((s-1)/f))
)
`

Todas las fórmulas son dinámicas: si el rango crece, el resultado se adapta automáticamente. La clave de las soluciones más avanzadas es convertir un índice lineal (1, 2, 3...) en coordenadas fila/columna mediante RESIDUO y ENTERO`.

El problema

Hugo tiene un rango con pares de columnas (A-B, C-D, E-F, G-H, I-J) y necesita apilarlos todos en una única matriz de dos columnas. La solución manual con APILARV(A2:B6;C2:D6;E2:F6;...) funciona, pero se vuelve inmanejable en cuanto el rango crece. Leo respondió con nada menos que cinco soluciones, ordenadas de la más sencilla a la más sofisticada.

Enfoque 1: la vía rápida con ENCOL y ORDENAR

Si no te importa que el resultado quede ordenado alfabéticamente, esta es imbatible en brevedad:

`` =ORDENAR(AJUSTARFILAS(ENCOL(A2:J6);2);1) ``

ENCOL apila todo el rango en una columna, AJUSTARFILAS(...;2) lo reorganiza en dos columnas y ORDENAR lo deja presentable. Perfecta para salir del paso.

Enfoque 2: REDUCE + APILARV manteniendo el orden

Cuando el orden original importa, entra REDUCE. La idea es recorrer los pares de columnas de dos en dos e ir apilando cada bloque con APILARV, apoyándose en ELEGIRCOLS para seleccionar cada par. Al final, EXCLUIR(...;1) elimina la fila vacía inicial que arrastra el acumulador. Es el patrón de referencia para apilar bloques de tamaño variable.

Enfoque 3: la variante con TOMAR y EXCLUIR

Una versión del mismo esquema que, en lugar de ELEGIRCOLS, usa TOMAR y EXCLUIR para ir "comiéndose" el rango par a par. Misma filosofía, distinta caja de herramientas.

Enfoques 4 y 5: matemática de índices con ARCHIVOMAKEARRAY e INDICE

Las dos soluciones más avanzadas comparten una idea preciosa: convertir un índice lineal (1, 2, 3...) en coordenadas de fila y columna. Con RESIDUO calculas la fila dentro de cada bloque y con ENTERO saltas de un par de columnas al siguiente; una constante de matriz de dos columnas se encarga de recuperar los dos valores de cada par a la vez. ARCHIVOMAKEARRAY construye la matriz resultado celda a celda, mientras que la versión con INDICE y SECUENCIA logra lo mismo de forma aún más compacta. No hay bucles ni acumuladores: el rendimiento es constante aunque el rango sea enorme.

Funciones clave

  • ENCOL y AJUSTARFILAS: apilar y reorganizar en el número de columnas deseado.
  • REDUCE y APILARV: el patrón clásico para acumular bloques.
  • ELEGIRCOLS, TOMAR y EXCLUIR: seleccionar y recortar rangos.
  • RESIDUO y ENTERO: el corazón de la conversión de índice lineal a coordenadas.
  • INDICE y SECUENCIA: montar la matriz final sin funciones auxiliares.

Conclusión

De una línea casi mágica a la matemática de índices más fina, estas cinco soluciones son una masterclass sobre cómo el Excel moderno permite resolver un mismo reto con niveles de elegancia crecientes. Todas son dinámicas: si el rango crece, el resultado se adapta solo. Y todas salieron de una sola conversación en la comunidad de Influexcel, donde apilar columnas se convierte en una excusa para aprender a pensar en matrices.

Más contenido de Excel en InflueXcel