Zufallszahl

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Zufallszahl
von: Christoph Scheidiger
Geschrieben am: 22.04.2005 11:50:23
Hallo
Ich mcöhte x mal eine Zufallszahl zwischen 1 und x erzeugen, bei diesen x-Zahlen sollte jedoch niemals die selbe Zahl entstehen.
Kann mir einer von euch sagen wie ich das hinkriege?
Vielen Dank im Voraus!
Gruss Christoph

Bild

Betrifft: AW: Zufallszahl
von: Hajo_Zi
Geschrieben am: 22.04.2005 11:51:56
Hallo Christoph,
suche mal hier
http://www.excelformeln.de/uberuns.html
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.



"Wer Rechtschreibfehler findet, darf sie behalten!"
Bild

Betrifft: AW: Zufallszahl
von: Ramses
Geschrieben am: 22.04.2005 11:54:01
Hallo
Das sollte es sein
http://www.excelformeln.de/formeln.html?welcher=152
Gruss Rainer
Bild

Betrifft: AW: Zufallszahl
von: Christoph Scheidiger
Geschrieben am: 22.04.2005 11:59:48
Danke für die Antwort.
Aber ich brauche es in einem VBA-Code, kann mir jemand dabei helfen?
Gruss Christoph
Bild

Betrifft: AW: Zufallszahl
von: Ramses
Geschrieben am: 22.04.2005 12:02:31
Hallo
Nimm die Formel und setze sie per VBA in soviele Zellen wie du brauchst.
Ansonsten per rnd eine Zufallszahl erzeugen, prüfen ob sie im Bereich schon vorhanden ist, und ansonsten eine neue berechnen.
Gruss Rainer
Bild

Betrifft: AW: Zufallszahl
von: WernerB.
Geschrieben am: 22.04.2005 12:46:53
Hallo Christoph,
hier ein Beispiel für ganzzahlige Zufallszahlen zwischen 1 und 32 (der ursprüngliche Code stammt vom Forumsbetreiber Hans W. Herber):

Sub ZufallsZahl()
Dim c As Range, Ber1 As Range, Ber2 As Range, _
    ZuZ As Byte
    Set Ber1 = Range("B1:B32")
    Ber1.ClearContents
    For Each c In Ber1
      ZuZ = Int((32 * Rnd) + 1)  'Zufallszahl: 1 bis 32
      Set Ber2 = Ber1.Find(ZuZ, lookat:=xlWhole)
      While Not Ber2 Is Nothing
        ZuZ = Int((32 * Rnd) + 1)
        Set Ber2 = Ber1.Find(ZuZ, lookat:=xlWhole)
      Wend
      c.Value = ZuZ
    Next c
    Set Ber1 = Nothing
    Set Ber2 = Nothing
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Bild

Betrifft: AW: Zufallszahl
von: Christoph Scheidiger
Geschrieben am: 22.04.2005 13:38:04
Hoi Werner
Vielen Dank! Das hilft mir sicher weiter. Ich werde es ausprobieren und mich dann nochmals melden!Danke!
Gruss Christoph
Bild

Betrifft: AW: Zufallszahl
von: ANdreas
Geschrieben am: 22.04.2005 14:03:07
Hallo Christoph,
hier eine reine VBA-Lösung ohne Krücken und ohne ewigen Vergleich ob gezogene schon mal gezogen und dadurch evtl. nie terminiert:

Private Sub SetZufallszahlen(ByRef varParam() As Integer, ByVal intUnter%, ByVal intOber%)
' Funktion erhält 3 Parameter
' 1. Array in welches in die Zufallszahlen geschrieben werden,
' Anzahl wird durch Dimension des Array bestimmt
' 2. Untergrenze Zahlenbereich
' 3. Obergrenze Zahlenbereich
Dim intAnzahl%, intZahlen%, intZufall%, i%
Dim arrZufall() As Integer
' Anzahl zu ermittelnder Zahlen
intAnzahl = UBound(varParam) + 1 ' beginnt mit 0
' Anzahl unterschiedlicher Zahlen
intZahlen = intOber - intUnter
' Abbruch wenn Untergrenze>Obergrenze oder Zahlenvorrat zu klein
If intZahlen < 1 Or intZahlen < intAnzahl Then Exit Sub
Randomize ' Zufallsgenerator initialisieren
' Array mit allen Zahlen zw. Untergrenze und Obergrenze
ReDim arrZufall(intZahlen)
' Array füllen
For i = intUnter To intOber
    arrZufall(i - intUnter) = i
Next i
' Zufallszahlen ziehen und aus arrZufall auslesen
' Gezogene Zahl in ParameterArray schreiben
' Gezogene Zahl korrekt aus arrZufall entfernen (keine Zahl kann 2x gezogen werden)
For i = 1 To intAnzahl
    intZufall = Int((intZahlen - i + 2) * Rnd)
    varParam(i - 1) = arrZufall(intZufall)
    arrZufall(intZufall) = arrZufall(UBound(arrZufall))
    ReDim Preserve arrZufall(UBound(arrZufall) - 1)
Next i
End Sub

Sub TestZufall()
Dim varArray() As Integer
Dim intAnzahlWerte%, s$, i%
intAnzahlWerte = 10 ' Anzahl zu ermittelnder Zufallszahlen
ReDim varArray(intAnzahlWerte - 1) ' Array für die Zufallszahlen
SetZufallszahlen varArray, 1, 20 ' Array, Untergrenze, Obergrenze
' Ausgabe der Werte
For i = 0 To intAnzahlWerte - 1
s = s & varArray(i) & vbCrLf
Next i
MsgBox s
End Sub
Gruß
Andreas
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zufallszahl"