Averiguar qué números sumar para obtener un resultado.

 

Página inicial

En el rango A1:A10 de una hoja de cálculo tenemos una serie de números enteros:



y queremos averiguar si sería posible obtener un resultado determinado sumando algunos de ellos, por ejemplo 32.

Podemos conseguirlo usando uno de los complementos que vienen en la instalación de Excel: Solver.

Si no lo tenemos instalado, lo primero que tendremos que hacer es instalarlo desde Herramientas -> Complementos.

Rellenamos con unos las filas 1:10 de una columna, por ejemplo la B, y ponemos el resultado, 32, en una celda, por ejemplo A12:



En otra celda, por ejemplo en B12 ponemos la siguiente fórmula: =SUMAPRODUCTO(A1:A10;B1:B10)



Teniendo seleccionada la celda donde pusimos esta fórmula (en este caso B12), hacemos Herramientas -> Solver, y:

- dejamos $B$12 como 'Celda objetivo:"
- 'Valores de:' 32
- 'Cambiando las celdas' $B$1:$B$10



Pulsamos el botón 'Agregar...' para agregar una restricción que será:

- 'Referencia de la celda:' $B$1:$B$10
- en el desplegable que hay a la derecha, seleccionamos 'bin', con lo que la restricción pasará a ser de tipo binario



Pulsamos el botón 'Aceptar' para volver al formulario principal del complemento y le damos al botón 'Resolver':



Vemos que Solver consigue encontrar una solución y nos ofrece la posibilidad de aceptarla:



En la columna B vemos cómo algunos unos han pasado a ser ceros. Los unos que quedan son una de (en este caso) las posibles soluciones.

 

 

 

He escrito una función que hace esto mismo sin necesidad de usar el Solver. Se puede ver en este libro de ejemplo, pero hay que tener en cuenta que el número de combinaciones necesarias para encontrar un resultado (o para determinar que ninguna combinación de sumandos pruduce el resultado deseado) aumenta exponencialmente de acuerdo al número de celdas. La fórmula para calcular dicho número de combinaciones es:

 

Número de combinaciones = 2 ^ Número de celdas - 1

 

de forma que, por ejemplo, para 16 celdas dicho número es 65.535, para 24 celdas (máximo permitido por la función que he escrito), es 16.777.215, para 30 celdas sería 1.073.741.823, etc.

 

En el libro, las celdas con los sumandos tienen un formato condicional para que se coloreen en azul las que producen la suma buscada.

 

 

Si por necesidad o por curiosidad se desease obtener todas las sumas posibles para unos sumandos dados, aconsejo la consulta de alguno de los siguientes enlaces:

 

Página inicial