Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Alle Summen-Kombinationen aus 1-n Zellen

Forumthread: Alle Summen-Kombinationen aus 1-n Zellen

Alle Summen-Kombinationen aus 1-n Zellen
17.07.2008 20:02:10
Michi
Liebe VBA-Freaks,
ich möchte gerne folgende Aufgabe lösen. Meiner Meinung nach geht das nur über VBA und da bin ich an meine Grenzen gestossen:
Ich möchte aus 1-n Zellen jeweils die Summe aller möglichen Kombinationen bekommen, also z.B. bei 4 Zellen müssten die Ergebnisse sein:
- Jede Zelle einzeln als Summe (wohl kein Problem)
- dann alle Kombinationen aus 2 Zellen, also 1+2, 1+3, 1+4, 2+3,......
- dann alle Kombinationen aus 3 Zellen, also 1+2+3, 1+2+4, 1+3+4.......
bis zur Summe aller Zellen (hier 4)
Tja, und da das Ganze variabel sein soll bzgl. der Anzahl der Zellen, wird's kompliziert.
Ich brauch die Ergebnisse auch nicht alle aufgelistet, mir reicht, wenn ich das jeweilige Ergebnis pro Kombination bekomme und mit dem weiterarbeiten kann.
Besten Dank schon mal im voraus und viele Grüße
Michi

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Summen-Kombinationen aus 1-n Zellen
17.07.2008 21:20:00
Michi
Hallo Rainer,
danke für den Link, aber da ist leider nichts dabei. Ich hab auch sonst schon im Archiv geschaut und nix passendes gefunden. Wenn die Anzahl der Zellen immer gleich wär, könnte ich es wohl auch selber hinbekommen, aber das ist eben das Problem, dass es variabel sein muss.
Vielleicht hat noch jemand eine andere Idee. Ich bin für jeden Lösungsvorschlag dankbar.
Viele Grüße
Michi

Anzeige
AW: Alle Summen-Kombinationen aus 1-n Zellen
17.07.2008 21:33:00
Ramses
Hallo
Der erste Beitrag macht genau das was du wilslt.
Der zweite Beitrag enthält eine Tabelle die genau das macht was du verlangst, nur nicht mit einzelnen Werten sondern mit Summenfeldern.
Daran siehst du wie aufwändig das ist und es nicht einfach mal so schnell nebenbei gemacht werden kann.
Gruss Rainer

Anzeige
AW: Alle Summen-Kombinationen aus 1-n Zellen
17.07.2008 21:48:00
Michi
Hallo Rainer,
ich hab mir beide angeschaut und aus dem zweiten Beitrag die Mappe auch runtergeladen. Aber es sind beide nicht das, was ich brauch, denn im ersten Beispiel ist es eine bestimmt Anzahl und im zweiten werden immer nur zwei Werte addiert. Mein Ziel/Wunsch wäre alle Kombinationen zu bekommen mit jeder möglichen Anzahl an Summanden, also z.B. bei 4 Werten alle Ergebnisse mit einem Summanden, mit 2, mit 3 und mit 4 Summanden. Ich glaub, dass das ziemlich aufwendig ist, daher hab ich's hier ins Forum gestellt, nachdem ich mir schon den ganzen Nachmittag den Kopf zerbrochen hab. Mein größtes Problem ist für mich, dass ich bestimmen muss, wieviele Schleifen durchlaufen werden sollen, da ja die Anzahl der relevanten Zellen verschieden sein kann. Vielleicht ist das auch gar nicht umsetzbar. Dann muss ich mir was anderes überlegen. Toll wär's aber schon, wenn's eine Lösung gäbe.
Viele Grüße
Michi

Anzeige
Noch offen ...
17.07.2008 21:59:00
Ramses
Hallo
"....im ersten Beispiel ist es eine bestimmt Anzahl und im zweiten werden immer nur zwei Werte addiert...."
Wenn du den Code im ersten Beispiel ansiehst, wie aufwändig das ist nur mit den "paar" Zellen, dann kannst du dir, vielleicht auch nicht, in etwas ausmalen, wie aufwändig das ist das für eine variable Anzahl von Zellen zu machen.
Sorry,... ist zwar interessant, aber dafür habe ich leider keine Zeit.
Gruss rainer

Anzeige
AW: Alle Summen-Kombinationen aus 1-n Zellen
17.07.2008 22:09:00
Michi
Ich kann mir gut vorstellen, wie aufwändig das ist, aber Du hast es auch gesagt: sehr interessant. Vielleicht hat ja jemand anderes Lust, sich daran zu versuchen.
Danke trotzdem für Deine Antworten.
Viele Grüße
Michi

AW: Alle Summen-Kombinationen aus 1-n Zellen
17.07.2008 22:34:00
mpb
Hallo Michi,
wieviel unterschiedliche Werte kan es denn geben? Die Zahl der Kombinationen ergibt sich für n Werte nach folgender Formel:
Summe von 1 bis n für n!/((n-i)!*i!)
Für n=4 sind das 19 Kombinationen
für n= 20 bereits 1048575
für n=50 schlappe 1,22487E+23 (eine 1 mit 23 Nullen)
Willst Du Dir das wirklich antun?
Gruß
Martin

Anzeige
AW: Alle Summen-Kombinationen aus 1-n Zellen
18.07.2008 08:00:14
Michi
Hallo Martin,
das Problem seh ich auch. Ich hatte Fälle mit 11 einzelnen Zahlen, das ist aber eher schon viel. Im Regelfall ist es im einstelligen Bereich. Ich hab auch schon überlegt, ob ich mir eine Obergrenze setze (z.B. 12) und dann die einzelnen Kombinationsmöglichkeiten über Select Case aufrufe, je nachdem wieviele einzelne Zahlen es sind. Aber schöner wär's natürlich, wenn's variabel wäre. Ich will auch keine ewigen Laufzeiten, so dass ich mir durchaus eine Obergrenze für die Anzahl der einzelnen Zahlen vorstellen kann. Das müsste ich dann sehen, wie lange die Prozedur läuft. Außerdem will ich auch abbrechen, wenn ein bestimmtes Ergebnis erreicht ist. Aber es kann auch passieren, dass ich alle Kombinationen durchlaufen muss.
Viele Grüße
Michi

Anzeige
AW: Alle Summen-Kombinationen aus 1-n Zellen
18.07.2008 14:21:00
David
Hi.
Ich habe mir mal eine Formellösung gebastelt. Bis 12 Stellen ist das noch halbwegs machbar, danach reichen die 65.000 Zeilen von Excel nicht mehr.
Allerdings kann ich die Datei hier nicht posten, da die rund 17 MB groß ist.
Gruß
David

AW: Alle Summen-Kombinationen aus 1-n Zellen
18.07.2008 15:48:52
Michi
Hallo David,
was ist an der Datei 17 MB groß? Ich kann mir momentan schwer vorstellen, was daran soviel Speicher brauchen sollte. Sind da wirklich nur Formeln drin? Kriegst Du's nicht irgendwie kleiner zum Hochladen? Ich hätte es auch ehrlich gesagt lieber in VBA, aber vielleicht kann ich mir aus den Formeln was abschauen.
Danke schon mal für Deine Mühe.
Viele Grüße
Michi

Anzeige
AW: Alle Summen-Kombinationen aus 1-n Zellen
18.07.2008 16:01:51
David
schau dir mal die hier an:
https://www.herber.de/bbs/user/53943.zip
diese ist noch auf 8 Zahlen ausgelegt. Wenn ich die auf 12 Zahlen aufbohre, brauche ich auf der Hilfstabelle zur Ermittlung der Kombinationen ca. 45 Tausend Zeilen. Ich hatte zunächst angefangen mit 15 Zahlen, hatte dann aber 24 Spalten á 65.500 Zeilen und die Datei war dann über 70 MB groß. Da hab ich dann aufgehört und bin wieder runter auf 12 Zahlen.
Gruß
David

Anzeige
AW: Alle Summen-Kombinationen aus 1-n Zellen
18.07.2008 16:20:00
mpb
Hallo,
nur noch mal zur Veranschaulichung: Die Zahl der Kombinationen ergibt sich bei n Summanden nach der Formel
2^n-1
und das heißt:
1 1
2 3
3 7
4 15
5 31
6 63
7 127
8 255
9 511
10 1023
11 2047
12 4095
13 8191
14 16383
15 32767
16 65535
17 131071
18 262143
19 524287
20 1048575
21 2097151
22 4194303
23 8388607
24 16777215
25 33554431
26 67108863
27 134217727
28 268435455
29 536870911
30 1073741823
Bei n=20 wird die Millionen-, bei n=30 die Milliardengrenze überschritten. Viel Spaß! ;-)
Gruß
Martin

Anzeige
AW: Alle Summen-Kombinationen aus 1-n Zellen
18.07.2008 18:17:13
Michi
Hallo David,
das ist genial. Ich hab jetzt das Prinzip verstanden und im VBA-Code ist das eigentlich dasselbe. Ich denk, damit kann ich auf jeden Fall weitermachen.
Vielen herzlichen Dank nochmal für Deine Unterstützung.
Schönes WE
Michi

AW: Alle Summen-Kombinationen aus 1-n Zellen
18.07.2008 15:50:00
David
Ich hab mich mal an einem rudimentären (also ohne Dim etc.) Makro versucht, um das Problem zu lösen. Vielleicht kann man was draus machen:

Sub kombi()
suchwert = Range("L1").Value
Count = 1
Range("A2:J100").ClearContents
If Cells(1, 1) = 0 Then a1 = 0 Else a1 = 1
If Cells(1, 2) = 0 Then b1 = 0 Else b1 = 1
If Cells(1, 3) = 0 Then c1 = 0 Else c1 = 1
If Cells(1, 4) = 0 Then d1 = 0 Else d1 = 1
If Cells(1, 5) = 0 Then e1 = 0 Else e1 = 1
If Cells(1, 6) = 0 Then f1 = 0 Else f1 = 1
If Cells(1, 7) = 0 Then g1 = 0 Else g1 = 1
If Cells(1, 8) = 0 Then h1 = 0 Else h1 = 1
If Cells(1, 9) = 0 Then i1 = 0 Else i1 = 1
If Cells(1, 10) = 0 Then j1 = 0 Else j1 = 1
For a = 0 To a1
For b = 0 To b1
For c = 0 To c1
For d = 0 To d1
For e = 0 To e1
For f = 0 To f1
For g = 0 To g1
For h = 0 To h1
For i = 0 To i1
For j = 0 To j1
summe = (Cells(1, 1) * a) + (Cells(1, 2) * b) + (Cells(1, 3) * c) + (Cells(1, 4) * d)  _
+ (Cells(1, 5) * e) + (Cells(1, 6) * f) + (Cells(1, 7) * g) + (Cells(1, 8) * h) + (Cells(1, 9) * i) + (Cells(1, 10) * j)
If summe = suchwert Then
Count = Count + 1
Cells(Count, 1) = Cells(1, 1) * a
Cells(Count, 2) = Cells(1, 2) * b
Cells(Count, 3) = Cells(1, 3) * c
Cells(Count, 4) = Cells(1, 4) * d
Cells(Count, 5) = Cells(1, 5) * e
Cells(Count, 6) = Cells(1, 6) * f
Cells(Count, 7) = Cells(1, 7) * g
Cells(Count, 8) = Cells(1, 8) * h
Cells(Count, 9) = Cells(1, 9) * i
Cells(Count, 10) = Cells(1, 10) * j
End If
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub


Gruß
David

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Alle Summen-Kombinationen aus 1-n Zellen berechnen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung: Stelle sicher, dass Du Excel (Versionshinweis: Excel 2010 oder höher empfohlen) geöffnet hast und die Daten in den Zellen eingetragen sind, die Du verwenden möchtest.

  2. VBA-Editor öffnen:

    • Drücke ALT + F11, um den Visual Basic for Applications (VBA)-Editor zu öffnen.
  3. Neues Modul erstellen:

    • Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  4. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Sub kombi()
       Dim suchwert As Double
       Dim Count As Long
       Dim summe As Double
       Dim a1, b1, c1, d1, e1, f1, g1, h1, i1, j1 As Integer
    
       suchwert = Range("L1").Value
       Count = 1
       Range("A2:J100").ClearContents
    
       ' Überprüfen der Zellen
       a1 = IIf(Cells(1, 1) = 0, 0, 1)
       b1 = IIf(Cells(1, 2) = 0, 0, 1)
       c1 = IIf(Cells(1, 3) = 0, 0, 1)
       d1 = IIf(Cells(1, 4) = 0, 0, 1)
       e1 = IIf(Cells(1, 5) = 0, 0, 1)
       f1 = IIf(Cells(1, 6) = 0, 0, 1)
       g1 = IIf(Cells(1, 7) = 0, 0, 1)
       h1 = IIf(Cells(1, 8) = 0, 0, 1)
       i1 = IIf(Cells(1, 9) = 0, 0, 1)
       j1 = IIf(Cells(1, 10) = 0, 0, 1)
    
       ' Schleifen für Kombinationen
       For a = 0 To a1
           For b = 0 To b1
               For c = 0 To c1
                   For d = 0 To d1
                       For e = 0 To e1
                           For f = 0 To f1
                               For g = 0 To g1
                                   For h = 0 To h1
                                       For i = 0 To i1
                                           For j = 0 To j1
                                               summe = (Cells(1, 1) * a) + (Cells(1, 2) * b) + (Cells(1, 3) * c) + (Cells(1, 4) * d) + (Cells(1, 5) * e) + (Cells(1, 6) * f) + (Cells(1, 7) * g) + (Cells(1, 8) * h) + (Cells(1, 9) * i) + (Cells(1, 10) * j)
                                               If summe = suchwert Then
                                                   Count = Count + 1
                                                   Cells(Count, 1) = Cells(1, 1) * a
                                                   Cells(Count, 2) = Cells(1, 2) * b
                                                   Cells(Count, 3) = Cells(1, 3) * c
                                                   Cells(Count, 4) = Cells(1, 4) * d
                                                   Cells(Count, 5) = Cells(1, 5) * e
                                                   Cells(Count, 6) = Cells(1, 6) * f
                                                   Cells(Count, 7) = Cells(1, 7) * g
                                                   Cells(Count, 8) = Cells(1, 8) * h
                                                   Cells(Count, 9) = Cells(1, 9) * i
                                                   Cells(Count, 10) = Cells(1, 10) * j
                                               End If
                                           Next
                                       Next
                                   Next
                               Next
                           Next
                       Next
                   Next
               Next
           Next
       End Sub
  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle das Makro „kombi“ aus und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Fehler: "Typ nicht definiert"

    • Ursache: Stelle sicher, dass alle Variablen im Code richtig deklariert sind.
  • Problem: Makro funktioniert nicht für mehr als 10 Zellen

    • Lösung: Erweitere den Code, indem Du weitere Schleifen hinzufügst oder die Anzahl der verwendeten Zellen anpasst.
  • Lösung: Falsche Ergebnisse

    • Überprüfe, ob die Eingabewerte in den Zellen korrekt sind und keine leeren Zellen existieren.

Alternative Methoden

  • Formellösungen: Für kleinere Fallzahlen (bis 12 Zellen) kannst Du auch Formeln verwenden, um alle Kombinationen zu berechnen. Beispielsweise kannst Du mit =SUMMEWENN(...) arbeiten, um spezifische Summen zu ermitteln.

  • Excel-Add-Ins: Es gibt Add-Ins, die speziell für das Berechnen von Kombinationen entwickelt wurden. Diese könnten eine gute Alternative sein, wenn Du nicht programmieren möchtest.


Praktische Beispiele

  • Beispiel für 3 Zellen: Angenommen, in den Zellen A1 bis A3 stehen die Werte 1, 2 und 3. Mit dem obigen Code kannst Du alle Kombinationen der Summen aus diesen drei Zellen berechnen.

  • Beispiel für 4 Zellen: Wenn Du in Zellen A1 bis A4 die Werte 2, 4, 6 und 8 hast, kannst Du mit dem Makro berechnen, wie viele Kombinationen aus 2, 3 oder 4 Zahlen möglich sind, die eine bestimmte Summe ergeben.


Tipps für Profis

  • Optimierung des Codes: Versuche, Schleifen zu minimieren, indem Du rekursive Funktionen nutzt, um die Effizienz zu steigern.

  • Verwende Arrays: Anstatt direkt auf die Zellen zuzugreifen, speichere die Werte in einem Array. Das kann die Ausführungsgeschwindigkeit erheblich verbessern.

  • Grenzen setzen: Wenn Du mit großen Datenmengen arbeitest, setze eine Obergrenze für die Anzahl der Werte, um lange Laufzeiten zu vermeiden.


FAQ: Häufige Fragen

1. Wie viele Kombinationen gibt es bei 4 Zahlen? Es gibt insgesamt 15 Kombinationen bei 4 Zahlen, die mit der Formel 2^n - 1 berechnet werden können.

2. Kann ich auch Kombinationen aus 3 Zahlen in Excel auflisten? Ja, Du kannst die Kombinationen berechnen, indem Du den VBA-Code anpasst oder mit Formeln arbeitest, die speziell für 3 Zahlen ausgelegt sind.

3. Wie kann ich eine Tabelle möglicher Summen erstellen? Die Tabelle kann manuell erstellt werden, indem Du die Ergebnisse der Kombinationen zusammenfasst, oder Du nutzt eine Pivot-Tabelle, um die Daten dynamisch darzustellen.

4. Gibt es eine Möglichkeit, die Berechnung zu beschleunigen? Ja, indem Du die Anzahl der Schleifen minimierst und Arrays verwendest, kannst Du die Performance verbessern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige