Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
796to800
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
796to800
796to800
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zufallsgenerator

Zufallsgenerator
30.08.2006 17:11:56
Xelleron
Hallo zusammen,
nachdem ich im Archiv nichts gefunden habe, was in meinem Fall benötigt wird, versuche ich es hier noch mal.
Und zwar soll per Zufallsgenerator Namen aus A1:A11 auf folgende Zellen verteilt werden (C2, C5, C8, C10, D4, D7, D11, E2, E5, E8, E10). Dabei soll jeder Name nur einmal verwendet werden. Kann da jmd helfen?
Über Hilfe bin ich wie immer dankbar.
Gruß
Dennis

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufallsgenerator
30.08.2006 18:07:27
ChrisL
Hallo Dennis

Sub t()
Dim i As Integer, iZufall As Byte
Dim rng1 As Range, rng2 As Range
Dim arr(10, 1) As Variant
Dim bFertig As Boolean
Randomize
Set rng1 = Range("C2,C5,C8,C10,D4,D7,D11,E2,E5,E8,E10")
rng1.ClearContents
For i = 1 To 11
arr(i - 1, 0) = Cells(i, 1)
arr(i - 1, 1) = False
Next i
Do
iZufall = Rnd * 10 + 1
If arr(iZufall - 1, 1) = False Then
arr(iZufall - 1, 1) = True
For Each rng2 In rng1
If rng2 = "" Then
rng2 = arr(iZufall - 1, 0)
Exit For
End If
Next rng2
bFertig = True
For i = 0 To 10
If arr(i, 1) = False Then
bFertig = False
Exit For
End If
Next i
If bFertig Then End
End If
Loop
End Sub

Jedoch, falls Leerfelder vorhanden sind, werden diese ungleich verteilt. In diesem Fall wäre u.U. eine Korrektur notwendig.
Gruss
Chris
Anzeige
AW: Zufallsbelegung aus einer Liste
30.08.2006 18:08:02
ingUR
Hallo, Dennis,
hier ein VBA-Programmcode (nicht optimiert), der die Aufgabe erledigen konnen sollte:

Option Explicit
Sub ZufallsBelegung()
Dim rngZ As Range, rng As Range
Dim strQ(11) As String, strZ(11) As String
Dim iIdx As Integer, iFree As Integer
Dim strAddress
strAddress = Array("C2", "C5", "C8", "C10", "D4", "D7", "D11", "E2", "E5", "E8", "E10")
For Each rng In Range("A1:A11")
strQ(rng.Row) = rng.Value
Next
iFree = 11
Randomize
While iFree > 0
iIdx = Int(11 * Rnd) + 1
If Len(strZ(iIdx)) = 0 Then
strZ(iIdx) = strQ(iFree)
iFree = iFree - 1
End If
Wend
For iIdx = 1 To 11
Range(strAddress(iIdx - 1)).Value = strZ(iIdx)
Next
End Sub

Einen entsprechgenden CommandButton, der di Prozedutr startet, kannst du auf dem aktiven Tabbelneblatt anordnen.
Gruß,
Uwe
Anzeige
AW: Zufallsbelegung aus einer Liste
30.08.2006 18:34:50
Xelleron
Super,
danke Euch beiden.
Gruß Dennis
AW: Zufallsgenerator
30.08.2006 23:55:17
Reinhard
Hi Dennis,
probiermal:
Option Explicit
Sub tt()
Dim ausw, z As Integer, n As Integer
ausw = Array("C2", "C5", "C8", "C10", "D4", "D7", "D11", "E2", "E5", "E8", "E10")
For n = 0 To UBound(ausw)
z = Int(Rnd() * UBound(ausw))
Cells(n + 1, 1) = Range(ausw(z)).Value
ausw(z) = ausw(UBound(ausw))
If n = 10 Then Exit For
ReDim Preserve ausw(UBound(ausw) - 1)
Next n
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige