Hallo,
wenn ich das richtig verstanden habe: Summe aus 10 zufällig ausgewählten Zellen in einer Spalte?
Wenn das so richtig wäre, folgt der Code:
Option Explicit
Option Base 1
'Code, der mir aus einer gegebenen Spalte zufällig eine Zelle auswählt, den Inhalt speichert und dann wieder zuällig eine Zelle auswählt
'und den neuen Inhalt mit dem Inhalt der Zelle davor addiert und wieder eine Zelle auswählt und den Inhalt dazu addiert zur Summe davor.
'Das ganze Prozedere wiederholt sich nach einer festgelegten Anzahl (z.B 10 mal).
'Hierbei ist aber immens wichtig, dass eine Zelle die bereits ausgewählt wurde nicht nochmal drankommt.
Const Spalte = 7
Const ZStart = 2 'erste belegte Zeile in Spalte
Const Anzahl = 10 'Anzahl der Wdhlg.
Dim Zeilen() As Long, Zend As Long, Zeile As Long
Sub AddZufall()
Dim i, Wert
Zend = Cells(Rows.Count, Spalte).End(xlUp).Row
If Zend - ZStart <= Anzahl Then
MsgBox "Mit diesen Parametern nicht möglich, Anzahl zu groß", vbCritical, "geht so nicht"
Exit Sub
End If
Randomize
Zeile = Int((Zend * Rnd) + ZStart)
ReDim Zeilen(1 To Anzahl)
Zeilen(1) = Zeile
Wert = Cells(Zeile, Spalte)
For i = 2 To Anzahl
Zeile = FindNewz
Zeilen(i) = Zeile 'Merken der zeile
Wert = Wert + Cells(Zeile, Spalte)
Next i
Cells(2, 8) = Wert
End Sub
Function FindNewz()
Dim erg As Boolean, z As Long, i
Do
erg = False
z = Int((Zend * Rnd) + ZStart)
For Each i In Zeilen
If i = z Then
erg = True
Randomize
Exit For
End If
Next i
Loop Until Not erg
FindNewz = z
End Function
Gruß der AlteDresdner
|