Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1032to1036
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

Auslosung

Auslosung
21.12.2008 14:38:00
Markus
Hallo zusammen,
ich habe im Archiv nichts passendes gefunden, deswegen wende ich mich jetzt mit einem Beitrag an Euch.
Ich würde gerne für ein Kickerturnier so ein Modus haben analog der Championsleague einrichten. Sprich, es sollen bei einer Gruppenauslosung einige Spieler (pro Gruppe maximal 1 Spieler) gesetzt sein und der Rest soll zugelost werden. Da das Turnier jedes Mal eine andere Anzahl von Spielern hat, wäre eine variable Gruppenvergabe (z.B. 3 Gruppen bis 8 Gruppen) toll.
Bei der Auslosung wäre wichtig, dass kein Spieler aus dem gleichen Verein in eine Gruppe gelost wird.
Hier einfach mal eine Beispieltabelle. Links stehen die Spieler und die Vereinzugehörigkeit, rechts wäre das Ergebnis der Auslosung.
https://www.herber.de/bbs/user/57793.xls
Hat hier jemand Rat? Oder weiß jemand, wo man sowas machen lassen könnte? Ich habe nur bescheidende Ahnung von VBA. :-(
Vielen Dank im Voraus!
Viele Grüße
Markus

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auslosung
21.12.2008 18:20:00
Daniel
Hi
nicht so ganz einfach, aber dieser Code sollte das Problem lösen:

Sub Auslosung()
Dim Calc As Long
Dim Anz As Long, AnzGrp As Long, AnzSp As Long
Dim i As Long, G As Long, S As Long
Dim Gruppen As Range
Dim ListeOrg
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.StatusBar = "Auslosung läuft"
'--- Spielerliste original sichern, allte Gruppeneinteilung löschen
ListeOrg = Range("A1").CurrentRegion.Value
Range("H1").CurrentRegion.ClearContents
Application.ScreenUpdating = False
'--- Gruppengrösse und Anzahl Spieler pro Gruppe ermitteln
AnzGrp = Range("F1").Value
AnzSp = WorksheetFunction.RoundUp((WorksheetFunction.CountA(Range("A:A")) - 1) / AnzGrp, 0)
'--- Gesetzte Spieler nach oben sortieren und benötigte Formeln einfügen
With Range("A1").CurrentRegion
.Sort key1:=Range("C2"), order1:=xlAscending
.Columns(3).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RAND()+COUNTIF(aktGrp,RC[-1])"
End With
'--- Gruppen anlegen
For i = 1 To AnzGrp * 2 Step 2
With Range("H1").Offset(0, i - 1).Resize(, 2)
.Cells(1, 1).Value = "Gruppe " & (i + 1) / 2
.HorizontalAlignment = xlCenterAcrossSelection
.Font.Bold = True
End With
Next
'--- Spielernamen aus Liste in Gruppenfelder eintragen
Set Gruppen = Range("H2").Resize(AnzSp, AnzGrp * 2)
For S = 1 To AnzSp
For G = 1 To AnzGrp * 2 Step 2
If Range("C2").HasFormula Then
'--- Wenn nicht gesetzt, liste neu sortieren, Vereine, die in Gruppe schon  _
vorhanden sind ans Ende
Application.Names.Add "aktGrp", Gruppen.Columns(G + 1)
Application.Calculate
Range("A1").CurrentRegion.Sort key1:=Range("C2"), order1:=xlAscending, header:= _
xlYes
End If
Gruppen(S, G).Value = Range("A2")
Gruppen(S, G + 1).Value = Range("B2")
Range("A2:C2").Delete shift:=xlUp
Next
Next
'--- Ursprungliche Spielerliste zurückschreiben
Range("A1").Resize(UBound(ListeOrg, 1), UBound(ListeOrg, 2)).Value = ListeOrg
'--- Vereinsspalte aus Gruppenliste löschen, Falls die Vereine angezeigt werden sollen
'--- diesen Codeabschnitt löschen oder auskommentieren
Gruppen.Rows(1).Offset(-1, 0).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
Gruppen(1).CurrentRegion.Rows(1).HorizontalAlignment = xlCenter
'--- Ursprüngliche Excel-Einstellungen wiederherstellen
Application.Calculation = Calc
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub


damit es sicher funktioniert, sollte auch für jede Gruppe ein Spieler gesetzt werden, ansonsten könnte es doch vorkommen, daß mehrere Spieler aus dem gleichen Verein zusammentreffen.
das Makro ist an deine Beispieldatei angepasst und läuft ohne grössere Änderungen auch nur für diese Spaltenanordnung, auch die Leerspalten (z.B. D) müssen als solche erhalten bleiben.
Spieler, die in Spalte C einen beliebigen Wert haben, gelten als gesetzt, für ungesezte Spieler muss die Spalte C leer sein.
über die Vergabe der Zahlen 1-x für "Gesetzt", können die gesetzen Spieler bestimmten Gruppen zugeordnet werden.
Gruß, Daniel

Anzeige
Auslosung -> TOP-Ergebnis !
21.12.2008 18:56:00
Markus
Hallo Daniel,
ich bin sprachlos. Das funzt perfekt. Einfach genial. Das müsste man eigentlich irgendwo veröffentlichen. Bin sicher nicht der einzige, der sofort sucht. Da kann jetzt auch keiner mehr meckern, wenn er in eine schlechte Gruppe gerät. Ich sage schon einmal ein riesen "danke schön".
Dumme (und vielleicht unverschämte) Frage. Kannst Du mir auch für die erste KO-Runde etwas zaubern? Nach der Gruppenphase werden ja die Gruppenersten in einen Topf gesteckt und die Gruppenzweiten in den zweiten Topf. Die Paarungen ergeben sich dann aus den beiden Töpfen. Wichtig dabei wäre, dass kein Spieler aus dem gleichen Verein in der ersten KO-Runde gegeneinander ausgelost antreten muss.
Vorlage könnte die hochgeladene Tabelle sein, bzw. dort wo Du die Gruppen (ab Spalte H) angelegt hast. Gruppenerster wäre dann jeweils der erste Spieler nach der Überschrift und der Gruppenzweite käme dann halt darunter.
Wäre sowas machbar für Dich? Ich weiß, ich bin unverschämt. Aber das wäre echt der Clou, wenn ich das beim nächsten Kickerturnier zeigen könnte.
Viele Grüße
Markus
Anzeige
AW: Auslosung -> TOP-Ergebnis !
21.12.2008 19:21:56
Daniel
Hi
machbar ist das schon, aber ich will den Excelprogrammieren, die davon leben müssen, ja nicht die Jobs wegnehmen ;-)
andes gesagt, zu welcher gegenleistung währes du für eine entsprechende Lösung bereit?
Gruß, Daniel
AW: Auslosung -> TOP-Ergebnis !
21.12.2008 19:38:47
Markus
Über die Frage bin ich jetzt überrascht, bislang habe ich im Forum immer gelesen, dass man nichts für Geld macht, sondern eher weil da Fun die Hauptrolle spielt.
Über welche Summe hast Du denn nachgedacht?
AW: Auslosung -> Nachfolgefrage
21.12.2008 20:14:00
Daniel
Hi
klar, alles was man im Forum macht, macht man unentgeltlich, aber eben auch freiwillig.
wenn man keine Lust hat, eine Frage für lau zu lösen oder zu beantworten, dann antwortet man einfach nicht.
ich habe mir nur die Freiheit genommen, dir mitzuteilen, wo meine Grenze ist, anstatt einfach nicht zu antworten und dich im Unklaren zu lassen.
was das geschäftliche angeht. hast du ne Mailaddresse? PN gibts hier im Forum ja nicht.
ansonsten kannst du ja warten, ob jemand anderes bereit ist, sich mit der Frage zu beschäftigen, es gibt ja genug andere Experten hier, daher stell ich die Frage wieder auf offen
Gruß, Daniel
Anzeige
Musste mal klargestellt werden. oT
22.12.2008 20:35:00
Gerd
oT

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige