


Finden Sie alle Kombinationen von Zahlen, die einer gegebenen Summe in Excel entsprechen
3 Möglichkeiten, alle Kombinationen aus einer Reihe von Zahlen zu finden, die zu einer bestimmten Gesamtsumme summieren.
Das Finden von Wertenkombinationen, die zu einer bestimmten Summe führen, ist ein häufiges Problem in der Datenanalyse. Zum Beispiel möchten Sie möglicherweise alle möglichen Kombinationen von Artikeln kennen, die mit einem bestimmten Budget gekauft werden können, oder alle möglichen Möglichkeiten, Ressourcen zur Erfüllung bestimmter Anforderungen zuzuweisen. In diesem Artikel werden wir untersuchen, wie Excel Solver und VBA verwendet werden, um die Aufgabe zu erfüllen. Wir werden auch einige mögliche Fallstricke und Einschränkungen jedes Ansatzes diskutieren, die bei der Behandlung großer Datensätze oder komplexer Einschränkungen auftreten können.
Finden Sie eine Kombination von Zahlen, die einer gegebenen Summe mit Excel Solver entsprechen
Bedauerlicherweise kann Ihnen keine eingebaute Excel -Funktionen helfen, die Zahlen zu identifizieren, die zu einer bestimmten Gesamtsumme führen. Glücklicherweise bietet Excel ein spezielles Add-In zur Lösung linearer Programmierprobleme. Das Solver-Add-In ist in allen Versionen von Excel enthalten, ist jedoch standardmäßig nicht aktiviert. Wenn Sie mit diesem Tool nicht vertraut sind, finden Sie hier einen großartigen Artikel zum Hinzufügen und Verwenden von Solver in Excel.
Fahren Sie mit dem in Ihrem Excel aktivierten Solver-Add-In die folgenden Schritte aus:
- Erstellen Sie das Modell.
Geben Sie dazu Ihre Zahlenmenge in eine Spalte ein (A3: A12 in unserem Fall) und fügen Sie rechts von Ihren Zahlen eine leere Spalte für die Ergebnisse hinzu (B3: B12). Geben Sie in einer separaten Zelle (B13) eine ähnliche Sumproduktformel ein, die dieser ähnelt:
=SUMPRODUCT(A3:A12, B3:B12)
- Führen Sie das Solver-Add-In aus.
Klicken Sie auf der Registerkarte Daten in der Analysegruppe auf die Schaltfläche Löser .
- Definieren Sie das Problem für Löser.
Konfigurieren Sie im Dialogfeld Solver -Parameter die objektiven und variablen Zellen:
- Geben Sie im Feld Zielziel die Adresse der Formelzelle (B13) ein.
- Wählen Sie im Abschnitt den Wert des Wertes des Wertes und geben Sie den gewünschten Summenwert (50 in diesem Beispiel) ein.
- Wählen Sie im Feld Variable Zellen den Bereich aus, der mit den Ergebnissen gefüllt ist (B3: B12).
- Fügen Sie die Einschränkungen hinzu.
Um die Einschränkungen anzugeben, klicken Sie auf die Schaltfläche Hinzufügen . Wählen Sie im Dialogfeld "Einschränkungen hinzufügen" den resultierenden Bereich (B3: B12) und wählen Sie Bin aus der Dropdown-Liste. Die Einschränkung wird automatisch auf binär eingestellt. Wenn Sie fertig sind, klicken Sie auf OK.
- Das Problem lösen.
Wenn Sie zum Dialogfenster des Löserparameters zurückgeführt werden, überprüfen Sie Ihre Einstellungen und klicken Sie auf die Schaltfläche Lösen .
Einige Sekunden (oder Minuten) später wird das Dialogfeld Solver -Ergebnisse angezeigt. Wenn Sie erfolgreich sind, wählen Sie die Option LOLVER -Lösung aufbewahren und klicken Sie auf OK, um den Dialogfeld zu beenden.
Infolgedessen haben Sie 1 neben den Zahlen eingefügt, die zur angegebenen Summe addieren. Keine benutzerfreundliche Lösung, aber es ist das Beste, was Excel aus der Box heraus kann.
Für Visualisierungszwecke habe ich die Zellen hervorgehoben, die die gewünschte Summe in hellgrüner Summe verleihen:
Begrenzung : Excel Solver kann höchstens eine Kombination von Zahlen finden, die einer bestimmten Summe entsprechen.
Finden Sie alle Kombinationen, die einer bestimmten Summe mit benutzerdefinierter Funktion entsprechen
Um alle möglichen Kombinationen aus einer bestimmten Reihe von Zahlen zu erhalten, die zu einem bestimmten Wert addieren, können Sie die benutzerdefinierte Funktion unten verwenden. Wenn Sie bei UDFS neu sind, finden Sie in diesem Handbuch viele nützliche Informationen: So erstellen Sie benutzerdefinierte Funktionen in Excel.
Wie diese Funktion funktioniert
Die Hauptfunktion, Findsumcombinations , ruft einige Nebenfunktionen auf, die kleinere Unteraufgaben implementieren. Die Funktion namens Sumuprecursivecombinations führt den Kernalgorithmus aus, der alle möglichen Summen im angegebenen Bereich findet und diejenigen filtert, die das Ziel erreichen. Die ArrayToString -Funktion steuert die Form der Ausgangszeichenfolgen. Drei weitere Funktionen ( Sumarray , AddtoArray und CopyArray ) sind für die Verarbeitung von Zwischenarrays verantwortlich: Jedes Mal, wenn wir ein temporäres Array erstellen, fügen Sie ein Element aus dem Quellarray hinzu und überprüfen Sie, ob die Zielsumme erreicht ist. Der Kernalgorithmus stammt aus diesem Stackoverflow -Thread. Vielen Dank, dass Sie es geteilt haben!
Syntax
Aus Sicht des Benutzers ist die Syntax unserer benutzerdefinierten Funktion so einfach wie folgt:
Findsumcombinations (Bereich, Summe)Wo:
- Reichweite ist der zu testende Zahlenbereich.
- Summe ist die Zielsumme.
Notiz! Die benutzerdefinierte Funktion funktioniert nur in Dynamic Array Excel 365 und 2021.
So verwenden Sie die Funktion für Findsumcombinations:
- Fügen Sie den oben genannten Code in ein Codemodul Ihrer Arbeitsmappe ein und speichern Sie ihn als Makro-fähige Arbeitsmappe (.xlsm). Die Schritt-für-Schritt-Anweisungen finden Sie hier.
- Geben Sie in jeder leeren Zelle eine Findsumcombinations -Formel ein und drücken Sie die Eingabetaste . Stellen Sie sicher, dass es genügend leere Zellen am Recht gibt, alle Kombinationen auszugeben, andernfalls gibt die Formel einen #Spill -Fehler zurück.
Um beispielsweise alle möglichen Kombinationen von Zahlen im Bereich A6: A15 zu finden, die der Summe in A3 entsprechen, lautet die Formel:
=FindSumCombinations(A6:A15, A3)
Wie bei jeder anderen dynamischen Array -Funktion ist die Formel nur eine Zelle (C6 im Bild unten) und die Ergebnisse populiert nach Bedarf in so viele Zellen. Standardmäßig sind die von Kommas getrennten Zeichenfolgen in einer Reihe ausgeben:
Um die Ergebnisse in einer Spalte zurückzugeben, wickeln Sie die benutzerdefinierte Funktion wie folgt in eine Transponierung ein:
=TRANSPOSE(FindSumCombinations(A6:A15, A3))
Um die Zeichenfolgen in Form eines in lockigen Klammern eingeschlossenen Arrays auszugeben, ändern Sie die ArrayToString -Funktion wie folgt:
Die Ergebnisse sehen ähnlich aus:
Einschränkung : Diese benutzerdefinierte Funktion funktioniert nur in Dynamic Array Excel 365 und Excel 2021.
Holen Sie sich alle Kombinationen, die einer bestimmten Summe mit VBA -Makro entsprechen
Die oben beschriebene benutzerdefinierte Funktion gibt die Kombinationen von Zahlen als Zeichenfolgen zurück. Wenn Sie lieber jede Zahl in einer separaten Zelle haben möchten, ist dieses Makro hilfreich. Der Code wurde von einem anderen Excel -Experten Alexander Trifuntov verfasst, der den Benutzern aktiv geholfen hat, verschiedene Excel -Probleme in diesem Blog zu lösen.
Fügen Sie zunächst den folgenden Code zu Ihrer Arbeitsmappe hinzu. Die detaillierten Schritte finden Sie unter dem Einfügen von VBA -Code in Excel.
Erstellen Sie als Nächstes eine Benutzerform ( einfügen > userform ) mit den folgenden Designs und den Eigenschaften:
Fügen Sie den Code für das Formular hinzu, nachdem Sie das Design des Formulars abgeschlossen haben. Klicken Sie hierfür mit der rechten Maustaste auf das Formular im Project Explorer und wählen Sie den Code anzeigen :
Tipp. Anstatt das Formular von Grund auf neu zu erstellen, können Sie unser Beispiel-Arbeitsbuch am Ende dieses Beitrags herunterladen und das Codemodul und die Benutzerform1 von dort aus kopieren (siehe, wie ein Makro in ein anderes Arbeitsbuch kopiert). Kopieren Sie es in das Personal -Makro -Arbeitsbuch, um das Makro in allen Arbeitsmappen zugänglich zu machen.
Drücken Sie mit dem Code und dem Formular mit dem Code und dem Formular Alt F8 und führen Sie das Makro findAllcombinations aus:
Definieren Sie auf dem Formular, das auftaucht, Folgendes:
- Der Bereich mit den Quellzahlen (A4: A13)
- Die Zielsumme (50)
- Die obere linke Zelle des Zielbereichs (C4).
Stellen Sie bei der Angabe der oberen linken Zelle des Ausgangsbereichs sicher, dass mindestens eine leere Reihe über (für Header) und genügend leere Zellen nach unten und rechts vorhanden ist. Wenn es nicht genügend leere Zellen gibt, werden Ihre vorhandenen Daten überschrieben.
Wenn Sie auf OK klicken, werden das Ergebnis erzeugt, wie im folgenden Screenshot gezeigt:
- In C4: C6 haben Sie die Kombination von Zahlen als von Kommas getrennte Werte.
- Die Spalten F, G und H enthalten die gleichen Zahlenkombinationen, wobei jede Zahl in einer separaten Zelle liegt.
- In D4 haben Sie die Zielsumme.
Diese Form der Ausgabe erleichtert die Überprüfung des Ergebnisses. Geben Sie einfach die Summenformel in Zelle F13 ein, ziehen Sie es nach rechts über zwei weitere Zellen und Sie werden feststellen, dass jede Zahlenkombination den angegebenen Wert addiert (50).
Einschränkung: Bei einer großen Anzahl von Zahlen kann das Makro einige Zeit in Anspruch nehmen, um alle möglichen Kombinationen zu generieren.
Vorteile : Arbeiten in allen Versionen von Excel 2010 - 365; Bietet zwei Ausgangsformen - Strings von Kommas getrennten Werten und Zahlen in getrennten Zellen.
Zusammenfassend ist es ein leistungsstarkes Instrument zur Lösung eines weiten Bereichs von Datenanalyseproblemen, um alle Wertekombinationen zu finden, die einem bestimmten Wert gleichwertig sind. Hoffentlich hat dieser Artikel Ihnen einen nützlichen Ausgangspunkt für die Erforschung dieses Themas und die Behandlung ähnlicher Probleme in Ihrer eigenen Arbeit geliefert. Danke fürs Lesen!
Arbeitsbuch üben
Finden Sie Kombinationen, die einer bestimmten Summe entsprechen - Beispiele (.xlsm -Datei).
Das obige ist der detaillierte Inhalt vonFinden Sie alle Kombinationen von Zahlen, die einer gegebenen Summe in Excel entsprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen









