Calcular costes por tramos escalonados con SUMAPRODUCTO y REDUCE

Un miembro de la comunidad desde Chile plantea un problema frecuente en facturación y logística: calcular el coste total cuando el precio varía por tramos (las primeras 10.000 unidades a un precio, las siguientes 4.000 a otro, etc.). La dificultad está en que cada tramo tiene un tope y un coste diferente.

Con SUMAPRODUCTO + LET (John): la solución matricial. Usa N(+rango) para coercer los límites de tramo en un array, y SUMAPRODUCTO para calcular el coste acumulado:

``
=LET(
h; N(+B1:B5);
SUMAPRODUCTO(--(F1 > h); F1 - h; C2:C6 - N(+C1:C5))
)
`

Sin LET (compatible con versiones anteriores):

`
=SUMAPRODUCTO(--(F1 > N(+B1:B5)); F1 - N(+B1:B5); C2:C6 - N(+C1:C5))
`

Con REDUCE + LAMBDA (John): enfoque iterativo que recorre cada tramo acumulando el coste con MIN para respetar los topes:

`
=SUMA(
REDUCE(0; B2:B6; LAMBDA(a; v;
APILARV(a; MIN(v; F1) - SUMA(a))
)) * N(+C1:C6)
)
`

John además explica un detalle técnico poco conocido: N(+rango) es necesario porque N(rango) sin el + solo devuelve el primer valor de un rango. El operador + fuerza la evaluación como array, y luego N() convierte el resultado a números.

Hugo conecta el problema con BUSCARV con coincidencia aproximada (VERDADERO como último argumento), que es la forma clásica de resolver escalones en Excel — aunque las soluciones con SUMAPRODUCTO y REDUCE` son mucho más flexibles y transparentes.

Más contenido de Excel en InflueXcel