Excel: ¿Encuentra un subconjunto de números que se suman a un total dado?

Respuestas:

25

Es posible con el complemento Solver *. Los siguientes pasos me funcionaron en Excel 2007 y 2010.

  1. Designe una celda para contener el resultado (C1 para este ejemplo): esta es la celda objetivo y una columna que Excel puede usar para el trabajo temporal (B1: B100 para este ejemplo)
  2. En la celda de destino, ingrese la fórmula "= SUMPRODUCT (A1: A100, B1: B100)" (sin comillas). Esto calculará la suma de A1 * B1 + A2 * B2 + ... etc.
  3. Seleccione Abrir el solucionador (pestaña Datos, grupo Análisis)
  4. La celda objetivo debería ser obvia ($ C $ 1 para este ejemplo)
  5. Para 'Igual a:' seleccione 'Valor de:' e ingrese el valor deseado
  6. En 'Al cambiar celdas' ingrese "$ B $ 1: $ B $ 100" (sin comillas, y puede ser necesario inicializar estos valores a 0 usted mismo)
  7. Agregue una restricción a las celdas que se pueden cambiar. En el menú desplegable, seleccione 'bin' (Binario). Esto restringe los valores de estas celdas a 0 (eliminando la celda A correspondiente de la suma) o 1 (agregando la celda A correspondiente a la suma).
  8. Haga clic en 'Resolver' y espere. Los números que forman parte del subconjunto que está buscando tendrán un 1 en la columna B

Ejemplo


Si el solucionador tarda mucho tiempo, puede ayudarlo eliminando filas que obviamente no funcionarán (el total está en dólares, y solo una fila tiene centavos distintos de cero)


Bonificación: puede hacer que Excel resalte automáticamente las celdas que está buscando agregando formato condicional a esas celdas. Seleccione todas las celdas que desea formatear y desde (pestaña Inicio) >> (grupo Estilos) >> Formateo condicional >> Nueva regla seleccione 'Usar una fórmula para determinar qué celdas formatear'. En la fórmula, ingrese '= $ B1 = 1' (sin comillas) que se evaluará como verdadero si la fila correspondiente en la columna B es 1. Para el formato, puede agregar lo que desee (negrita, cursiva, relleno verde, etc)

Otra forma fácil de encontrar las filas importantes es ordenar la columna B Z-> A, y todos los 1 llegarán a la cima.


* El complemento solucionador se puede instalar con estos pasos

  1. Haga clic en el botón de Microsoft Office y luego haga clic en Opciones de Excel.
  2. Haga clic en Complementos y, en el cuadro Administrar, seleccione Complementos de Excel.
  3. Haz clic en Ir.
  4. En el cuadro Complementos disponibles, seleccione la casilla de verificación Complemento Solver y luego haga clic en Aceptar. (Si el complemento Solver no aparece en el cuadro Complementos disponibles, haga clic en Examinar para ubicar el complemento).
  5. Si se le indica que el complemento Solver no está instalado actualmente en su computadora, haga clic en Sí para instalarlo.
Nate Parsons
fuente
1
En Excel 2013, debe desmarcar "Ignorar restricciones enteras" en el menú de opciones. De lo contrario, obtendrá valores no INT para 0 y 1
Omar Shahine
1
Para que esto funcione correctamente: 1. La fórmula en la celda C1 debe ser sumPRODUCT (no solo suma) 2. Todas las celdas en la columna B deben tener cero entrada en ellas.
¡Gracias! Para mí, los pasos anteriores todavía funcionan, pero me gusta más el sumproducto porque no depende de la función de fórmulas de matriz.
Nate Parsons
de todos modos para encontrar todas las combinaciones ... aunque hay una solución encontrada por el solucionador ... ¿cómo encontrar las otras soluciones? mi matriz está aquí: v = [1100, 1105, 11830, 14790, 2325, 2455, 2555, 2935, 3050, 3150, 3185, 3370, 3475, 350, 3530, 3590, 3680, 3745, 885, 9624] suma = 43029 ... solución1 = [350, 1100, 2325, 2455, 2555, 2935, 3150, 3745, 9624, 14790], solución2 = [350, 885, 1100, 1105, 2325, 2455, 2555, 3530, 3590, 3680 , 9624, 11830]
ihightower
2

Hay un SumMatch de complemento de Excel de bajo costo , que resaltará el subconjunto de números que se suman a una suma objetivo.

ingrese la descripción de la imagen aquí

AlSoff
fuente
1
Hola AIsoft, buen hallazgo. Quizás la próxima vez pueda agregar más información.
nixda
@pnuts ¿Cometí un error? No entiendo lo que quieres decir con AUD $ 30
nixda
@pnuts Ah ok, ese es un buen punto.
nixda
66
Nota para mí: AUD $ 30 = 30 dólares australianos. No es una referencia a una celda de Excel [AUD30] con una columna fija ....: D
nixda
1
El precio es un inconveniente, al igual que la falta de instrucciones claras. Algo más de 1 oración + 1 imagen del sitio web del producto, de verdad.
Nate Parsons el