Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1272to1276
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
Inhaltsverzeichnis

VBA-Zufallszahlen generieren

VBA-Zufallszahlen generieren
reiner
Hallo Leute,
die Zellen A2, C2, E2, G2, I2 sollen jeweils willkürlich ermittelte Farben (rot, grün, blau, magenta, schwarz, grau, gelb oder orange) die mit einem Zufallsgenerator erzeugt werden, annehmen. Wenn sich aus den 8 genannten Farben eine willkürliche Farbfolge nicht ermitteln lässt, wäre auch eine Ermittlung von Zufallszahlen die anschließend in Farben "umgerechnet" werden, ausreichend.
Es sollte aber wahlweise möglich sein, doppelte Farben zuzulassen bzw. auszuschließen.
Der bislang eingesetzten Zufallsgenerator ist zwar im Prinzip ausreichend, lässt aber keine Möglichkeit Doppelungen zuzulassen bzw. auszuschließen:
Set Bereich = Range("A2:I2")

For Each Zelle In Bereich
Zelle.Value = Int((8000 * Rnd) + 1)
Next Zelle

mfg
reiner

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA-Zufallszahlen generieren
15.08.2012 09:33:12
{Boris}
Hi Reiner,
ich weiß nicht, ob es einfacher geht, aber das ist das Prinzip der ganzzahligen Zufallszahlen ohne Wiederholung, wie wir es auch auf unserer Seite beschrieben haben.
Vorgehen:
Ein Array von (in Deinem Fall) 8000 Zufallszahlen erzeugen und dann nacheinander die kleinste, zweitkleinste, drittkleinste etc. vergleichen.
Z.B. so:
Sub test()
Dim arr(8000), y(100)
Dim x As Long
Randomize Timer
For x = 1 To 8000
arr(x) = Rnd
Next x
For x = 1 To 100
y(x) = WorksheetFunction.Match(WorksheetFunction.Small(arr, x), arr, 0)
Next x
MsgBox y(1)
End Sub
Das y-Array enthält jetzt 100 ganzzahlige Zufallszahlen im Bereich 1 bis 8000 ohne Wiederholung.
VG, Boris
Anzeige
AW: VBA-Zufallszahlen generieren
15.08.2012 10:19:08
reiner
hallo Boris,
du verweist auf "deine Seite"; wo finde ich diese Seite?
Gibt es dort weiterführende Informationen über die Erzeugung von Zufallszahlen?
mfg
reiner
AW: VBA-Zufallszahlen generieren
15.08.2012 10:36:25
{Boris}
Hi Reiner,
sorry - es geht um http://www.excelformeln.de - aber da geht es halt nur um Formeln und nicht um VBA. Wenn Du dort in der Suche Zufallszahl eingibst, findest Du einiges dazu.
VG, Boris
AW: VBA-Zufallszahlen generieren
15.08.2012 11:37:04
Dirk
Hallo Reiner,
wieviel verschieden Zahlen brauchst Du denn? Sind es wirklich 8000?
Gruss
Dirk aus Dubai
AW: VBA-Zufallszahlen generieren
15.08.2012 12:00:21
reiner
hallo Dirk,
eigentlich geht es nicht um Zahlen sondern um 8 Farben (rot, grün, blau, magenta, schwarz, grau, gelb oder orange); Zahlen sind in diesem Fall nur Hilfsmittel denen abschließend eine Farbe zugeordnet wird.
Es sollen 5 Farben willkürlich in den Zellen A5, C5, E5, G5, I5 angeordnet werden, ohne Doppelungen; Doppelungen sollten aber dennoch(umschaltbar) auch möglich sein.
mfg
reiner
Anzeige
AW: VBA-Zufallszahlen generieren
15.08.2012 12:32:50
{Boris}
Hi Reiner,
Sub test()
Dim arr(7), y(7)
Dim x As Long, Farbe As Long
Randomize Timer
For x = 0 To 7
arr(x) = Rnd
Next x
For x = 0 To 4
y(x) = WorksheetFunction.Match(WorksheetFunction.Small(arr, x + 1), arr, 0)
Select Case y(x)
Case 1: Farbe = 3
Case 2: Farbe = 6
Case 3: Farbe = 12
Case 4: Farbe = 20
Case 5: Farbe = 30
Case 6: Farbe = 40
Case 7: Farbe = 50
Case 8: Farbe = 53
End Select
y(x) = Farbe
Next x
For x = 0 To 4
Cells(5, (x + 1) * 2 - 1).Interior.ColorIndex = y(x)
Next x
End Sub
Die Farbcode musst Du anpassen.
VG, Boris
AW: VBA-Zufallszahlen generieren
15.08.2012 13:28:39
reiner
hallo Boris,
dieser Vorschlag gefällt mir ausgezeichnet, jede Farbe erscheint nur 1 mal.
Ist es sehr aufwendig die Programmierung zu erweitern sodass eine beliebige Farbe doppelt vorkommt?
mfg
reiner
Anzeige
Zufällig eine Farbe doppelt
15.08.2012 17:19:22
{Boris}
Hi Reiner,
Sub test()
Dim arr(7), y(7), z As Long
Dim x As Long, Farbe As Long
Randomize Timer
'8 Zufallszahlen erzeugen und in arr speichern
For x = 0 To 7
arr(x) = Rnd
Next x
'aus den 8 Zufallszahlen die Positionen der 5 kleinsten in y speichern
For x = 0 To 4
y(x) = WorksheetFunction.Match(WorksheetFunction.Small(arr, x + 1), arr, 0)
'und anhand der Position 1 bis 8 eine Farbe zuweisen
Select Case y(x)
Case 1: Farbe = 3
Case 2: Farbe = 6
Case 3: Farbe = 12
Case 4: Farbe = 20
Case 5: Farbe = 30
Case 6: Farbe = 40
Case 7: Farbe = 50
Case 8: Farbe = 53
End Select
y(x) = Farbe
Next x
'Zellen mit den 5 Farben färben
For x = 0 To 4
Cells(5, (x + 1) * 2 - 1).Interior.ColorIndex = y(x)
Next x
'per Zufall eine Farbe doppelt vergeben
z = Int(5 * Rnd)
Do
t = Int(5 * Rnd)
Loop Until t  z
Cells(5, (t + 1) * 2 - 1).Interior.ColorIndex = y(z)
End Sub
VG, Boris
Anzeige
Uups - kein Option Explicit...
15.08.2012 17:36:15
{Boris}
...und schon hab ich die Variable t nicht deklariert:
t As Long
muss es der Vollständigkeit halber im Deklarationsteil noch heißen.
VG, Boris
AW: Uups - kein Option Explicit...
15.08.2012 21:56:19
reiner
hallo Boris,
super, ich bin ehrlich begeistert
vielen Dank
mfg
reiner

32 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige