Direkt zum Inhalt

Wie finde ich in Excel alle Kombinationen, die einer bestimmten Summe entsprechen?

Das Ermitteln aller möglichen Zahlenkombinationen in einer Liste, die sich zu einer bestimmten Summe addieren, stellt für viele Excel-Benutzer eine Herausforderung dar, sei es für Budgetierungs-, Planungs- oder Datenanalysezwecke.

In diesem Beispiel haben wir eine Liste mit Zahlen und das Ziel besteht darin, herauszufinden, welche Kombinationen aus dieser Liste zusammen 480 ergeben. Der bereitgestellte Screenshot zeigt, dass es fünf mögliche Gruppen von Kombinationen gibt, die diese Summe erreichen, einschließlich Kombinationen wie 300+120 +60, 250+120+60+50, unter anderem. In diesem Artikel werden wir verschiedene Methoden untersuchen, um die spezifischen Zahlenkombinationen in einer Liste zu bestimmen, die einen bestimmten Wert in Excel ergeben.

Finden Sie mit der Solver-Funktion eine Zahlenkombination, die einer gegebenen Summe entspricht

Ermitteln Sie alle Zahlenkombinationen, die einer bestimmten Summe entsprechen

Rufen Sie mit VBA-Code alle Zahlenkombinationen ab, deren Summe in einem Bereich liegt


Finden Sie mit der Solver-Funktion eine Zellkombination, die einer bestimmten Summe entspricht

In Excel einzutauchen, um Zellkombinationen zu finden, die in der Summe eine bestimmte Zahl ergeben, mag entmutigend erscheinen, aber das Solver-Add-in macht es zum Kinderspiel. Wir führen Sie durch die einfachen Schritte zum Einrichten von Solver und zum Finden der richtigen Kombination von Zellen, sodass eine scheinbar komplexe Aufgabe einfach und machbar wird.

Schritt 1: Aktivieren Sie das Solver-Add-In

  1. Bitte gehen Sie auf Reichen Sie das > OptionenIn der Excel-Optionen Dialogfeld, klicken Sie auf Add-Ins Klicken Sie dann im linken Bereich auf Go Taste. Siehe Screenshot:
  2. Dann ist die Add-Ins Das Dialogfeld wird angezeigt. Überprüfen Sie das Solver-Add-In Option und klicken Sie auf OK um dieses Add-In erfolgreich zu installieren.

Schritt 2: Geben Sie die Formel ein

Nachdem Sie das Solver-Add-In aktiviert haben, müssen Sie diese Formel in die Zelle B11 eingeben:

=SUMPRODUCT(B2:B10,A2:A10)
Note: In dieser Formel: B2: B10 ist eine Spalte mit leeren Zellen neben Ihrer Nummernliste und A2: A10 ist die Nummernliste, die Sie verwenden.

Schritt 3: Konfigurieren Sie Solver und führen Sie es aus, um das Ergebnis zu erhalten

  1. Klicken Sie auf Kostenlos erhalten und dann auf Installieren. Datum > Solver auf dem Sprung Solver-Parameter Dialogfeld Führen Sie im Dialogfeld die folgenden Vorgänge aus:
    • (1.) Klicken Sie auf Schaltfläche, um die Zelle auszuwählen B11 wo sich Ihre Formel befindet Ziel setzen Sektion;
    • (2.) Dann in der Zu Abschnitt auswählen Wert vonund geben Sie Ihren Zielwert ein 480 wie du es brauchst;
    • (3.) Unter dem Durch Ändern variabler Zellen Abschnitt, bitte klicken Klicken Sie auf die Schaltfläche, um den Zellbereich auszuwählen B2: B10 wo werden Ihre entsprechenden Nummern markiert.
    • (4.) Klicken Sie dann auf Speichern .
  2. Dann ein Einschränkung hinzufügen Das Dialogfeld wird angezeigt. Klicken Sie auf Klicken Sie auf die Schaltfläche, um den Zellbereich auszuwählen B2: B10, und wählen Sie Kasten aus der Dropdown-Liste. Zum Schluss klicken Sie OK Taste. Siehe Screenshot:
  3. Im Solver-Parameter Klicken Sie auf das Dialogfeld Lösen Knopf, einige Minuten später, a Solver-Ergebnisse Das Dialogfeld wird ausgeblendet und Sie können sehen, dass die Kombination von Zellen, die einer bestimmten Summe 480 entsprechen, in Spalte B als 1 markiert ist. In der Solver-Ergebnisse Dialog, bitte auswählen Behalten Sie die Solver-Lösung Option und klicken Sie auf OK um den Dialog zu verlassen. Siehe Screenshot:
Note: Diese Methode weist jedoch eine Einschränkung auf: Sie kann nur eine Kombination von Zellen identifizieren, die zusammen die angegebene Summe ergeben, selbst wenn mehrere gültige Kombinationen vorhanden sind.

Ermitteln Sie alle Zahlenkombinationen, die einer bestimmten Summe entsprechen

Wenn Sie die umfassenderen Funktionen von Excel erkunden, können Sie jede Zahlenkombination finden, die einer bestimmten Summe entspricht, und das ist einfacher, als Sie vielleicht denken. Dieser Abschnitt zeigt Ihnen zwei Methoden zum Finden aller Zahlenkombinationen, die einer bestimmten Summe entsprechen.

Ermitteln Sie mit der benutzerdefinierten Funktion alle Zahlenkombinationen, die einer bestimmten Summe entsprechen

Um alle möglichen Zahlenkombinationen aus einer bestimmten Menge aufzudecken, die zusammen einen bestimmten Wert erreichen, dient die unten beschriebene benutzerdefinierte Funktion als effektives Werkzeug.

Schritt 1: Öffnen Sie den VBA-Modul-Editor und kopieren Sie den Code

  1. Halten Sie die ALT + F11 Tasten in Excel, und es öffnet sich die Microsoft Visual Basic für Applikationen Fenster.
  2. Klicken Sie auf Kostenlos erhalten und dann auf Installieren. Insert > Modulund fügen Sie den folgenden Code in das Modulfenster ein.
    VBA-Code: Alle Zahlenkombinationen abrufen, die einer bestimmten Summe entsprechen
    Public Function MakeupANumber(xNumbers As Range, xCount As Long)
    'updateby Extendoffice
        Dim arrNumbers() As Long
        Dim arrRes() As String
        Dim ArrTemp() As Long
        Dim xIndex As Long
        Dim rg As Range
    
        MakeupANumber = ""
        
        If xNumbers.CountLarge = 0 Then Exit Function
        ReDim arrNumbers(xNumbers.CountLarge - 1)
        
        xIndex = 0
        For Each rg In xNumbers
            If IsNumeric(rg.Value) Then
                arrNumbers(xIndex) = CLng(rg.Value)
                xIndex = xIndex + 1
            End If
        Next rg
        If xIndex = 0 Then Exit Function
        
        ReDim Preserve arrNumbers(0 To xIndex - 1)
        ReDim arrRes(0)
        
        Call Combinations(arrNumbers, xCount, ArrTemp(), arrRes())
        ReDim Preserve arrRes(0 To UBound(arrRes) - 1)
        MakeupANumber = arrRes
    End Function
    
    Private Sub Combinations(Numbers() As Long, Count As Long, ArrTemp() As Long, ByRef arrRes() As String)
    
        Dim currentSum As Long, i As Long, j As Long, k As Long, num As Long, indRes As Long
        Dim remainingNumbers() As Long, newCombination() As Long
        
        currentSum = 0
        If (Not Not ArrTemp) <> 0 Then
            For i = LBound(ArrTemp) To UBound(ArrTemp)
                currentSum = currentSum + ArrTemp(i)
            Next i
        End If
     
        If currentSum = Count Then
            indRes = UBound(arrRes)
            ReDim Preserve arrRes(0 To indRes + 1)
            
            arrRes(indRes) = ArrTemp(0)
            For i = LBound(ArrTemp) + 1 To UBound(ArrTemp)
                arrRes(indRes) = arrRes(indRes) & "," & ArrTemp(i)
            Next i
        End If
        
        If currentSum > Count Then Exit Sub
        If (Not Not Numbers) = 0 Then Exit Sub
        
        For i = 0 To UBound(Numbers)
            Erase remainingNumbers()
            num = Numbers(i)
            For j = i + 1 To UBound(Numbers)
                If (Not Not remainingNumbers) <> 0 Then
                    ReDim Preserve remainingNumbers(0 To UBound(remainingNumbers) + 1)
                Else
                    ReDim Preserve remainingNumbers(0 To 0)
                End If
                remainingNumbers(UBound(remainingNumbers)) = Numbers(j)
                
            Next j
            Erase newCombination()
    
            If (Not Not ArrTemp) <> 0 Then
                For k = 0 To UBound(ArrTemp)
                    If (Not Not newCombination) <> 0 Then
                        ReDim Preserve newCombination(0 To UBound(newCombination) + 1)
                    Else
                        ReDim Preserve newCombination(0 To 0)
                    End If
                    newCombination(UBound(newCombination)) = ArrTemp(k)
    
                Next k
            End If
            
            If (Not Not newCombination) <> 0 Then
                ReDim Preserve newCombination(0 To UBound(newCombination) + 1)
            Else
                ReDim Preserve newCombination(0 To 0)
            End If
            
            newCombination(UBound(newCombination)) = num
    
            Combinations remainingNumbers, Count, newCombination, arrRes
        Next i
    
    End Sub
    

Schritt 2: Geben Sie die benutzerdefinierte Formel ein, um das Ergebnis zu erhalten

Schließen Sie nach dem Einfügen des Codes das Codefenster, um zum Arbeitsblatt zurückzukehren. Geben Sie die folgende Formel in eine leere Zelle ein, um das Ergebnis auszugeben, und drücken Sie dann Enter Taste, um alle Kombinationen zu erhalten. Siehe Screenshot:

=MakeupANumber(A2:A10,B2)
Note: In dieser Formel: A2: A10 ist die Nummernliste, und B2 ist die Gesamtsumme, die Sie erhalten möchten.

Tipp: Wenn Sie die Kombinationsergebnisse vertikal in einer Spalte auflisten möchten, wenden Sie bitte die folgende Formel an:
=TRANSPOSE(MakeupANumber(A2:A10,B2))
Die Einschränkungen dieser Methode:
  • Diese benutzerdefinierte Funktion funktioniert nur in Excel 365 und 2021.
  • Diese Methode ist ausschließlich für positive Zahlen wirksam; Dezimalwerte werden automatisch auf die nächste ganze Zahl gerundet und negative Zahlen führen zu Fehlern.

Erhalten Sie mit einer leistungsstarken Funktion alle Zahlenkombinationen, die einer bestimmten Summe entsprechen

Angesichts der Einschränkungen der oben genannten Funktion empfehlen wir eine schnelle und umfassende Lösung: die Funktion „Eine Zahl bilden“ von Kutools for Excel, die mit jeder Excel-Version kompatibel ist. Diese Alternative kann effektiv positive Zahlen, Dezimalzahlen und negative Zahlen verarbeiten. Mit dieser Funktion können Sie schnell alle Kombinationen erhalten, die einer bestimmten Summe entsprechen.

Tips: Um dies anzuwenden Erstelle eine Nummer Diese Funktion sollten Sie zunächst herunterladen Kutools for Excelund wenden Sie die Funktion dann schnell und einfach an.
  1. Klicken Sie auf Kostenlos erhalten und dann auf Installieren. Kutoolen > Inhalt > Erstelle eine Nummer, siehe Screenshot:
  2. Dann, in der Erstelle eine Nummer Dialogfeld klicken Sie bitte Klicken Sie auf die Schaltfläche, um die Nummernliste auszuwählen, die Sie verwenden möchten Datenquelle, und geben Sie dann die Gesamtzahl in das Feld ein Sum Textfeld. Abschließend klicken OK Schaltfläche, siehe Screenshot:
  3. Anschließend erscheint ein Eingabeaufforderungsfeld, das Sie daran erinnert, eine Zelle auszuwählen, um das Ergebnis zu finden, und dann zu klicken OK, siehe Screenshot:
  4. Und jetzt wurden alle Kombinationen, die dieser angegebenen Zahl entsprechen, wie im folgenden Screenshot gezeigt angezeigt:
Note: Um diese Funktion anzuwenden, bitte Laden Sie Kutools für Excel herunter und installieren Sie es zuerst.

Rufen Sie mit VBA-Code alle Zahlenkombinationen ab, deren Summe in einem Bereich liegt

Manchmal befinden Sie sich möglicherweise in einer Situation, in der Sie alle möglichen Zahlenkombinationen identifizieren müssen, die zusammen eine Summe innerhalb eines bestimmten Bereichs ergeben. Beispielsweise könnten Sie versuchen, alle möglichen Zahlengruppen zu finden, deren Gesamtsumme zwischen 470 und 480 liegt.

Das Entdecken aller möglichen Zahlenkombinationen, die in der Summe einen Wert innerhalb eines bestimmten Bereichs ergeben, stellt in Excel eine faszinierende und äußerst praktische Herausforderung dar. In diesem Abschnitt wird ein VBA-Code zur Lösung dieser Aufgabe vorgestellt.

Schritt 1: Öffnen Sie den VBA-Modul-Editor und kopieren Sie den Code

  1. Halten Sie die ALT + F11 Tasten in Excel, und es öffnet sich die Microsoft Visual Basic für Applikationen Fenster.
  2. Klicken Sie auf Kostenlos erhalten und dann auf Installieren. Insert > Modulund fügen Sie den folgenden Code in das Modulfenster ein.
    VBA-Code: Rufen Sie alle Zahlenkombinationen ab, die in der Summe einen bestimmten Bereich ergeben
    Sub Getall_combinations()
    'Updateby Extendoffice
        Dim xNumbers As Variant
        Dim Output As Collection
        Dim rngSelection As Range
        Dim OutputCell As Range
        Dim LowLimit As Long, HiLimit As Long
        Dim i As Long, j As Long
        Dim TotalCombinations As Long
        Dim CombTotal As Double
        Set Output = New Collection
        On Error Resume Next
        Set rngSelection = Application.InputBox("Select the range of numbers:", "Kutools for Excel", Type:=8)
        If rngSelection Is Nothing Then
            MsgBox "No range selected. Exiting macro.", vbInformation, "Kutools for Excel"
            Exit Sub
        End If
        On Error GoTo 0
        xNumbers = rngSelection.Value
        LowLimit = Application.InputBox("Select or enter the low limit number:", "Kutools for Excel", Type:=1)
        HiLimit = Application.InputBox("Select or enter the high limit number:", "Kutools for Excel", Type:=1)
        On Error Resume Next
        Set OutputCell = Application.InputBox("Select the first cell for output:", "Kutools for Excel", Type:=8)
        If OutputCell Is Nothing Then
            MsgBox "No output cell selected. Exiting macro.", vbInformation, "Kutools for Excel"
            Exit Sub
        End If
        On Error GoTo 0
        TotalCombinations = 2 ^ (UBound(xNumbers, 1) * UBound(xNumbers, 2))
        For i = 1 To TotalCombinations - 1
            Dim tempArr() As Double
            ReDim tempArr(1 To UBound(xNumbers, 1) * UBound(xNumbers, 2))
            CombTotal = 0
            Dim k As Long: k = 0
            
            For j = 1 To UBound(xNumbers, 1)
                If i And (2 ^ (j - 1)) Then
                    k = k + 1
                    tempArr(k) = xNumbers(j, 1)
                    CombTotal = CombTotal + xNumbers(j, 1)
                End If
            Next j
            If CombTotal >= LowLimit And CombTotal <= HiLimit Then
                ReDim Preserve tempArr(1 To k)
                Output.Add tempArr
            End If
        Next i
        Dim rowOffset As Long
        rowOffset = 0
        Dim item As Variant
        For Each item In Output
            For j = 1 To UBound(item)
                OutputCell.Offset(rowOffset, j - 1).Value = item(j)
            Next j
            rowOffset = rowOffset + 1
        Next item
    End Sub
    
    
    

Schritt 2: Führen Sie den Code aus

  1. Drücken Sie nach dem Einfügen des Codes F5 Drücken Sie die Taste, um diesen Code auszuführen. Wählen Sie im ersten angezeigten Dialogfeld den Zahlenbereich aus, den Sie verwenden möchten, und klicken Sie auf OK. Siehe Screenshot:
  2. Wählen Sie im zweiten Eingabeaufforderungsfeld die untere Grenzwertzahl aus oder geben Sie sie ein und klicken Sie auf OK. Siehe Screenshot:
  3. Wählen Sie im dritten Eingabeaufforderungsfeld die Höchstzahl aus oder geben Sie sie ein und klicken Sie auf OK. Siehe Screenshot:
  4. Wählen Sie im letzten Eingabeaufforderungsfeld eine Ausgabezelle aus, in der die Ausgabe der Ergebnisse beginnen soll. Dann klick OK. Siehe Screenshot:

Ergebnis

Jetzt wird jede qualifizierende Kombination in aufeinanderfolgenden Zeilen im Arbeitsblatt aufgeführt, beginnend mit der von Ihnen ausgewählten Ausgabezelle.

Excel bietet Ihnen mehrere Möglichkeiten, Zahlengruppen zu finden, die sich zu einer bestimmten Summe addieren. Jede Methode funktioniert anders, sodass Sie eine davon auswählen können, je nachdem, wie vertraut Sie mit Excel sind und was Sie für Ihr Projekt benötigen. Wenn Sie weitere Excel-Tipps und -Tricks erfahren möchten, finden Sie auf unserer Website Tausende von Tutorials Klicken Sie hier, um darauf zuzugreifen. Vielen Dank fürs Lesen und wir freuen uns darauf, Ihnen in Zukunft weitere hilfreiche Informationen zur Verfügung zu stellen!


Weitere Artikel:

  • Listen Sie alle möglichen Kombinationen auf oder generieren Sie sie
  • Angenommen, ich habe die folgenden zwei Datenspalten und möchte nun eine Liste aller möglichen Kombinationen basierend auf den beiden Wertelisten erstellen (siehe Abbildung links). Möglicherweise können Sie alle Kombinationen einzeln auflisten, wenn nur wenige Werte vorhanden sind. Wenn jedoch mehrere Spalten mit mehreren Werten erforderlich sind, um die möglichen Kombinationen aufzulisten, finden Sie hier einige schnelle Tricks, mit denen Sie dieses Problem in Excel lösen können .
  • Erstellen Sie eine Liste aller möglichen 4-Ziffern-Kombinationen
  • In einigen Fällen müssen wir möglicherweise eine Liste aller möglichen 4-stelligen Kombinationen der Nummern 0 bis 9 erstellen, was bedeutet, dass eine Liste von 0000, 0001, 0002… 9999 erstellt wird. Um die Listenaufgabe in Excel schnell zu lösen, stelle ich Ihnen einige Tricks vor.
Comments (51)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
hola esta muy interesante la demostración del código para excel, pero si deseo que me combine números, con cierta cantidad de números por combinación, por ejemplo 4 números por combinación, y solo me arroje eso, para optimizar la memoria del procesador:
1,2,3,4
2,3,4,5
5,2,6,8

en este caso como sería el código
This comment was minimized by the moderator on the site
Hola muy interesante la explicación, me sirvió bastante, pero deseo consultar como serpia el código si deseo que me de las combinaciones de 6 dígitos, o 5 digitos, según corresponda
This comment was minimized by the moderator on the site
Hi everyone,

I'm trying to find a way to to find all possible combinations of workershifts for a specific amount of workhours within a specific amount of working days.

Both, solver and Kutools basically work, but:

Solver only ever displays one combination not all of them (which is what I would need).

Kutools on the other hand only uses each value once, for example I know there are solutions with say 3 7-hour shifts but it won't pick the shift more than once.

Thanks in advance for any responses!

Hope I'm not threadnecroing too hard here.
This comment was minimized by the moderator on the site
Hello, simsok,
Sorry, I can't understand you clearly.
Could you give your problem more detailed, or can you insert a screenshot of your problem here?
Thank you!
This comment was minimized by the moderator on the site
Thank you so much!!! The solver add-in worked for me!
This comment was minimized by the moderator on the site
How to get list of cell names that add to a given no.
This comment was minimized by the moderator on the site
Hello, Ranka,
I'm sorry, at present, there is no good way for getting the cells that add to a given number.
Thank you!
This comment was minimized by the moderator on the site
ExtendOffice - How To Find All Combinations That Equal A Given Sum In Excel

In this example, I would like to run 100 rows instead of the 8 in your example. When I try to create more rows the formula stops working. I started over with a fresh sheet and I still can not get the formula to work.

Running windows 10
Excel 2207
Office 365
This comment was minimized by the moderator on the site
Hello, Shaw

Unfortunately, the formula in this article has a limit of 20 values, if there are more than 20 numbers, the result will not come out. In this case, I will recommend the Make Up A Number feature of Kutools for Excel, with it, you can find all combinations from the list of numbers. If you have a lot of numbers and many combination results, it will take much time, but you can set the number of combinations to make it faster. See screenshot:
https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-make-up-number-1.png

You can download this tool from here: https://www.extendoffice.com/download/kutools-for-excel.html
You can try it for free 30 days, please have a try, hope it can help you!
This comment was minimized by the moderator on the site
Hi I have tried doing this with the first method and it just isn't working. I'm unsure what I'm doing wrong as I seem to have followed the instructions exactly. Are there any common errors to watch out for? There is no error showing in the formula itself and all cells are all in the same position as yours are, but it's a list of 48 numbers rather than 8.
This comment was minimized by the moderator on the site
Hello, Angie
If you can't get the result by using the first method, you can view the video at the bottom of this article:
https://www.extendoffice.com/documents/excel/3557-excel-find-all-combinations-that-equal-given-sum.html#demo
Also, you can try our tool-Kutools for Excel's Make up a number feature, it will get all combinations quickly and easily.
Thank you!
This comment was minimized by the moderator on the site
So will any of these work when I have been paid by a client, but with no remit so don’t know which invoices have been paid.
This comment was minimized by the moderator on the site
For the solver add in on excel, can you make it solve for closest to 480 rather than value of 480 (example used above)? I really need some help on how this might work out, thanks in advance

This comment was minimized by the moderator on the site
Could this be adapted to find combinations that sum up to specific range i.e. sum between 450 and 500? Is there a way to set it so that each cell value can be used only in one combination not more?
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations