Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
600to604
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zufallszahl

Zufallszahl
22.04.2005 11:50:23
Christoph
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufallszahl
22.04.2005 11:51:56
Hajo_Zi
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!"
AW: Zufallszahl
22.04.2005 11:59:48
Christoph
Danke für die Antwort.
Aber ich brauche es in einem VBA-Code, kann mir jemand dabei helfen?
Gruss Christoph
AW: Zufallszahl
22.04.2005 12:02:31
Ramses
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
AW: Zufallszahl
22.04.2005 12:46:53
WernerB.
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 !
Anzeige
AW: Zufallszahl
22.04.2005 13:38:04
Christoph
Hoi Werner
Vielen Dank! Das hilft mir sicher weiter. Ich werde es ausprobieren und mich dann nochmals melden!Danke!
Gruss Christoph
AW: Zufallszahl
22.04.2005 14:03:07
ANdreas
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige