Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
928to932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
928to932
928to932
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

kombination aus bestimmten zahlen

kombination aus bestimmten zahlen
01.12.2007 22:09:59
yusuf
hallo zusammen,
ich bräuchte ein code der mir alle kombinationen von selbst ausgesuchten zahlen anzeigt. Dabei will ich einen 3`er kombination von 20 zahlen die ich aus 0-100 selbst aussuche.
Würde mich freuen wenn ihr mir weiterhelfen könntet, da ich selber nichts von vba verstehe und bedanke mich für Eure Bemühungen
mfg
yusuf

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kombination aus bestimmten zahlen
02.12.2007 15:15:18
Harry
Hallo Yusuf,
du willst aus 101 Zahlen manuell 20 auswählen, das Programm soll dir alle 6.840 Dreier-Kombinationen dieser 20 Zahlen anzeigen und du willst dir davon eine Kombination manuell auswählen?
Prinzipiell umsetzbar, aber macht sowas einen Sinn? Bitte kurz erläutern, was du genau willst, dann kann da vielleicht etwas simpleres draus machen.
Gruß
Harry

AW: kombination aus bestimmten zahlen
02.12.2007 15:34:40
Daniel
Hi
mal ne Frage, muss es VBA sein, oder darf man das auch mit Excel-Formeln lösen.
schau dir mal das beispiel an, für 20 Werte musst du nur die Formeln entsprechend weit nach unten kopieren:
https://www.herber.de/bbs/user/48177.xls
Gruß, Daniel

Anzeige
AW: kombination aus bestimmten zahlen
02.12.2007 17:28:57
yusuf
hallo daiel und harry,
vielen dank das ihr mir helfen wollt. daniel ich habe mir die formel angeschaut, die scheint super zu sein aber eine ausgesuchte zahl darf sich nicht in wert 2 und wert 3 wiederholen.
nehmen wir an ich nehme die zahlen 8, 15, 23, 26, 32, 39, 45, 50, 52, 58, 62, 68, 75 ausgesucht. dann müssten ja die ersten möglichkeiten:
8 15 23
8 15 26
8 15 32
8 15 39 usw. heißen. genau so ein code oder formel brauche ich. wäre dankbar für jede hilfe
mfg
yusuf

AW: kombination aus bestimmten zahlen
02.12.2007 17:31:09
yusuf
hallo daiel und harry,
vielen dank das ihr mir helfen wollt. daniel ich habe mir die formel angeschaut, die scheint super zu sein aber eine ausgesuchte zahl darf sich nicht in wert 2 und wert 3 wiederholen.
nehmen wir an ich nehme die zahlen 8, 15, 23, 26, 32, 39, 45, 50, 52, 58, 62, 68, 75 ausgesucht. dann müssten ja die ersten möglichkeiten:
8 15 23
8 15 26
8 15 32
8 15 39 usw. heißen. genau so ein code oder formel brauche ich. wäre dankbar für jede hilfe
mfg
yusuf

Anzeige
AW: kombination aus bestimmten zahlen
02.12.2007 18:06:00
Daniel
Hi
ok, wenn jeder Wert nur 1x vorkommen darf, gehts vielleicht doch mit Makro einfacher
Gruß, Daniel
der Button startet das Makro
https://www.herber.de/bbs/user/48179.xls

ich komme nicht klar
03.12.2007 01:33:29
yusuf
hallo daniel,
vielen dank für deine hilfe. ohne euch würde ich echt dumm aus der wäsche kucken, was ich schon mache.
aber ich habe versucht die tabelle und den makro zu kopieren. die tabelle wird ohne die formel kopiert und wenn ich den makro ausführen will kommt eine fehlermeldung "laufzeitfehler 1004".
wie muß ich vorgehen?
sag mir bitte auch wie ich nicht nur 3`er , sondern auch 4`er und 5`er kombinationen machen kann oder ist doch die formel besser gewesen.
mfg
yusuf

Anzeige
jetzt habe ich es geschafft
03.12.2007 01:37:00
yusuf
hallo noch mal,
ich habe es geschafft. ich habe die datei nicht gespeichert und wollte es direkt öffnen. das ist geil, ich bin immer wieder begeistert von solchen menschen wie euch.
VIELEN, VIELEN DANK
mfg
yusuf

jetzt habe ich es geschafft
03.12.2007 01:38:00
yusuf
hallo noch mal,
ich habe es geschafft. ich habe die datei nicht gespeichert und wollte es direkt öffnen. das ist geil, ich bin immer wieder begeistert von solchen menschen wie euch.
VIELEN, VIELEN DANK
mfg
yusuf

eins noch
03.12.2007 01:47:00
yusuf
hallo daniel,
kannst du mir auch bitte den code für einen 6`er kombination geben, bedingungen sind die gleichen.
vielen dank es funzt super
mfg
yusuf

Anzeige
AW: eins noch
03.12.2007 19:30:00
Daniel
Hi
naja, den Code kannst du dir jetzt doch selber erstellen!
du musst halt anstelle von 3 jetzt 6 Schleifen ineinanderschachteln.
und an 2 Stellen noch änderungen einfügen:

ReDim Erg(1 To Anz * (Anz - 1) * (Anz - 2), 1 To 6)


in dem Fett gedruckten Formelteil wird die Anzahl der möglichen kombinationen berechnet, daß musst du hier für 6 Kombinationen erweitern (die Logik dahinter ist hoffentlich klar)
und an dieser Stelle


If Not (i = j Or i = k Or k = j) Then


musst du es noch so erweitern, daß du alle 6 Werte prüfst, ob nicht einer gleich ist:
Gruß, Daniel

Anzeige
es klappt nicht
04.12.2007 00:52:13
yusuf
hallo daniel,
es tut mir leid, aber ich komme irgendwie nicht klar. ich habe versucht den code um zuschreiben. ich würde es dir gerne zeigen. sag mir doch bitte den fehler den ich mache.
hier der versuch, den code um zuschreiben.

Sub test()
Dim Zahlen
Dim Anz As Long
Dim i As Long, j As Long, k As Long, l As Long, m As Long, n As Long
Dim Zeile As Long
Dim Erg
Anz = Range("Anz")
ReDim Erg(1 To Anz * (Anz - 1) * (Anz - 2) * (Anz - 3) * (Anz - 4) * (Anz - 5) * (Anz - 6), 1  _
To 6)
Zahlen = Range("Zahlenliste").Resize(Anz, 1)
Zeile = 0
Range("C:H").ClearContents
For i = 1 To Anz
Application.StatusBar = "Bearbeitet: " & Format(i / Anz, "0%")
For j = 1 To Anz
For k = 1 To Anz
For l = 1 To Anz
For m = 1 To Anz
For n = 1 To Anz
If Not (i = j Or i = k Or i = l Or i = m Or i = n Or n) Then
Zeile = Zeile + 1
Erg(Zeile, 1) = Zahlen(i, 1)
Erg(Zeile, 2) = Zahlen(j, 1)
Erg(Zeile, 3) = Zahlen(k, 1)
Erg(Zeile, 4) = Zahlen(l, 1)
Erg(Zeile, 5) = Zahlen(m, 1)
Erg(Zeile, 6) = Zahlen(n, 1)
End If
Next
Next
Next
Cells(1, 6).Resize(UBound(Erg, 1), UBound(Erg, 2), UBound(Erg, 3), UBound(Erg, 4), UBound(Erg,  _
5)) = Erg
Application.StatusBar = False
End Sub


du wirst jetzt bestimmt den kopf schütteln, aber besser kriege ich es nicht hin.
mfg
yusuf

Anzeige
AW: es klappt nicht
04.12.2007 01:14:45
Daniel
Hi
also mal Fehler eins:
bei der Berechnung der Dimensionierung ist ein Faktor zu viel drin, du rechnest mit 7, brauchst aber nur 6, dh (Anz-6) kann entfallen

ReDim Erg(1 To Anz * (Anz - 1) * (Anz - 2) * (Anz - 3) * (Anz - 4) * (Anz - 5) * (Anz - 6)
, 1  To 6)


Fehler zwei liegt hier:


Cells(1, 6).Resize(UBound(Erg, 1), UBound(Erg, 2), UBound(Erg, 3), UBound(Erg, 4), UBound(Erg,   _
_
5)) = Erg


Erg ist nur ein 2 Dimensionalse Feld (egal, mit vielen Werten du rechnest, und wir müssen nur den Zellbeeich, in den wir ERG zurückschreiben wollen, genauso gross machen, wie ERG: dh. das hier reicht:


Cells(1, 6).Resize(UBound(Erg, 1), UBound(Erg, 2)) = Erg


das eigentliche Problem ist diese Zeile:


If Not (i = j Or i = k Or i = l Or i = m Or i = n Or n) Then


hier müsstset du jeden Schleifenzähler miteinder vergleichen, denn die Kombinationen sollen ja nur zurückgeschrieben werden, wenn jeder der Zähler einen anderen Wert hat.
insgesamt müsstest du bei 6 Werten 15 Vergleichsoperationen haben, von denen keiner gleich sein darf.
da bin ich jetzt auch etwas überfragt, das wird dann wohl etwas aufwendiger.
Gruß Daniel

Anzeige
Fehler beim Kompilieren
04.12.2007 23:00:06
yusuf
hallo nochmal,
es tut mir leid, ich werde lästig ich weiß. Aber bitte nur noch dieses.
das ist jetzt der code den ich korrigiert habe.

Sub test()
Dim Zahlen
Dim Anz As Long
Dim i As Long, j As Long, k As Long, l As Long, m As Long, n As Long
Dim Zeile As Long
Dim Erg
Anz = Range("Anz")
ReDim Erg(1 To Anz * (Anz - 1) * (Anz - 2) * (Anz - 3) * (Anz - 4) * (Anz - 5), 1 To 6)
Zahlen = Range("Zahlenliste").Resize(Anz, 1)
Zeile = 0
Range("C:H").ClearContents
For i = 1 To Anz
Application.StatusBar = "Bearbeitet: " & Format(i / Anz, "0%")
For j = 1 To Anz
For k = 1 To Anz
For l = 1 To Anz
For m = 1 To Anz
For n = 1 To Anz
If Not (i = j Or i = k Or i = l Or i = m Or i = n Or n) Then
Zeile = Zeile + 1
Erg(Zeile, 1) = Zahlen(i, 1)
Erg(Zeile, 2) = Zahlen(j, 1)
Erg(Zeile, 3) = Zahlen(k, 1)
Erg(Zeile, 4) = Zahlen(l, 1)
Erg(Zeile, 5) = Zahlen(m, 1)
Erg(Zeile, 6) = Zahlen(n, 1)
End If
Next
Next
Next
Cells(1, 6).Resize(UBound(Erg, 1), UBound(Erg, 2)) = Erg
Application.StatusBar = False
End Sub


Jetzt kommt die Fehlermeldung "Fehler beim Kompilieren: For ohne Next" und die letzte Zeile "End Sub

" wird markiert.
Kennst du das Problem.
mfg
yusuf

Anzeige
laufzeitfehler 9
04.12.2007 23:15:00
yusuf
hi,
das mit dem for ohne next habe ich geschafft. hier der code:

Sub test()
Dim Zahlen
Dim Anz As Long
Dim i As Long, j As Long, k As Long, l As Long, m As Long, n As Long
Dim Zeile As Long
Dim Erg
Anz = Range("Anz")
ReDim Erg(1 To Anz * (Anz - 1) * (Anz - 2) * (Anz - 3) * (Anz - 4) * (Anz - 5), 1 To 6)
Zahlen = Range("Zahlenliste").Resize(Anz, 1)
Zeile = 0
Range("C:H").ClearContents
For i = 1 To Anz
Application.StatusBar = "Bearbeitet: " & Format(i / Anz, "0%")
For j = 1 To Anz
For k = 1 To Anz
For l = 1 To Anz
For m = 1 To Anz
For n = 1 To Anz
If Not (i = j Or i = k Or i = l Or i = m Or i = n Or n) Then
Zeile = Zeile + 1
Erg(Zeile, 1) = Zahlen(i, 1)
Erg(Zeile, 2) = Zahlen(j, 1)
Erg(Zeile, 3) = Zahlen(k, 1)
Erg(Zeile, 4) = Zahlen(l, 1)
Erg(Zeile, 5) = Zahlen(m, 1)
Erg(Zeile, 6) = Zahlen(n, 1)
End If
Next
Next
Next
Next
Next
Next
Cells(1, 6).Resize(UBound(Erg, 1), UBound(Erg, 2)) = Erg
Application.StatusBar = False
End Sub


Aber jetzt ein anderes problem. in der zeile die fett markiert ist, ist glaube ich ein fehler. Beim abspielen kommt jetzt der fehler "laufzeitfehler 9: index außerhalb des gültigen bereichs". beim debuggen wird dann die oben genannte zeile markiert.
hilf mir bitte.
mfg
yusuf

Anzeige
AW: laufzeitfehler 9
04.12.2007 23:40:00
Daniel
Hi
nein, kleiner Irrtum, der Fehler liegt wo anders
in der Redim-Zeile legst du die Grösse des Arrays fest, dh. du kannt nur soviele Werte reinschreiben, wie du hier angibst.
die Anzahl der möglichen Werte wird innerhalb der ReDim - Anweisung berechnet, und zwar mit der Formel:

Anz * (Anz - 1) * (Anz - 2) * (Anz - 3) * (Anz - 4) * (Anz - 5)

genau so gross, wie es bei 6 Werten Kombinationsmöglichkeiten gibt, wenn jeder Wert nur GENAU EINMAL vorkommen darf.
deine Prüfvorschrift


If Not (i = j Or i = k Or i = l Or i = m Or i = n Or n) Then


ist aber nicht ausreichend , dh sie lässt noch Kombinatioinen zu, in denen Werte mehrfach vorkommen, dh du bekommst irgendwann mehr Werte, als du in der Dimensionierung berechnet hast.
du müsstest hier die Prüfung so anpassen, daß nur die gewünschten Kombinationen durchkommen.
allerdings solltest du auch bedenken, daß du bei 20 Werten mit 6 Kombinationen 27.907.200 verschiedene möglichkeiten hast (wenn kein Wert dopplelt vorkommt)
Selbst wenn du wirklich jede Zelle von 65536 Zeilen * 256 Spalten ausnützen würdest, brauchst du 8 Blätter, um das Ergebnis darzustellen.
Sorry, aber da ist speicherplatztechnisch einfach GAME OVER
Gruß, Daniel

vielen dank
05.12.2007 22:12:00
yusuf
hallo daniel,
vielen dank für deine hilfe und deine geduld. es tut mir leid aber ich gebe auf. jetzt habe ich die fehler korrigiert die du mir gezeigt hast und jetzt bringt er die selbe fehlermeldung und diesmal in der zeile:
laufzeitfehler 9 / index außerhalb des gültigen bereichs
Erg(Zeile, 1) = Zahlen(i, 1)
es wiederholt die kombinationen die nicht sein dürfen 1,2,3, dann 1,3,2/2,1,3/2,3,1/3,1,2/3,2,1 an. das sind 5 kombinationen zu viel mit den selben zahlen. bloß die stellen sind vertauscht. die dürften sich nicht wiederholen. die 1,2,3 dürfte nie wieder vorkommen egal in welcher reihenfolge und deswegen spuckt er bei deiner berechnung von 6 aus 20 27.000.000 kombinationen aus. wenn wir von lotto ausgehen sind es nur 14.000.000 möglichkeiten und das von 6 aus 49.
ich weiß nicht ob du noch die lust hast mir zu helfen, aber auf jeden fall bedanke ich mich ganz herzlich für deine hilfe.
mfg
yusuf

8 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige