Hi Hajo,
sofern mein Code stimmt ist es nicht lösbar 33mal 4er Gruppen aus den 1680 Möglichkeiten zu bilden. Da ich die Zusammenstellung zufällig erzeugen lasse kommen immer andere Ergebnisse, aber alle sind ähnlich.
Mal ein Beispiel, wo 32 Kombinationen erzeugt wurden, das Schwankt immer um die paarunddreißig, aber 33 wird nie erreicht und alle 1680 Möglichkiten wurden überprüft. (Code steht nachstehend)
Tabellenblattname: Tabelle1
C D E F
1 ghde a 17 17
2 bgda b 16 17
3 hbce c 17 17
4 cfge d 16 16
5 acde e 15 16
6 bgfh f 15 17
7 cgah g 16 16
8 cahg h 16 16
9 dhea Ist maximal
10 gdha
11 agfe
12 bhgf
13 cbfd
14 dfgc
15 hcbd
16 gdef
17 dach
18 dcea
19 adef
20 bdce
21 ebhd
22 fdga
23 dhbg
24 abhc
25 hgac
26 gcbf
27 hcef
28 hbac
29 befc
30 bgfa
31 aebf
32 ebfa
Wie man aus F1:F8 herauslesen kann dürfen a,b,c,f 17mal und d,e,g,h 16mal benutz werden. In E1:E8 steht wie oft sie schon benutzt wurden.
Die noch fehlende 33te Kombination müßte aus b,e, und 2mal f bestehen, aber das ist ja nicht erlaubt Buchstaben doppelt zu benutzen. Ergo, Aufgabe nicht lösbar.
Gruß
Reinhard
Option Explicit
Sub acht()
Dim a As Byte, b As Byte, c As Byte, d As Byte, Wort$, zei As Long, z%
Dim Wort16$, Wort17$, anz(110, 1) As Byte, Summe%, n As Integer, okay As Boolean
Dim p1, p2, nn
Application.ScreenUpdating = False
Range("A1:C1680").ClearContents
For a = 97 To 104
For b = 97 To 104
For c = 97 To 104
For d = 97 To 104
Wort$ = Chr(a) & Chr(b) & Chr(c) & Chr(d)
If pruef(Wort$, a) = True And pruef(Wort$, b) = True And pruef(Wort$, c) = True And pruef(Wort$, d) = True Then
zei = zei + 1
Cells(zei, 1) = Wort$
End If
Next d
Next c
Next b
Next a
zei = 0
While 1
zei = zei + 1
If zei = 1681 Then GoTo ende
weiter:
Randomize
z = Int(Rnd() \* 1680) + 1
If Cells(z, 2) "" Then GoTo weiter
Cells(z, 2) = zei
Wend
ende:
Range("A1:B1680").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, \_
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Application.ScreenUpdating = True
Columns(2).ClearContents
Wort16$ = [A1]
Wort17$ = "abcdefgh"
For zei = 1 To 4
Wort17$ = Replace(Wort17$, Mid(Wort16$, zei, 1), "")
Next zei
For zei = 1 To 8
If zei