AW: Danke!
05.12.2012 11:56:09
bst
Nochmals Hallo,
wenn Du das unabhängig von n und k brauchst lässt sich das auch machen.
Dieses hier - aus einer 'Sammlung' kopiert ;-) - erstellt z.B. die Liste der gezogenen Topf-Nummern in Spalte A.
Um daraus die Anzahl der Kugel je Topf zu erhalten müsste man den Code anpassen oder aber danach einfach noch Excel-Formeln benutzen:
B1: =LÄNGE($A1)-LÄNGE(WECHSELN($A1;SPALTE(A1);""))
nach B1:E84 kopieren.
HTH, Bernd
--
Option Explicit
Private Const strDigits As String = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Sub KombinationenMitZuruecklegenString(ByVal n As Integer, ByVal k As Integer)
Dim ar() As String, lngSize As Long, s As String, i As Long
lngSize = WorksheetFunction.Combin(n - 1 + k, k)
ReDim ar(1 To lngSize, 1 To 1)
s = String(k, Left(strDigits, 1))
ar(1, 1) = s
For i = 2 To lngSize
ar(i, 1) = strIncRisingOrEqual(s, n, k, k)
Next
Range("A1").Resize(lngSize) = ar
End Sub
Function strIncRisingOrEqual(ByRef s As String, ByVal n As Integer, ByVal k As Integer, ByVal _
intSpalte As Integer) As String
Dim intVal As Integer, i As Integer
intVal = InStr(1, strDigits, Mid(s, intSpalte, 1), vbTextCompare)
If intVal
Sub Main()
Dim n As Integer, k As Integer, t As Single
n = 4
k = 6
t = Timer
KombinationenMitZuruecklegenString n, k
Debug.Print "String", Timer - t
End Sub