AW: Zufallszahlen...
17.10.2012 18:15:33
Matze,Matthias
Hallo Anne,
Mache eine Neue Datei und füge dieses Makro von Nonet in ein neues VBA Modul ein.
Es generiert in Jeder Spalte 6 Zufallslottozahlen.
Zeile 8 ( dient zur Kontrolle - muss immer eine 6 stehen)
Plus eine Auswertung wie oft Jede Zahl vorkommt.
Option Explicit
Sub Lotto6aus49OhneDupletten()
'01.09.2009, NoNet - www.excelei.de
Dim intZahlen(1 To 49) As Integer, dblMisch(1 To 49) As Double
Dim intGezogen(1 To 49)
Dim intS As Integer, intT As Integer
Dim dblX As Double, intY As Integer, intZiehung As Integer
For intZiehung = 1 To 50 'Anzahl der Ziehungen bitte anpassen !!
For intT = LBound(intZahlen) To UBound(intZahlen)
'Zufallszahl zum Mischen der Grundzahlen und Verhindern von Dupletten :
dblMisch(intT) = Rnd()
intZahlen(intT) = intT
If intZiehung = 1 Then intGezogen(intT) = 0
Next
'Grundzahlen nach Zufallszahlen sortieren
For intS = LBound(intZahlen) To UBound(intZahlen)
For intT = 1 To intS
If dblMisch(intS) > dblMisch(intT) Then
intY = intZahlen(intS)
intZahlen(intS) = intZahlen(intT)
intZahlen(intT) = intY
dblX = dblMisch(intS)
dblMisch(intS) = dblMisch(intT)
dblMisch(intT) = dblX
End If
Next
Next
'Gezogene Zahlen aufaddieren (Merken, wie häufig welche Zahlen gezogen wurden) :
For intS = 1 To 6
intGezogen(intZahlen(intS)) = intGezogen(intZahlen(intS)) + 1
Next
'6 Zufallszahlen anzeigen
Cells(1, intZiehung).Resize(6) = Application.Transpose(intZahlen())
'Diese Funktion in Zeile 8 dient der Kontrolle : muss immer 6 ergeben !
Cells(8, intZiehung).FormulaArray = "=SUM(1/COUNTIF(R[-7]C:R[-2]C,R[-7]C:R[-2]C))"
Next
'Ausgabe der Anzahl gezogener Zahlen :
[A10:B10] = Array("Zahl :", "Gezogen :") 'Überschriften
For intS = LBound(intZahlen) To UBound(intZahlen)
Cells(intS + 10, 1) = intS
Cells(intS + 10, 2) = intGezogen(intS)
Next
'Absteigend Sortieren nach Anzahl gezogener Zahlen :
[A11].CurrentRegion.Sort Key1:=Range("B11"), Order1:=xlDescending
Cells.Columns.AutoFit 'Spaltenbreiten automatisch anpassen
End Sub
Gruß Matze