Excel: Finden Sie eine Teilmenge von Zahlen, die zu einer bestimmten Summe beitragen?


Antworten:


25

Dies ist mit dem Solver-Add-In * möglich. Die folgenden Schritte haben in Excel 2007 und 2010 für mich funktioniert.

  1. Legen Sie eine Zelle fest, in der das Ergebnis gespeichert werden soll (in diesem Beispiel C1). Dies ist die Zielzelle und eine Spalte, die Excel für Scratch-Arbeiten verwenden kann (B1: B100 in diesem Beispiel).
  2. Geben Sie in die Zielzelle die Formel "= SUMPRODUCT (A1: A100, B1: B100)" ein (keine Anführungszeichen). Dies berechnet die Summe von A1 * B1 + A2 * B2 + ... usw.
  3. Wählen Sie Solver öffnen (Registerkarte Daten, Analysegruppe)
  4. Die Zielzelle sollte offensichtlich sein ($ C $ 1 für dieses Beispiel)
  5. Wählen Sie für 'Gleich:' 'Wert von:' und geben Sie den gewünschten Wert ein
  6. Geben Sie unter "Durch Ändern der Zellen" "$ B $ 1: $ B $ 100" ein (keine Anführungszeichen, und es kann erforderlich sein, diese Werte selbst auf 0 zu initialisieren).
  7. Fügen Sie den Zellen, die geändert werden können, eine Einschränkung hinzu. Wählen Sie im Pulldown-Menü 'bin' (Binär). Dies beschränkt die Werte dieser Zellen auf 0 (Entfernen der entsprechenden A-Zelle aus der Summe) oder 1 (Hinzufügen der entsprechenden A-Zelle zur Summe).
  8. Klicken Sie auf "Lösen" und warten Sie. Die Zahlen, die Teil der gesuchten Teilmenge sind, haben eine 1 in der Spalte B.

Beispiel


Wenn der Solver lange dauert, können Sie Abhilfe schaffen, indem Sie Zeilen entfernen, die offensichtlich nicht funktionieren (die Summe ist in US-Dollar angegeben, und nur eine Zeile enthält Cent ungleich Null).


Bonus: Excel kann die gesuchten Zellen automatisch hervorheben, indem Sie diesen Zellen eine bedingte Formatierung hinzufügen. Wählen Sie alle Zellen aus, die Sie formatieren möchten, und wählen Sie unter (Registerkarte Startseite) >> (Gruppe Stile) >> Bedingte Formatierung >> Neue Regel die Option 'Verwenden Sie eine Formel, um zu bestimmen, welche Zellen formatiert werden sollen'. Geben Sie in die Formel '= $ B1 = 1' (keine Anführungszeichen) ein, was als wahr ausgewertet wird, wenn die entsprechende Zeile in der Spalte B 1 ist. Für das Format können Sie hinzufügen, was Sie möchten (fett, kursiv, grün, usw).

Eine andere einfache Möglichkeit, die wichtigen Zeilen zu finden, besteht darin, Spalte B Z-> A zu sortieren. Alle Einsen werden nach oben verschoben.


* Das Solver-Add-In kann mit diesen Schritten installiert werden

  1. Klicken Sie auf die Microsoft Office-Schaltfläche und dann auf Excel-Optionen.
  2. Klicken Sie auf Add-Ins und wählen Sie dann im Feld Verwalten die Option Excel-Add-Ins aus.
  3. Klicken Sie auf Los.
  4. Aktivieren Sie im Feld Verfügbare Add-Ins das Kontrollkästchen Solver-Add-In, und klicken Sie dann auf OK. (Wenn das Solver-Add-In nicht im Feld Verfügbare Add-Ins aufgeführt ist, klicken Sie auf Durchsuchen, um das Add-In zu suchen.)
  5. Wenn Sie aufgefordert werden, das Solver-Add-In derzeit nicht auf Ihrem Computer zu installieren, klicken Sie auf Ja, um es zu installieren.

1
In Excel 2013 müssen Sie im Optionsmenü die Option "Ganzzahlige Einschränkungen ignorieren" deaktivieren. Andernfalls erhalten Sie Nicht-INT-Werte für 0 und 1
Omar Shahine

1
Damit dies ordnungsgemäß funktioniert: 1. Die Formel in Zelle C1 sollte sumPRODUCT (nicht nur sum) lauten. 2. Die Zellen in Spalte B sollten alle keine Eingabe enthalten.

Vielen Dank! Für mich funktionieren die alten Schritte immer noch, aber ich mag Sumproduct besser, weil es nicht auf der Funktion für Array-Formeln beruht.
Nate Parsons

Trotzdem, um alle Kombinationen zu finden ... obwohl es eine Lösung gibt, die vom Löser gefunden wurde ... wie man die anderen Lösungen findet ??? Mein Array ist hier: v = [1100, 1105, 11830, 14790, 2325, 2455, 2555, 2935, 3050, 3150, 3185, 3370, 3475, 350, 3530, 3590, 3680, 3745, 885, 9624] sum = 43029 ... Lösung1 = [350, 1100, 2325, 2455, 2555, 2935, 3150, 3745, 9624, 14790], Lösung2 = [350, 885, 1100, 1105, 2325, 2455, 2555, 3530, 3590, 3680 , 9624, 11830]
ihightower

2

Es gibt ein kostengünstiges Excel-Add-In SumMatch , das die Teilmenge der Zahlen hervorhebt , die sich zu einer Zielsumme addieren.

Geben Sie hier die Bildbeschreibung ein


1
Hallo AIsoft, guter Fund. Vielleicht können Sie beim nächsten Mal weitere Informationen hinzufügen.
Nixda

@pnuts Habe ich einen Fehler gemacht? Ich verstehe nicht, was du mit AUD $ 30
Nixda

@pnuts Ah ok, das ist ein guter Punkt.
Nixda

6
Hinweis für mich: 30 AUD = 30 australische US-Dollar. Es ist kein Verweis auf eine Excel-Zelle [AUD30] mit einer festen Spalte ....: D
nixda

1
Das Preisschild ist ein Nachteil, ebenso wie das Fehlen klarer Anweisungen. Eigentlich mehr als 1 Satz + 1 Bild von der Produktwebsite.
Nate Parsons
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.