Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Turnierplan - jeder gegen jeden - 32 Teilnehmer - 2 Plätze

Forumthread: Turnierplan - jeder gegen jeden - 32 Teilnehmer - 2 Plätze

Turnierplan - jeder gegen jeden - 32 Teilnehmer - 2 Plätze
13.04.2026 15:31:10
HGS
Hallo,
Ich suche für die Durchführung eines Boule-Turniers eine Möglichkeit mit Excel.
Wer kann helfen?

MFG
HGS
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Turnierplan
13.04.2026 16:06:08
Sigi.21
Hallo,

wieviel Zeit steht zur Verfügung?

Jeder vs. jeden , das macht 496 Paarungen (n-1)*(n/2). Wenn du Spieltage (vgl. Bundesliga) veranstalten willst, sind das 31 Spieltage (n-1).
Ergibt je Spieltag 16 Partien. Die kannst du auf 2 Plätze verteilen. D.h. es können nur 2 Partien gleichzeitig laufen. Das dauert Monate!

Ist es das, was du suchst?

Gruß Sigi
Anzeige
Turnierplan jeder gegen jeden 32 Teilnehmer 2 Plätze
13.04.2026 19:51:23
HGS
Hallo Sigi,

Vielen Dank für Deine Antwort.
Ich möchte auf faire Weise einen Vereinsmeister ermitteln.
Das es mit diesem System soviel Spiele sind, habe ich nicht erwartet.
Vielleicht gibt es ja noch eine andere Möglichkeit?

MFG HGS
Turnierplan
13.04.2026 20:01:28
Sigi.21
Hallo,

mach es wie bei WMs gemacht wird:
z. Bsp.
- Vorrunde in Gruppen (32 in 8 Gruppen, jew. die 2 Besten qualifizieren sich für ...)
- Achtelfinale (16, davon qualifiz. sich 8 für ...)
- Viertelfinale (8, davon qualifiz. sich 4 für ...)
- Halbfinale (4, davon qualifiz. sich 2 für ...)
- FINALE

Das ergibt dann noch 63 Spiele.
https://www.herber.de/bbs/user/180536.xlsx

Gruß Sigi
Anzeige
Turnierplan - jeder gegen jeden - 32 Teilnehmer - 2 Plätze
13.04.2026 20:28:14
HGS
Hallo Sigi,

Das sieht schon besser aus.
Werde mich damit beschäftigen.
Dankeschön.

MFG HGS
Turnierplan VBA
13.04.2026 16:31:50
UweD
Hallo


eine VBA Lösung (teilweise Unterstützung von ChatGPT)
Es gibt 3 Blätter
Auf dem Ersten erstellst du 2 Buttons, die das geweilige Makro aufrufen

Start:

- Du trägst die Anzahl der Plätze ein
- und ab A6 die Spieler
- Du startest die Tunierplanerstellung

Arbeitsblatt mit dem Namen 'Start'
 AB
1  
2Spieler8
3Plätze2
4  
5Namen 
6UweD 
7Er 
8Ich 
9Sie 
10Er Auch 
11Isabella 
12Caro 
13Noch Jemand 
14  

ZelleFormel
B2=ANZAHL2(A6:A100)


=&GT Spielplan (wird automatisch erzeugt)
Arbeitsblatt mit dem Namen 'Spielplan'
 ABCDEFGHIJ
1RundeMatchSpieler 1Spieler 2PlatzSlot (Spiele parallel)Punkte Team 1Punkte Team 2 Sieg: 1 Punkt; Niederlage: 0 Punkte
211UweDNoch JemandPlatz 1110  
312ErCaroPlatz 2110  
413IchIsabellaPlatz 1210  
514SieEr AuchPlatz 2210  
621UweDCaroPlatz 1110  
722Noch JemandIsabellaPlatz 2110  
823ErEr AuchPlatz 1210  
924IchSiePlatz 2210  
1031UweDIsabellaPlatz 1101  
1132CaroEr AuchPlatz 2101  
1233Noch JemandSiePlatz 1201  
1334ErIchPlatz 2201  
1441UweDEr AuchPlatz 1101  
1542IsabellaSiePlatz 2101  
1643CaroIchPlatz 1201  
1744Noch JemandErPlatz 2201  
1851UweDSiePlatz 1101  
1952Er AuchIchPlatz 2101  
2053IsabellaErPlatz 1201  
2154CaroNoch JemandPlatz 2201  
2261UweDIchPlatz 1101  
2362SieErPlatz 2101  
2463Er AuchNoch JemandPlatz 1201  
2564IsabellaCaroPlatz 2210  
2671UweDErPlatz 1110  
2772IchNoch JemandPlatz 2110  
2873SieCaroPlatz 1210  
2974Er AuchIsabellaPlatz 2210  


- Hier gibst du danach in G:H die Punkte ein

- Dann startest du die Auswertung:

Rangliste:
Arbeitsblatt mit dem Namen 'Rangliste'
 ABC
1SpielerPunkteDifferenz
2Ich77
3Er53
4Sie53
5UweD3-1
6Noch Jemand3-1
7Er Auch3-1
8Isabella2-3
9Caro0-7


https://www.herber.de/bbs/user/180532.xlsm

LG UweD


Enthält diesen Code:
Option Explicit


Sub TurnierErstellen()

Dim wsStart As Worksheet
Dim wsPlan As Worksheet
Dim n As Long, plaetze As Long
Dim i As Long, j As Long, r As Long
Dim players() As String
Dim rowOut As Long
Dim arr As Variant
Dim temp As String

Set wsStart = ThisWorkbook.Sheets("Start")

n = wsStart.Range("B2").Value
plaetze = wsStart.Range("B3").Value

ReDim players(1 To n)

For i = 1 To n
players(i) = wsStart.Cells(i + 5, 1).Value
Next i

' Spielplan Sheet
On Error Resume Next
Set wsPlan = ThisWorkbook.Sheets("Spielplan")
On Error GoTo 0

wsPlan.Cells.Clear

wsPlan.Range("A1:J1") = Array("Runde", "Match", "Spieler 1", _
"Spieler 2", "Platz", "Slot (Spiele parallel)", "Punkte Team 1", "Punkte Team 2", _
"", "Sieg: 1 Punkt; Niederlage: 0 Punkte")

rowOut = 2

' Round Robin (simple rotation)
For i = 1 To n - 1

For j = 1 To n / 2

Dim p1 As String, p2 As String
p1 = players(j)
p2 = players(n - j + 1)

wsPlan.Cells(rowOut, 1).Value = i
wsPlan.Cells(rowOut, 2).Value = j
wsPlan.Cells(rowOut, 3).Value = p1
wsPlan.Cells(rowOut, 4).Value = p2

wsPlan.Cells(rowOut, 5).Value = "Platz " & ((j - 1) Mod plaetze + 1)
wsPlan.Cells(rowOut, 6).Value = Int((j - 1) / plaetze) + 1

rowOut = rowOut + 1

Next j

' rotate players
temp = players(n)
For j = n To 3 Step -1
players(j) = players(j - 1)
Next j
players(2) = temp

Next i

MsgBox "Turnierplan erstellt!", vbInformation
wsPlan.Activate

End Sub

Sub RanglisteBoule()

Dim wsPlan As Worksheet, wsRank As Worksheet
Dim lastRow As Long, i As Long

Dim pts As Object, diff As Object

Set pts = CreateObject("Scripting.Dictionary")
Set diff = CreateObject("Scripting.Dictionary")

Set wsPlan = ThisWorkbook.Sheets("Spielplan")
lastRow = wsPlan.Cells(wsPlan.Rows.Count, 1).End(xlUp).Row

For i = 2 To lastRow

Dim p1 As String, p2 As String
Dim s1 As Variant, s2 As Variant

p1 = wsPlan.Cells(i, 3).Value
p2 = wsPlan.Cells(i, 4).Value

s1 = wsPlan.Cells(i, 7).Value
s2 = wsPlan.Cells(i, 8).Value

If p1 = "" Or p2 = "" Then GoTo skip

If Not pts.exists(p1) Then pts(p1) = 0
If Not pts.exists(p2) Then pts(p2) = 0
If Not diff.exists(p1) Then diff(p1) = 0
If Not diff.exists(p2) Then diff(p2) = 0

If IsNumeric(s1) And IsNumeric(s2) Then

' Punkte zählen
If s1 > s2 Then
pts(p1) = pts(p1) + 1
ElseIf s2 > s1 Then
pts(p2) = pts(p2) + 1
Else
' Unentschieden (falls erlaubt)
pts(p1) = pts(p1) + 0.5
pts(p2) = pts(p2) + 0.5
End If

' Differenz (Boule entscheidend!)
diff(p1) = diff(p1) + (s1 - s2)
diff(p2) = diff(p2) + (s2 - s1)

End If

skip:
Next i

' Rangliste erstellen
On Error Resume Next
Set wsRank = ThisWorkbook.Sheets("Rangliste")
On Error GoTo 0

If wsRank Is Nothing Then
Set wsRank = ThisWorkbook.Sheets.Add
wsRank.Name = "Rangliste"
End If

wsRank.Cells.Clear

wsRank.Range("A1:C1") = Array("Spieler", "Punkte", "Differenz")

Dim r As Long: r = 2
Dim key As Variant

For Each key In pts.Keys
wsRank.Cells(r, 1).Value = key
wsRank.Cells(r, 2).Value = pts(key)
wsRank.Cells(r, 3).Value = diff(key)
r = r + 1
Next key

' Sortierung: Punkte zuerst, dann Differenz
wsRank.Range("A1:C" & r - 1).Sort _
Key1:=wsRank.Range("B2"), Order1:=xlDescending, _
Key2:=wsRank.Range("C2"), Order2:=xlDescending, _
Header:=xlYes

MsgBox "Boule-Rangliste aktualisiert!", vbInformation
wsRank.Activate
End Sub

Anzeige
Turnierplan - jeder gegen jeden - 32 Teilnehmer - 2 Plätze
13.04.2026 20:23:03
HGS
Hallo UweD,

Danke für die schnelle Antwort.
Ich werde mich mal damit beschäftigen.

MFG HGS
Turnierplan - jeder gegen jeden - 32 Teilnehmer - 2 Plätze
14.04.2026 13:20:02
HGS
Hallo UweD,

ich habe mir Deine Datei heruntergeladen.
Leider musste ich feststellen, dass diese fehlerhaft ist.
Lt @Sigi müssten es insgesamt (n-1)*(n/2) Spiele sein.
Bei Dir sind es 24. Zumindest bei 7 Spielern.
Auch spielen einige Spieler gegen sich selbst.

Vielleicht kontrollierst Du Deine Datei noch einmal.

Freundliche Grüße
HGS

Anzeige
Turnierplan - jeder gegen jeden - 32 Teilnehmer - 2 Plätze
14.04.2026 22:51:53
HGS
Hallo UweD,

ich habe mir Deine Datei heruntergeladen.
Leider musste ich feststellen, dass diese fehlerhaft ist.
Lt @Sigi müssten es insgesamt (n-1)*(n/2) Spiele sein.
Bei Dir sind es 24. Zumindest bei 7 Spielern.
Auch spielen einige Spieler gegen sich selbst.

Vielleicht kontrollierst Du Deine Datei noch einmal.

Freundliche Grüße
HGS
Anzeige
Turnierplan
14.04.2026 16:42:15
Sigi.21
Hallo HGS,

beiliegend findest du ein Makro, das dir alle Paarungen erzeugt.
Wie folgt bedienen:
1. Die Namen der Teilnehmer mit Maus markieren
2. bei gedrückter Strg-Taste zusätzlich die erste Ausgabezelle markieren (Ausgabe erfolgt ab dort, eins nach rechts und nach unten)
3. Button: "Paarungen ermitteln" drücken

Bei ungerader Anzahl der Teilnehmer, bleibt bei jedem Spieltag einer "spielfrei".
https://www.herber.de/bbs/user/180550.xlsm

Gruß Sigi
Anzeige
Turnierplan
16.04.2026 12:42:37
UweD
Hallo

War paar Tage weg. Deshalb erst jetzt...

Bei ungerader Spielerzahl trat der Fehler auf.

In dem Fall muss ein Spieler in der Runde pausieren.

Der geänderte Code
Option Explicit


Sub TurnierErstellen()

Dim wsStart As Worksheet
Dim wsPlan As Worksheet
Dim n As Long, plaetze As Long
Dim i As Long, j As Long
Dim players() As String
Dim rowOut As Long
Dim temp As String
Dim isOdd As Boolean

Set wsStart = ThisWorkbook.Sheets("Start")

n = wsStart.Range("B2").Value
plaetze = wsStart.Range("B3").Value

' Prüfen ob ungerade
If n Mod 2 > 0 Then
isOdd = True
n = n + 1 ' Dummy hinzufügen
End If

ReDim players(1 To n)

' Spieler einlesen
For i = 1 To n
If i = wsStart.Range("B2").Value Then
players(i) = wsStart.Cells(i + 5, 1).Value
Else
players(i) = "BYE"
End If
Next i

Set wsPlan = ThisWorkbook.Sheets("Spielplan")
wsPlan.Cells.Clear

wsPlan.Range("A1:G1") = Array("Runde", "Match", "Spieler 1", _
"Spieler 2", "Platz", "Punkte Team 1", "Punkte Team 2")

rowOut = 2

' Round Robin
For i = 1 To n - 1

For j = 1 To n / 2

Dim p1 As String, p2 As String

p1 = players(j)
p2 = players(n - j + 1)

' ?? BYE = kein Spiel
If p1 > "BYE" And p2 > "BYE" Then

wsPlan.Cells(rowOut, 1).Value = i
wsPlan.Cells(rowOut, 2).Value = j
wsPlan.Cells(rowOut, 3).Value = p1
wsPlan.Cells(rowOut, 4).Value = p2

wsPlan.Cells(rowOut, 5).Value = "Platz " & ((j - 1) Mod plaetze + 1)
'wsPlan.Cells(rowOut, 6).Value = Int((j - 1) / plaetze) + 1

rowOut = rowOut + 1

End If

Next j

' Rotation
temp = players(n)
For j = n To 3 Step -1
players(j) = players(j - 1)
Next j
players(2) = temp

Next i

MsgBox "Turnierplan erstellt (inkl. Freilose)!", vbInformation
wsPlan.Activate

End Sub



Sub RanglisteBoule()

Dim wsPlan As Worksheet, wsRank As Worksheet
Dim lastRow As Long, i As Long

Dim pts As Object, diff As Object

Set pts = CreateObject("Scripting.Dictionary")
Set diff = CreateObject("Scripting.Dictionary")

Set wsPlan = ThisWorkbook.Sheets("Spielplan")
lastRow = wsPlan.Cells(wsPlan.Rows.Count, 1).End(xlUp).Row

For i = 2 To lastRow

Dim p1 As String, p2 As String
Dim s1 As Variant, s2 As Variant

p1 = wsPlan.Cells(i, 3).Value
p2 = wsPlan.Cells(i, 4).Value

s1 = wsPlan.Cells(i, 6).Value
s2 = wsPlan.Cells(i, 7).Value

If p1 = "" Or p2 = "" Then GoTo skip

If Not pts.exists(p1) Then pts(p1) = 0
If Not pts.exists(p2) Then pts(p2) = 0
If Not diff.exists(p1) Then diff(p1) = 0
If Not diff.exists(p2) Then diff(p2) = 0

If IsNumeric(s1) And IsNumeric(s2) Then

' Punkte zählen
If s1 > s2 Then
pts(p1) = pts(p1) + 1
ElseIf s2 > s1 Then
pts(p2) = pts(p2) + 1
Else
' Unentschieden (falls erlaubt)
pts(p1) = pts(p1) + 0.5
pts(p2) = pts(p2) + 0.5
End If

' Differenz (Boule entscheidend!)
diff(p1) = diff(p1) + (s1 - s2)
diff(p2) = diff(p2) + (s2 - s1)

End If

skip:
Next i

' Rangliste erstellen
On Error Resume Next
Set wsRank = ThisWorkbook.Sheets("Rangliste")
On Error GoTo 0

If wsRank Is Nothing Then
Set wsRank = ThisWorkbook.Sheets.Add
wsRank.Name = "Rangliste"
End If

wsRank.Cells.Clear

wsRank.Range("A1:C1") = Array("Spieler", "Punkte", "Differenz")

Dim r As Long: r = 2
Dim key As Variant

For Each key In pts.Keys
wsRank.Cells(r, 1).Value = key
wsRank.Cells(r, 2).Value = pts(key)
wsRank.Cells(r, 3).Value = diff(key)
r = r + 1
Next key

' Sortierung: Punkte zuerst, dann Differenz
wsRank.Range("A1:C" & r - 1).Sort _
Key1:=wsRank.Range("B2"), Order1:=xlDescending, _
Key2:=wsRank.Range("C2"), Order2:=xlDescending, _
Header:=xlYes

MsgBox "Boule-Rangliste aktualisiert!", vbInformation
wsRank.Activate
End Sub



LG UweD
Anzeige
AW: Turnierplan
16.04.2026 17:08:05
HGS
Hallo UweD,
Danke für den neuen VBA-Code.
Er ist für mich FAST ok.
Es wäre schön, wenn bei der Erstellung der Rangliste NUR der Gewinner 1 Punkt bekommen würde.
Bei Punktgleichheit kommen die Differenz-Punkte in die Wertung.

Hoffentlich ist es nicht zuviel Aufwand.

MFG HGS
Anzeige
AW: Turnierplan
21.04.2026 11:19:08
UweD
Hallo


Wenn die das weg löschst (oder auskommentierst) müsste das reichen.




Else
' Unentschieden (falls erlaubt)
pts(p1) = pts(p1) + 0.5
pts(p2) = pts(p2) + 0.5


LG UweD
Anzeige
AW: Turnierplan
21.04.2026 15:32:42
HGS
Hallo,
Dankeschön für die Info.
Jetzt passt es.
Ich wünsche noch einen schönen Tag.
MFG HGS
Turnierplan - jeder gegen jeden - 32 Teilnehmer - 2 Plätze
14.04.2026 16:54:30
HGS
Hallo Sigi,

Die Datei hat mir sehr geholfen.
Ich bedanke mich recht herzlich.

MFG HGS
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18