Wie erhält man eine Liste von Kombinationen, welche eine festgelegte Summe ergeben?
Hallo, wie erhält man eine Liste von Kombinationen, welche eine festgelegte Summe ergeben? Anforderungen: 1. Summe fix, kann einfach geändert werden 2. 5 Zahlen gesamt, welche die Summe ergeben sollen 3. Der Bereich der 5 Zahlen ist festgelegt auf 1 bis 50 4. Die Zahlen dürfen je Kombination nur 1x vor kommen
Gibt es was dafür..? - Formel, VBA, Programm, Tool? Im Idealfall sind Punkte 1-3 anpassbar..
Danke für eure Hilfe
3 Antworten
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
ich hab mal mein Lotto-Makro (vllt interessiert dich das ja auch) für diesen Zweck umgearbeitet und hänge mal beide Codes an. Bereiche:
AA6:AA12 ist Lotto6undZusatzZaus49
AA6:AA10 ist ZufZSum
Komisch, ich kann (schon wieder mal) keine Makrokopien mehr einfügen. Das Bild ist schon drin, ich muss wahrscheinlich abfahren und dann wieder öffnen und das in einem Kommentar nachschicken!
![Excel-Makro für zweierlei Zufallszahlen - (Programm, rechnen, Microsoft Excel)](https://images.gutefrage.net/media/fragen-antworten/bilder/162458639/0_big.jpg?v=1431298566000)
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
neuer Versuch, im Ganzen wieder nicht, deshalb zeilenweise: EIN größer als-Zeichen (<, verwende ich in Kommentaren als Pfeil nach links) verhindert EINFÜGEN IN GF! (geschrieben gehts)
Sub Lotto6aus49uZusZ()
Dim c, Cell, Zahl 'Sicherung: Bereichsname Lotto6undZusatzZaus49, 11f01 in BlattT2, ggf Lotto...-Bereich suchen!
Range("Lotto6undZusatzZaus49").ClearContents
For Each c In Range("Lotto6undZusatzZaus49")
neueZahl:
Zahl = Int(Rnd() * 49) + 1 '< +1 verhindert aber Null! Für Roulette entfernen!
For Each Cell In Range("Lotto6undZusatzZaus49")
'muss andere Steuervariable als c sein!
If Cell.Value = Zahl Then GoTo neueZahl
Next
c.Value = Zahl
Next
End Sub
Sub Zufalls5ZsumBegrenzt()
Dim Za
Range("Lotto6undZusatzZaus49").ClearContents
Erste:
Range("ZufZSum").Cells(1) = Int(Rnd() * (49 - 1 - 2 - 3 - 4 - 5)) + 1 'mit 49 alleine könnte 0 entstehen, 49)+1 testen!
Zweite:
Za = Int(Rnd() * (49 - Range("ZufZSum").Cells(1) - 1 - 2 - 3 - 4)) + 1
If Za = Range("ZufZSum").Cells(1) Then GoTo Zweite
Range("ZufZSum").Cells(2) = Za
Dritte:
Za = Int(Rnd() * (49 - Range("ZufZSum").Cells(1) - Range("ZufZSum").Cells(2) - 1 - 2 - 3)) + 1
If Za = Range("ZufZSum").Cells(1) Or Za = Range("ZufZSum").Cells(2) Then GoTo Dritte
Range("ZufZSum").Cells(3) = Za
Vierte:
Range("ZufZSum").Cells(4).ClearContents
Za = Int(Rnd() * (49 - Range("ZufZSum").Cells(1) - Range("ZufZSum").Cells(2) - Range("ZufZSum").Cells(3) - 1 - 2)) + 1
If Za = Range("ZufZSum").Cells(1) Or Za = Range("ZufZSum").Cells(2) Or Za = Range("ZufZSum").Cells(3) Then GoTo Vierte
Range("ZufZSum").Cells(4) = Za
Za = 50 - Application.WorksheetFunction.Sum(Range("ZufZSum"))
If Za = Range("ZufZSum").Cells(1) Or Za = Range("ZufZSum").Cells(2) Or Za = Range("ZufZSum").Cells(3) Or Za = Range("ZufZSum").Cells(4) Then GoTo Vierte
Range("ZufZSum").Cells(5) = Za
End Sub
So, das ging zwar mühsam, weil mit kopieren+einfügen die Umbrüche nicht rüberkommen, aber es ging.
Wenn Du die zwei Bereiche definiert hast (s. Hauptantwort), dann
korrigiere die Makronamen im gelben Bereich bzw rechts daneben (für die Funktion nicht essentiell, nur wg Stimmigkeit)
Kopiere den Code hier und füge ihn in ein neues Modulblatt ein (also keinesfalls in ein Worksheet-Modul!) und weise dann den beiden Schaltflächen (Lotto: Autoform 6-Eck-Fläche, 5summenbegrenzteZufallszahlen: normales Textfeld) je das entsprechende Makro zu.
Bedingte Formatierung sowohl für Lottozahlen wie auch für Ergebnisliste (Bereich Lotto6undZusatzZaus49)
T6: =ZÄHLENWENN(Lotto6undZusatzZaus49;T6)>0
wird angewendet auf: =$T$6:$Z$12
Die Sortierung in AC7 ist nur eine optische Erleichterung, die Bedingung fürs Bed.Format ist:
Zellwert=$AA$12, angewendet auf =$T$6:$Z$12
Am Ende verschiebszt Du alles gemeinsam an einen von Dir gewünschten Ort. Willst du das in einem anderen Blatt, dann nicht kopieren, sonden AUSSCHNEIDEN ond an gewünschter Stelle einfügen.
Viel Spass!
(nächste Hürde: zwischenzeitlich ausgeloggt :-((()
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Der gelbe Text braucht Dich nicht zu interessieren (Fragen und Planungen)
Ich verstehe nicht viel von Stochastik, stochere also mit der Zufallszahl im (Zahlen-)Nebel rum, Deine Bedingungen werden erfüllt, aber es gibt eine möglicherweise sehr ungleichmäßige Verteilung. (Weiß aber nicht, ob das überhaupt vermeidbar wäre.)
Das -1-2-3-4 im Faktor 50 von Zufallszahl resultiert daher, dass ja für die restlichen Zahlen noch MINDESTENS 1,2,3,4 an Platz bleiben muss. Könnte zu Widerspruch/Blockade führen, wenn 1,2,3,4, durch vorherige Zahl schon belegt waren, ich überseh es nicht ganz, probiers einfach aus.
@Max: danke für den Tipp, hab ihn mal notiert, will mich aber nicht nochwo anmelden mit der Folge von wahrscheinlich einer Kaskade von Werbemails.
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
Meinst Du, wenn die Summe zB 50 ist, Kombinationen wie 1 + 2 + 3 + 4 + 5 oder 8 + 9 + 10 + 11 + 12 usw. ?
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
Zahl der Permutationen von 5 Elementen ist 5! = 120.
Du wählst das 1. Zahl aus: 5 Möglichkeiten. Für die 2. Zahl bleiben 4 Möglichkeiten usw.
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
nein, das sind kombinationen ohne wiederholung von 50 elementen zu je 5. die formel dazu darfst du (stekum) raussuchen.
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
es geht einfach nicht, vllt morgen! (hatte das neulich schon mal, aber ich mag den Makrotext jetzt nicht einfach abtippen, der ist mir zu lang und das ist auch Fehler-anfällig!)