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

Namen mit Zufallsgenerator sortieren

Namen mit Zufallsgenerator sortieren
11.05.2004 19:27:09
Jens
Hallo Kollegen,
kann mir jemand sagen wie ich über VBA einen Bereich der mit namen gefüllt ist über einen Zufallsgenerator sortieren kann?
Gruß Jens

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen mit Zufallsgenerator sortieren
Klaus-Dieter
Hallo Jens,
ich habe da eventuell einen Lösungsansatz, um welchen Bereich geht es denn?
Gruß Klaus-Dieter

AW: Namen mit Zufallsgenerator sortieren
11.05.2004 19:42:19
Jens
Sagen wir mal, einen bereich von C5:C55
oder ähnlich.
Handelt sich eigentlich nur um eine untereinander aufgelistete Namenliste
AW: Namen mit Zufallsgenerator sortieren
Kurt
In die Zellen D5:D55 =ZUFALLSZAHL() und beide Spalten nach Spalte D
sortieren.
Kurt
AW: Namen mit Zufallsgenerator sortieren
11.05.2004 20:53:02
Jens
Ich möchte es aber über VBA programmieren
AW: Namen mit Zufallsgenerator sortieren
Klaus-Dieter
Hallo Jens,
hier die VBA-Lösung:
Option Explicit

Sub sortieren()
Dim z As Integer
Dim arr(800, 0) As Variant
Dim s As Integer
Dim w As Integer
Dim az As Integer
z = Range("C65536").End(xlUp).Row
For s = 5 To 8000
w = Int((z - 5 + 1) * Rnd + 5)
If Cells(w, 1) <> "" Then
arr(az, 0) = Cells(w, 1)
az = az + 1
Cells(w, 1).Delete Shift:=xlUp
End If
Next s
Range("C5", "C" & z) = arr
End Sub

Gruß Klaus-Dieter

Anzeige
AW: Namen mit Zufallsgenerator sortieren
11.05.2004 21:17:40
Jens
Hallo Klaus-Dieter,
danke erst mal, ich weiß nur nicht warum es bei mir nicht funktioniert.
Also ich erkläre dir mein Vorhaben jetzt mal genauer.
ich habe ein Tabellenblatt welches Namenliste heißt, in dieser Tabelle stehen in fünf blöcken diverse Namen.
Dann habe ich eine Tabelle welche Berechnung heißt, in dieser füge ich über ein VBA Programm die Fünf Blöcke der Tabelle vorher in zwei Blöcke auf der aktuellen Tabelle (Berechnung) ein.
Nun habe ich in der Tabelle Berechnung zwei Spalten
1. von C5-C31 und
2. von E5-E31
Dier bereich kann nach unten hinaus auch größer werden.
So und nun möchte ich diese beiden Bereiche an Hand eines Zufallgenerators sortieren.
Anzeige
AW: Namen mit Zufallsgenerator sortieren
Klaus-Dieter
Hallo Jens,
deshalb hatte ich ja nachgefragt. Der Bereich C5-C31 müßte doch sortiert werden? Den anderen hatte ich nicht berücksichtigt, weil ich davon nichts wußte.
Gruß Klaus-Dieter

AW: Namen mit Zufallsgenerator sortieren
11.05.2004 22:05:29
Jens
Ich habe die Formel für die Spalte C angewendet, aber wie gesagt das VBA hat nicht funktioniert. Die Namen wurden nicht sortiert.
Kannst du mir dennoch weiter helfen?
AW: Namen mit Zufallsgenerator sortieren
Klaus-Dieter
Hallo Jens,
die Formel? Das ist ein Makro. Kannst du die Datei mal Hochladen?
Gruß Klaus-Dieter

Anzeige
AW: Namen mit Zufallsgenerator sortieren
11.05.2004 22:30:05
Jens
Das hätte ich gerne gemacht. Ich darf nur leider nicht was ich machen kann , ist dir das komplette Makro zu zeigen, vielleicht kannst du etwas damit anfangen:
Option Explicit
Dim SourceRow As Integer
Dim SourceColl As Integer
Dim DestRow As Integer
Dim DestColl As Integer
Dim I As Integer

Sub BPE()
'mouse -> sanduhr
Application.Cursor = xlWait
'no screenupdate -> faster
Application.ScreenUpdating = False
'Tabellenblatt leeren
Worksheets("Berechnung").Range("A4:L500").Value = ""
'Berechnung der Dauerfrühschicht
SourceRow = 5
SourceColl = 8
DestRow = 5
DestColl = 2
Dim Dest As Range
Dim Source As Range
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Do
Dest.Value = Source.Value
DestRow = DestRow + 1
SourceRow = SourceRow + 1
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Loop Until Source.Value = ""
'Berechnung der Wechselschicht1
SourceRow = 5
SourceColl = 2
'If KWoche(18) Mod 2 = 0 Then
If KWoche(Now()) Mod 2 = 0 Then
'Bei geraden Wochen
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Do
Dest.Value = Source.Value
DestRow = DestRow + 1
SourceRow = SourceRow + 1
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Loop Until Source.Value = ""
'''''End If
'Berechnung der Sonderschicht
SourceRow = 5
SourceColl = 14
'''''If KWoche(Now()) Mod 2 = 0 Then
'Bei geraden Wochen
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Do
Dest.Value = Source.Value
DestRow = DestRow + 1
SourceRow = SourceRow + 1
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Loop Until Source.Value = ""
'''''End If
'Berechnung der Dauerspätschicht
SourceRow = 5
SourceColl = 11
DestRow = 5
DestColl = 4
'''''If KWoche(Now()) Mod 2 = 0 Then
'Bei geraden Wochen
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Do
Dest.Value = Source.Value
DestRow = DestRow + 1
SourceRow = SourceRow + 1
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Loop Until Source.Value = ""
'''''End If
'Berechnung der Wechselschicht2
SourceRow = 5
SourceColl = 5
'''''If KWoche(Now()) Mod 2 = 0 Then
'Bei geraden Wochen
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Do
Dest.Value = Source.Value
DestRow = DestRow + 1
SourceRow = SourceRow + 1
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Loop Until Source.Value = ""
''''End If
'--------------AB HIER BERECHNUNG DER UNGERADEN WOCHE-----------------------------------------------
Else
'Bei ungeraden Wochen
'Berechnung der Dauerspätschicht
SourceRow = 5
SourceColl = 11
DestRow = 5
DestColl = 2
'Dim Dest As Range
'Dim Source As Range
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Do
Dest.Value = Source.Value
DestRow = DestRow + 1
SourceRow = SourceRow + 1
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Loop Until Source.Value = ""
'Berechnung der Wechselschicht1
SourceRow = 5
SourceColl = 2
'''''If KWoche(Now()) Mod 2 = 0 Then
'Bei ungeraden Wochen
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Do
Dest.Value = Source.Value
DestRow = DestRow + 1
SourceRow = SourceRow + 1
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Loop Until Source.Value = ""
'''''End If
'Berechnung der Sonderschicht
SourceRow = 5
SourceColl = 14
'''''If KWoche(Now()) Mod 2 = 0 Then
'Bei ungeraden Wochen
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Do
Dest.Value = Source.Value
DestRow = DestRow + 1
SourceRow = SourceRow + 1
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Loop Until Source.Value = ""
'''''End If
'Berechnung der Dauerfrühschicht
SourceRow = 5
SourceColl = 8
DestRow = 5
DestColl = 4
'''''If KWoche(Now()) Mod 2 = 0 Then
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Do
Dest.Value = Source.Value
DestRow = DestRow + 1
SourceRow = SourceRow + 1
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Loop Until Source.Value = ""
'''''End If
'Berechnung der Wechselschicht2
SourceRow = 5
SourceColl = 5
'''''If KWoche(Now()) Mod 2 = 0 Then
'Bei ungeraden Wochen
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Do
Dest.Value = Source.Value
DestRow = DestRow + 1
SourceRow = SourceRow + 1
Worksheets("Berechnung").Activate
Set Dest = Worksheets("Berechnung").Range(Cells(DestRow, DestColl + 1), Cells(DestRow, DestColl + 1))
Worksheets("Namenliste").Activate
Set Source = Worksheets("Namenliste").Range(Cells(SourceRow, SourceColl), Cells(SourceRow, SourceColl))
Loop Until Source.Value = ""
End If
'Zufällig sortieren in Spalte C

Sub sortieren()
Dim z As Integer
Dim arr(800, 0) As Variant
Dim s As Integer
Dim w As Integer
Dim az As Integer
z = Range("C65536").End(xlUp).Row
For s = 5 To 8000
w = Int((z - 5 + 1) * Rnd + 5)
If Cells(w, 1) <> "" Then
arr(az, 0) = Cells(w, 1)
az = az + 1
Cells(w, 1).Delete Shift:=xlUp
End If
Next s
Range("C5", "C" & z) = arr
End Sub

'Ausdrucken
'For I = 3 To Worksheets.Count
' Worksheets(I).PrintOut
'Next I
'--------------------------------------------------------------------------------------------
'mouse -> normal
Application.Cursor = xlDefault
'no screenupdate -> faster / wieder an
Application.ScreenUpdating = True
End Sub

'Berechnung der Kalenderwoche

Function KWoche(d)
Dim t
t = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 1)
KWoche = ((d - t - 3 + (Weekday(t) + 1) Mod 7)) \ 7 + 1
End Function

Anzeige
AW: Namen mit Zufallsgenerator sortieren
Klaus-Dieter
Hallo Jens,
ich denke ich habe den Fehler gefunden. Du hast das Makro in dein Makro "BPE" eingebunden. Das kann so nicht gehen. Wenn du über die Zeile "

Sub sortieren()" von meinem Makro "End Sub
" schreibst, dann hast du die beiden Makros getrennt, dann sollte es funktionieren.
Gruß Klaus-Dieter

AW: Namen mit Zufallsgenerator sortieren
Jens
Ich habe jetzt alles richtig eingefügt, funktioniert aber immer noch nicht.
Gibt es da vielleicht noch eine andere Lösung?
AW: Namen mit Zufallsgenerator sortieren
Klaus-Dieter
Hallo Jens,
"funktioniert nicht" ist wenig hilfreich. Was genau funktioniert nicht, bzw. was erwartest du?
Gruß Klaus-Dieter
Anzeige
AW: Namen mit Zufallsgenerator sortieren
Klaus-Dieter
Hallo Jens,
jetzt funktioniert es bestimmt. Versuche es mal damit:

Sub sortieren()
Dim z As Integer
Dim arr(800, 0) As Variant
Dim s As Integer
Dim w As Integer
Dim az As Integer
z = Range("C65536").End(xlUp).Row
For s = 5 To 8000
w = Int((z - 5 + 1) * Rnd + 5)
If Cells(w, 3) <> "" Then
arr(az, 0) = Cells(w, 3)
az = az + 1
Cells(w, 3).Delete Shift:=xlUp
End If
Next s
Range("C5", "C" & z) = arr
End Sub

Gruß Klaus-Dieter

97 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige