Repetir un rango N veces según marca con MAP y CONTAR.SI

Un usuario necesita repetir un listado de locales (D2:D10) un número variable de veces para cada marca de la columna B. El número de repeticiones se obtiene de una tabla auxiliar con BUSCARV. La fórmula manual con APILARV no escala cuando hay muchas marcas.

Leo construye una solución ingeniosa con MAP + CONTAR.SI + INDICE:

``
=LET(
m; A2:A169;
i; MAP(m; LAMBDA(a;
ENTERO((CONTAR.SI(INDICE(m;1):a; a)-1) / BUSCARV(a; 'maestro marcas recuento'!A:E; 5; 0)) + 1
));
r; 'maestro a repetir'!A2:A10;
INDICE(r; i)
)
`

La clave está en el CONTAR.SI(INDICE(m;1):a; a): cuenta cuántas veces ha aparecido la marca actual desde el inicio hasta la celda actual (un acumulador progresivo). Al dividir entre el número de repeticiones y tomar la parte entera, se obtiene un índice cíclico que recorre el listado de locales.

Para quienes trabajan con tablas de Excel (formato tabla) y prefieren arrastrar la fórmula celda a celda, Leo aporta una versión sin desbordamiento:

`
=LET(
i; ENTERO((CONTAR.SI($A$2:A2; A2)-1) / BUSCARV(A2; 'maestro marcas recuento'!$A:$E; 5; 0)) + 1;
r; 'maestro a repetir'!$A$2:$A$10;
INDICE(r; i)
)
`

Leo también menciona que con la función TRIMRANGE` (disponible en Insider) se podría hacer de forma más elegante referenciando toda la columna.

Más contenido de Excel en InflueXcel