OT 6 aus 49 Kombinationen
Hallo Rainer,
3.246.243 Kombination mit mindest einmal den Fall daß zwei
Zahlen aufeinanderfallen
Nicht korrekt. Du hast c+1, d+1, e+1 weg gelassen.
Upssala, Freudscher Fehler, ich wollte den Code schnell machen 
Wenn Du die Prüfung ausgeweitet hast, gib das Ergebnis mal in
% aus. 
Mach ich noch.
Das sagt so viel über den Zufall aus und die Abweichung
unserer Sicht, was wir noch für zufällig halten, und was nicht
… Ich denke, Jeder würde sich da verschätzen. 
Apropos verschätzen, Excelformeln sind (sollen sein) bis zu 10.000mal schneller als Vba, demzufolge auch als Vb *mutmaß*, gerade dann wenn man in Schleifen Zellen abklappert.
In http://excelformeln.de/formeln.html?welcher=346 ist da ein Beispiel für 3 aus 6 bzw. 4 aus 6.
Meine Idee war nun dies für 6 aus 49 zu erweitern. d.h. per Vba die Formeln in Zeile 2 einzutragen, dann mit Filldown nach unten zu kopieren, alles sehr schnelle Befehle und dann wie in dem anderen Beispiel unten mit Zählenwenn auszuwerten.
dann wurde ich aber darauf gestoßen daß das gewaltig viele zellen gibt und ich dann knapp 6 Blätter voller Formeln bräuchte. Bei einer Formellänge von geschätzten 20 Bytes gibt das pro Blatt schonmal 336 MB.
Ich glaub das verschiebe ich bis ich Excel2007 habe, das hat 1 Mio Zeilen und ist vielleicht fixer im Berechnen des Blattes 
Die andere Idee kam mir vorhin und ich habe sie mal für 2 aus 9 durchgespielt. Und ich sehe da deutlich in Spalte K eine Regelmäßigkeit, die man nur im VB-Code nachbilden müßte und so ist meine Arbeitsthese, dies müte/könnte dann schneller sein als in Schleifen alles durchzugehen.
Das Dumme an den Kombinationen ist, daß es so viele werden bei z.B. 6 aus 49. Das fängt schon an daß man auf Strings ausweichen muß um sowas darzustellen:
010203040506
010203040507
010203040508
010203040509
und Strings machen den Code leider langsam:frowning:
Tabellenblatt: [Mappe2]!Tabelle1
│ J │ K │ L │ M │
───┼────┼────┼────────┼───┤
1 │ 12 │ │ WAHR │ 8 │
───┼────┼────┼────────┼───┤
2 │ 13 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
3 │ 14 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
4 │ 15 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
5 │ 16 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
6 │ 17 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
7 │ 18 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
8 │ 19 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
9 │ 23 │ 4 │ WAHR │ │
───┼────┼────┼────────┼───┤
10 │ 24 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
11 │ 25 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
12 │ 26 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
13 │ 27 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
14 │ 28 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
15 │ 29 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
16 │ 34 │ 5 │ WAHR │ │
───┼────┼────┼────────┼───┤
17 │ 35 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
18 │ 36 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
19 │ 37 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
20 │ 38 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
21 │ 39 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
22 │ 45 │ 6 │ WAHR │ │
───┼────┼────┼────────┼───┤
23 │ 46 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
24 │ 47 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
25 │ 48 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
26 │ 49 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
27 │ 56 │ 7 │ WAHR │ │
───┼────┼────┼────────┼───┤
28 │ 57 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
29 │ 58 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
30 │ 59 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
31 │ 67 │ 8 │ WAHR │ │
───┼────┼────┼────────┼───┤
32 │ 68 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
33 │ 69 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
34 │ 78 │ 9 │ WAHR │ │
───┼────┼────┼────────┼───┤
35 │ 79 │ 1 │ FALSCH │ │
───┼────┼────┼────────┼───┤
36 │ 89 │ 10 │ WAHR │ │
───┴────┴────┴────────┴───┘
Benutzte Formeln:
K2 : =J2-J1
nach unten kopieren bis
K36: =J36-J35
L1 : =WENN(WERT(TEIL(J1;1;1)+1)=WERT(TEIL(J1;2;1));WAHR;FALSCH)
nach unten kopieren bis
L36: =WENN(WERT(TEIL(J36;1;1)+1)=WERT(TEIL(J36;2;1));WAHR;FALSCH)
M1 : =ZÄHLENWENN(L1:L36;WAHR)
J1:M36
haben das Zahlenformat: Standard
Tabellendarstellung erreicht mit dem Code in FAQ:2363
Während ich dies hier schrieb hab ich mir doch mal gedacht teste ich doch mal was schneller ist, zumindest bei 2 aus 9 ist die Schleifenvariante mehrfach schneller als die Werte zu berechnen.
Option Explicit
'
Sub nn1()
Dim a, b, n
For a = 1 To 8
For b = a + 1 To 9
If a + 1 = b Then n = n + 1
Next b
Next a
'MsgBox n
End Sub
'
Sub nn2()
Dim a, b, n, s, s2, z
s = 11
s2 = 4
For a = 8 To 1 Step -1
For b = 1 To a + (s \> 19) \* 1
s = s + 1
If CInt(Left(s, 1)) + 1 = CInt(Right(s, 1)) Then n = n + 1
'z = z + 1
'Cells(z, 9) = s
Next b
s = s + s2
If CInt(Left(s, 1)) + 1 = CInt(Right(s, 1)) Then n = n + 1
'z = z + 1
'Cells(z, 9) = s
s2 = s2 + 1
Next a
'MsgBox n
End Sub
'
Sub test()
Dim n
Static T As Double
T = Timer
For n = 1 To 10000
Call nn1
Next n
MsgBox Timer - T
T = Timer
For n = 1 To 10000
Call nn2
Next n
MsgBox Timer - T
End Sub
Gruß
Reinhard