Anzeige
Archiv - Navigation
1740to1744
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 Zufallszahl aus Bereich vergeben

VBA Zufallszahl aus Bereich vergeben
13.02.2020 10:13:21
Trampus
Hallo liebe Community,
ich habe da ein Problem, welches ich gerne mittels VBA lösen möchte - nur fehlen mit die nötigen Kenntnisse. Ich hoffe auf eure Hilfe :-)
Hier der Link zu der Datei: https://www.herber.de/bbs/user/135161.xlsm
Mit Klick auf einen Button ('Auslosung Reihenfolge Wk 1') soll folgendes passieren:
- Jedem Aktiven in Spalte A (A2:A57) soll zufällig eine Zahl aus dem Bereich F1:L8 zugewiesen werden
- dabei darf jede Zahl nur einmal vergeben werden.
- Jede leere Zeile soll (A2:A57) übersprungen werden bzw. leer gelassen werden (es soll keine Startnummer zugewiesen werden).
- Bei bspw. 20 gemeldeten Aktiven dürfen nur die Zahlen 1-20 zugewiesen werden.
- Mit erneutem Klick auf den Button sollen andere Zahlen aus dem Bereich F1:L8 zugewiesen werden.
Danke und viele Grüße
Trampus

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zufallszahl aus Bereich vergeben
13.02.2020 11:15:17
Torsten
Hallo Trampus,
hier meine Loesung dazu. Habe aber deinen Zahlenbereich nicht verwendet. Ich zaehle nur die nicht leeren Zellen in Spalte A im Bereich A2:A57. Dann habe ich die Menge an Zahlen, die vergeben werden muessen. In dem Fall 20. In der Varieblen I gespeichert. Dann vergebe ich die Zufallszahlen. Ueberpruefe aber jedesmal, ob die Zahl schon vorhanden ist. Wenn ja, wird eine neue vergeben, die noch nicht vorhanden ist. Deine Datei auch dabei mit Code auf der Schaltflaeche.

Sub Schaltfläche2_Klicken()
Dim Vergleichsbereich As Range
Dim Bereich As Range, Zelle As Range
Dim c
Dim I As Long, A As Long, lgZu As Long
Set Bereich = ActiveSheet.Range("A2:A57")
ActiveSheet.Range("D2:D57").ClearContents
For Each Zelle In Bereich
If Zelle  "" Then
I = I + 1
End If
Next
For Each Zelle In Bereich
If Zelle  "" Then
Randomize
1:      lgZu = Int(Rnd() * I) + 1
Set c = ActiveSheet.Range("D2:D57").Find(lgZu, lookat:=xlWhole)
If c Is Nothing Then
Zelle.Offset(0, 3) = lgZu
Else
GoTo 1
End If
End If
Next
End Sub

Gruss Torsten
https://www.herber.de/bbs/user/135165.xlsm
Anzeige
AW: VBA Zufallszahl aus Bereich vergeben
13.02.2020 11:20:36
Trampus
Mega vielen Dank für die schnelle Hilfe :D Funktioniert hervorragend!
VG
Trampus
gerne...
13.02.2020 11:24:57
Torsten
AW: VBA Zufallszahl aus Bereich vergeben
13.02.2020 11:17:37
onur
ich habe da ein Problem, welches ich gerne lösen möchte - nur fehlen mit die nötigen Kenntnisse. Ich hoffe auf deine Hilfe :-)
- Das Wohnzimmer sollte gestrichen werden
- Die Farbe der Wände sollte ein helles grün sein
- Die Farbe der Decke sollte ein helles blau sein
- die alte Tapete müsste vorher entfernt werden
- Die Kanten müssen mit Krepp abgeklebt werden
- Der Boden sollte farbfrei bleiben
Danke und viele Grüße
Onur
AW: VBA Zufallszahl aus Bereich vergeben
13.02.2020 12:07:38
Daniel
Hi
noch ne Variante, die Startnummern zu vergeben.
die Liste wird automatisch nach Anzahl der Teilnehmer erzeugt.
Sub Schaltfl?che2_Klicken()
Dim Zelle As Range
Dim Bereich As Range
Dim Anzahl As Long
Dim arr
Dim i As Long, x As Long, z As Long
Set Bereich = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
Anzahl = WorksheetFunction.CountA(Bereich)
ReDim arr(1 To Anzahl)
'--- Startnummern erzeugen
For i = 1 To Anzahl
arr(i) = i
Next
'--- Startnummern in zuf?llige Reihenfolge bringen
For i = 1 To Anzahl
z = WorksheetFunction.RandBetween(1, Anzahl)
x = arr(i)
arr(i) = arr(z)
arr(z) = x
Next
'--- Startnummern vergeben
i = 0
For Each Zelle In Bereich.SpecialCells(xlCellTypeConstants, 2)
i = i + 1
Zelle.Offset(0, 3).Value = arr(i)
Next
End Sub
die Leerzellen müssen echte Leerzellen sein.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige