Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
596to600
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
596to600
596to600
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Spieler Auslosung (mit Freilose)

Spieler Auslosung (mit Freilose)
09.04.2005 15:49:28
DaN
Hallo !
Ich habe mir einen Spieler Tunrierplan im Escel erstellt und nun hab ich ein Problem bei der Auslosung der Spieler (Wer gegen wehn) !
Ich habe eine Liste aller Spieler - Daneben hab ich eine Liste mit Zufallszahlen damit ich die Spieler Liste sortieren kann (das is meine Auslosung) !
Nun kann es aber vorkommen das man den Plan nicht voll bekommt. Der Plan ist z.B.: für 32 Spieler. Wenn nun aber nur 29 Teilnehmen, dann braucht man Freilose.
Diese Freilose sind fix gesetzt. Z.B.: Freilos 1 kommt immer an Position 1 der Spieler Liste. Freilos zwei kommt fix an Position 16 der Spieler Liste.
Wie kann ich meine Spieler Liste sortieren, so das er mir die Positionen für die Freilose frei lässt damit ich dort meine Freilose eintragen kann ?????
Die Anzahl der Freilose is leicht errechnet ... 32Plan - 29 Spieler = 3 Freilose !
DANKE im Vorraus !

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

Betreff
Datum
Anwender
Anzeige
AW: Spieler Auslosung (mit Freilose)
09.04.2005 17:00:30
th.heinrich
hi Dan,
typische Glaskugelfrage. kein mensch ausser Dir weiss wie Du den turnierplan erstellst.
also auf gut glueck.
AW: Spieler Auslosung (mit Freilose)
09.04.2005 18:03:53
DAN
Hallo Thomas !
Sorry das ich meine Frage nicht richtig formuliert habe, aber DU hast das schon ziemlich richtig verstanden !
Deine Lösung für mein Problem ist im Ansatz schon richtig ... DANK DIR !
Die Zufallszahl benötige ich damit ich die Spieler durch Zufall "auslosen" kann !
Wenn ich mit Deiner Lösung nach SpalteB sortieren würde dann würd das nicht funktionieren, da in manchen Feldern keine Zufallszahl drinn is !
Es müsste so laufen:
Ich habe 32 Felder für die Namen der Spieler. Daneben habe ich noch eine Spalte mit 32 Feldern in denen ich die Zufallszahl hinterlege.
Nun Sortiere ich die erste Spalte (mit den Spielernamen) nach der zweiten Spalte !
Nun sind meine Spieler "ausgelost". Nur habe ich 29 statt 32 Spieler.
Das Programm müsste das erkennen und nun gleich beim sortieren das gesetzte FELD 1 für ein Freilos freihalten und den ersten Spielernamen erst in die zweite Zeile schreiben.
Das gleiche gilt für das zweite Freilos das sich auf Position 16 befindet. Diese Position müsste das Programm auslassen und erst zeile 17 wieder mit einem Spielernamen befüllen.
Das war jetzt viel Text, aber ich hoffe es war verständlich !
Die Reihung der Lose würde ich auch in einer Tabelle ablegen:
Freilose Position
1 1
2 16
3 8
4 9
Bei 29 Spielern müsste das Programm nun Zeile 1,16,8,9 nach dem Sortieren mit Freilosen bestücken !
Gruß -Dan-
Anzeige
AW: Spieler Auslosung (mit Freilose)
10.04.2005 11:08:58
WernerB.
Hallo Dan,
da mir Dein Tabellenblatt nicht vorliegt, gelten für meinen Makrovorschlag folgende Voraussetzungen:
1. Die Spielernamen stehen lückenlos(!) im Zellbereich A1:A32; d.h., bei weniger als 32 Teilnehmern bleiben die letzten Zellen entsprechend ohne Inhalt.
2. Die von Dir vorgegebenen Zufallszahlen stehen im Zellbereich B1:B32.
3. Die Position(!) der Freilose steht im Zellbereich C1:C32; es muss gewährleistet sein, dass hier die Anzahl der Einträge ausreichend groß ist.
Wenn meine Annahmen nicht zutreffen, muss das Makro natürlich noch entsprechend angepasst werden.
Solltest Du dazu nicht selbst in der Lage sein, kannst Du Deine Datei (bitte nur ohne Makros!) hier hochladen; ich versuche dann ggf. die Anpassung für Dich vorzunehmen.

Sub Dan()
Dim laR As Long, _
anzTe As Byte, anzFr As Byte, BlaIn As Byte, i As Byte
Application.ScreenUpdating = False
laR = Cells(Rows.Count, 1).End(xlUp).Row
If laR > 32 Then
MsgBox "Zu viele Teilnehmer gelistet !" & vbCr & vbCr & _
"Makro-Abbruch !", vbOKOnly + vbCritical, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
BlaIn = ActiveSheet.Index
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Range("A1:C32").Value = _
Sheets(BlaIn).Range("A1:C32").Value
Range("A1:B" & laR).Sort Key1:=Range("B1"), _
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
If laR < 32 Then
Range("D1").Value = 1
Range("D1").AutoFill Destination:=Range("D1:D32"), _
Type:=xlFillSeries
anzTe = laR
anzFr = 32 - laR
Range("C1:C" & anzFr).Sort Key1:=Range("C1"), _
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
For i = 1 To anzFr
Cells(Range("C" & i).Value, 4).ClearContents
Next i
Range("D1:D32").Sort Key1:=Range("D1"), _
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
Range(Cells(anzTe + 1, 4), Cells(32, 4)).Value = _
Range("C1:C" & anzFr).Value
Range("B1:B32").Value = Range("D1:D32").Value
Range("A1:B32").Sort Key1:=Range("B1"), _
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
End If
Sheets(BlaIn).Range("A1:A32").Value = _
ActiveSheet.Range("A1:A32").Value
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
Sheets(BlaIn).Select
Application.ScreenUpdating = True
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Spieler Auslosung (mit Freilose)
11.04.2005 10:11:06
Dan
Hallo !
Danke für Deine Antwort ...
Das Script hat mir am Anfang gleich einen Fehler ausgegeben ... "zuviele Teilnehmer" !
Obwohl es nur 32 wahren !
Ich hab mir dann mal die Variable ausgeben lassen die die Zeilen in Deinem Script zählt.
Die hat 33 gezählt !
Aber das Problem konnte ich umgehen und er hat Das Script ausgeführt !
Leider hat er aber nichts gemacht !
Deine Annahmen waren aber genau richtig.
Hier mein Beispiel mit dem ich das ganze getestet hab.
Spieler Name: Zufalszahl Freilos Position
xxx1 0,3223 1
xxx2 0,1535 16
xxx3 0,9232 8
xxx4 0,2323 9
xxx5 0,4233
usw. usw.
Er sollte nun alle Spieler sortieren. Nehmen wir an es sind 29 Teilnehmer. Dann sollte er an die erste Position der Sortierung ein Freilos einsetzen (weil C2=1) (ohne Überschrift) !
Das nächste Freilos auf Position 16 dann 8 ... usw !!
Ich habe Das Script ohne die hier verwendeten Überschriften verwendet, damit es auch wirklich 32 Zeilen (oder weniger) sind !
Danke nochmal ... vielleicht hast Du ja noch eine Idee wie es funktionieren könnte !
Als Freilos sollte das Programm übrigens einen Wert aus einem Anderen Tabellenblatt einfügen.: z.B.: 'Parameter!D3'
Da steht aber nur F R E I L O S drinn !
Anzeige
AW: Spieler Auslosung (mit Freilose)
11.04.2005 11:00:29
WernerB.
Hallo Dan,
das Makro wurde mit den von mir getroffenen Annahmen ohne Beanstandungen getestet.
Wenn es bei Dir nicht funktioniert, so liegt es vermutlich daran, dass die von mir in Unkenntnis Deiner Datei getroffenen Annahmen auf Deine Datei nicht zutreffen; d.h. dass das Makro auf Deine Datei natürlich noch angepasst werden muss.
Von daher kann ich mich nur wiederholen:
Solltest Du diese Anpassung nicht selbst vornehmen können, so kannst Du Deine Datei (bitte nur ohne Makros!) hier hochladen; ich versuche dann ggf. die Anpassung für Dich vorzunehmen.
Mit anderen Worten: Die Gegebenheiten sind mir zu komplex, um sie aufgrund Deiner ungenügenden Beschreibung nachvollziehen zu können. Ohne Deine Datei sehe ich leider keine Chance, Dir mit möglichst wenig Aufwand eine maßgeschneiderte Lösung zu präsentieren.

Gruß
WernerB.
Anzeige
AW: Spieler Auslosung (mit Freilose)
11.04.2005 11:39:55
Dan
Hallo !
Sorry für meine wage Beschreibung ... das Projekt besteht aus zwei Dateien !
https://www.herber.de/bbs/user/20965.xls

Die Datei https://www.herber.de/bbs/user/20966.xls wurde aus Datenschutzgründen gelöscht

Eine kleine Erklärung habe ich der "test" Datei beigelegt !
Danke nochmal !
AW: Spieler Auslosung (mit Freilose)
11.04.2005 14:04:27
WernerB.
Hallo Dan,
wie gefällt Dir das (Deine Zufallszahlen werden dabei allerdings überschrieben!)?
Falls es weniger als 32 Teilnehmer sind, muss in den letzten Zellen der Spalte D entsprechend oft der Text "F R E I L O S" stehen.
Als kleine Zugabe erhältst Du außerdem noch einen auf den Bereich "F2:F33" abgestimmten Zufallszahlen-Generator, der Ganzzahlen von 1 bis 32 (ohne Doppelte) erzeugt; diesen musst Du aber nicht zwingend verwenden.

Sub ListeSortieren()
Dim i As Integer, _
laR As Byte, anzFr As Byte
Application.ScreenUpdating = False
'    Call ZufallsZahl
For i = 33 To 2 Step -1
If Range("D" & i).Text <> "F R E I L O S" Then
laR = i
Exit For
End If
Next i
Range("C1:F" & laR).Sort Key1:=Range("F2"), _
Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
If laR < 33 Then
Range("F2").Value = 1
Range("F2").AutoFill _
Destination:=Range("F2:F33"), Type:=xlFillSeries
anzFr = 33 - laR
For i = 2 To anzFr + 1
Cells(Range("G" & i).Value + 1, 6).ClearContents
Next i
Range("F1:F33").Sort Key1:=Range("F2"), _
Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
Range(Cells(laR + 1, 6), Cells(33, 6)).Value = _
Range("G2:G" & anzFr + 1).Value
Range("C1:F33").Sort Key1:=Range("F2"), _
Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
End If
Application.ScreenUpdating = True
End Sub


Sub ZufallsZahl()
Dim c As Range, Ber1 As Range, Ber2 As Range, _
ZuZ As Byte
Set Ber1 = Range("F2:F33")
Ber1.ClearContents
For Each c In Ber1
ZuZ = Int((32 * Rnd) + 1)  'Zufallszahl: 1 bis 32
Set Ber2 = Ber1.Find(ZuZ, lookat:=xlWhole)
While Not Ber2 Is Nothing
ZuZ = Int((32 * Rnd) + 1)
Set Ber2 = Ber1.Find(ZuZ, lookat:=xlWhole)
Wend
c.Value = ZuZ
Next c
Set Ber1 = Nothing
Set Ber2 = Nothing
End Sub

Viel Erfolg wünscht
WernerB.
Anzeige
AW: Spieler Auslosung (mit Freilose)
11.04.2005 17:54:46
DAN
Hallo Werner !
DANKE für Deine Mühe ... sieht schon sehr vielversprechend aus !
Aber es scheint nicht zu funktionieren !
Er sortiert mir das ganze irgendwie ... aber nicht so das die Freilose richtig gesetzt sind . Oder muss ich etwas besonderes beachten ??
Du hast das ganze ja auf die Datei zugeschnitten die ich hochgeladen hab hab ich gesehen .... vielleicht liegt es aber auch daran das ich in VB nicht besonders versiert bin :)
Vielleicht könntest DU mir ja nochmal kurz helfen !?
Jetzt sortiert er irgendwie, ... nur das erste Freilos (an position1 - erste Zeile) scheint zu stimmen !
Gruß -dan-
Anzeige
AW: Spieler Auslosung (mit Freilose)
12.04.2005 08:17:54
WernerB.
Hallo Dan,
für das Funktionieren des Makros "ListeSortieren" gelten folgende Voraussetzungen:
1. Wenn weniger als 32 Spieler teilnehmen, dann müssen alle "Freilose" vor dem Makrostart lückenlos am Ende der Liste stehen.
Beispiel: Bei 29 Spielern muss vor dem Makrostart in den Zellen D31, D32 und D33 jeweils der Text "F R E I L O S" stehen.
2. In der Spalte F ("ZZ") müssen im gesamten Zellbereich F2:F33 Zufallszahlen stehen; ob Du dabei eigene verwendest oder den Zufallszahlengenerator nutzt, ist dem Makro egal. Alternativ dazu kannst Du die Zahlen auch vom Sortiermakro eintragen lassen, wenn Du die Kommentarisierung der Zeile "Call ZufallsZahl" aufhebst (Apostroph entfernen); dann ruft das Sortiermakro noch vor dem ersten Sortieren den ZZ-Generator auf.
Wenn diese Voraussetzungen vor dem Start des Sortiermakros erfüllt sind, dann arbeitet dieses – zumindest bei mir - wie folgt:
1. Alle Spieler (ohne die unten stehenden Freilose) werden nach Ihrer Zufallszahl sortiert.
2. Entsprechend der in Spalte G aufgeführten Reihenfolge (1, 16, 8. 9, 4, usw.) werden dann alle vorhanden (immer noch unten stehenden) Freilose an die vorgesehenen Freilospositionen geschoben/sortiert; für diese Freilos-Einsortierung werden dabei allerdings auch alle Zufallszahlen in der ZZ-Spalte F überschrieben.
3. Wenn unten keine Freilose stehen, erfolgt nur eine Sortierung; die Zufallszahlen werden dann auch nicht überschrieben.
Das heißt also, dass zuerst alle Spieler entsprechend Ihrer Zufallszahl sortiert und dann anschließend die Freilose an die vorgesehenen Positionen (entsprechend Spalte G) dazwischen geschoben/sortiert werden.
Wenn Du den ZZ-Generator nicht vom Sortiermakro aus aufrufst ("Call ZufallsZahl"), dann sollte diese Vorgehensweise auch mit demselben Ergebnis manuell so nachvollziehbar sein.

Gruß
WernerB.
Anzeige
AW: Spieler Auslosung (mit Freilose)
12.04.2005 10:54:05
Dan
Hallo Werner !
ECHT SUPER !
Funktioniert einwandfrei ... hab mich jetzt genau an Deine Vorgaben gehalten und es funktioniert echt toll !
Danke Dir .. echt nett von Dir mir so zu helfen !
Gruß -Dan2Web-

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige