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

Excel-Liste zufällig mit VBA sortieren

Excel-Liste zufällig mit VBA sortieren
21.10.2005 10:30:32
Matthias
Es handelt sich um eine alphabetische Liste von 100 Personen und das Ziel besteht darin, diese Liste zufällig zu sortieren und zwar so, daß jede Person am Ende eine willkürliche Nummer trägt. Das ganze dient der Verteilung von Schülern in einem Raum (beispielsweise während einer Prüfung). Nach Möglichkeit sollte eine beliebige Datenquelle verwendet werden können und eine Möglichkeit zum Ausdrucken von "Etiketten" bestehen (mit Name der Person und der zuvor erstellten Nummer). Da ich keine Idee von VBA habe, mich mit Excel aber recht gut auskenne, wäre ich für Tips zur Erzeugung des entsprechenden Makros sehr dankbar. Das Problem besteht vor allem darin den "Einstieg" zu finden!

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

Betreff
Datum
Anwender
Anzeige
AW: Excel-Liste zufällig mit VBA sortieren
21.10.2005 11:28:16
Maike
Einfach ein Modul einfügen und das hier eingeben:

Sub ZufallswerteZuordnen()
Dim i_LetzteZeile As Integer
Dim i_AktuelleZeile As Integer
Dim i_Zufallszahl As Integer
Dim b_schonVorhanden As Boolean
Dim i_i As Integer
Dim i_j As Integer
i_AktuelleZeile = 1
i_LetzteZeile = ActiveSheet.Range("A65536").End(xlUp).Row
ActiveSheet.Columns("A:A").Insert Shift:=xlToRight
For i_i = 1 To i_LetzteZeile
i_AktuelleZeile = i_i
'Zufallswert erzeugen (Zahl von 1 bis Anzahl beschriebene Zeilen)
i_Zufallszahl = Round(Rnd() * i_LetzteZeile)
' Prüfen ob Zufallszahl doppelt
For i_j = 1 To i_AktuelleZeile
If Cells(i_j, 1).Value = i_Zufallszahl Then
b_schonVorhanden = True
i_j = i_AktuelleZeile
Else
b_schonVorhanden = False
End If
Next
' Wenn doppelt, neu berechnen, sonst Wert in Zelle schreiben
If b_schonVorhanden = True Then
i_i = i_i - 1
Else
Cells(i_i, 1).Value = i_Zufallszahl
End If
Next
End Sub

Mit ein paar werten klappt das auf jeden fall!
Gruß Maike
Anzeige
AW: Excel-Liste zufällig mit VBA sortieren
21.10.2005 13:20:14
Nepumuk
Hallo Maike,
das ist aber sehr umständlich, da du deine Liste mit jeder neuen Zahl wieder absuchen musst, ob sie nicht schon verwendet wird. Du kannst doch ganz einfach ermitteln, wie viele Einträge in der Liste sind. Dann dimensioniere ein Array, welches genau so viele Eintrage zulässt. Fülle das Array mit fortlaufenden Nummern und sortiere dieses Array zufällig. Beispiel:
Public Sub test2()
    Dim lngIndex As Long, lngArray() As Long
    Dim lngTemp As Long, lngAddress As Long
    Dim lngRow As Long
    lngRow = Cells(Rows.COUNT, 1).End(xlUp).Row
    Redim lngArray(1 To lngRow)
    For lngIndex = 1 To lngRow
        lngArray(lngIndex) = lngIndex
    Next
    Randomize Timer
    For lngIndex = lngRow To 1 Step -1
        lngAddress = Int((lngIndex * Rnd) + 1)
        lngTemp = lngArray(lngAddress)
        lngArray(lngAddress) = lngArray(lngIndex)
        lngArray(lngIndex) = lngTemp
    Next
    Columns(1).Insert
    Range(Cells(1, 1), Cells(lngRow, 1)) = _
        WorksheetFunction.Transpose(lngArray)
End Sub

Lass mal die beiden Makros gegeneinander, bei eine Liste mit 1.000 Zeilen, antreten. Dann merkst du den Unterschied.
Gruß
Nepumuk

Anzeige
AW: Excel-Liste zufällig mit VBA sortieren
25.10.2005 10:04:26
Maike
Naja, war halt das naheliegenste, oder?
Ich hoffe es hat trotzdem weitergeholfen. Manchmal sind die simplen Lösungen zwar langsamer aber einfacher zu verstehen...
aber es ist immer schön, etwas dazuzulernen :-)
Also Danke für die Verbesserung
Gruß Maike
AW: Excel-Liste zufällig mit VBA sortieren
21.10.2005 11:32:21
serge
Hi Matthias
ohne VBA würde ich eine Spalte mit der Formel =ZUFALLSZAHL()vor die Namen stellen und nach dieser ZUFALLSZAHL-Spalte sortieren.
Serge

95 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige