ich gebe jetzt auf! Dies ist der letzte Post. Du solltest mal einen Excel-Grundkurs machen. Jetzt hast du "Lars Lehm" und "LarsLehm" (mit und ohne blank). Das passt halt nicht. Du musst überall die gleichen/identischen Namen verwenden!
19.11.2024, 13:23 (Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2024, 13:25 von ws-53.)
Anbei eine Version, bei welcher der Spielplan und die Rangliste per Power Query erzeigt werden. Dabei führen auch komplett identische Gesamtergebnisse zur Ranggleichheit.
19.11.2024, 20:29 (Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2024, 20:29 von Schmerzspender2000.)
Grüße gehn raus an Sigi!
Danke für den Hinweis! Das klappt jetzt. Ich weiß, es ist nicht einfach mit den Anfängern hier, aber trotzdem danke für die Geduld!
Für alle ans Ende Scrolle: Hier die Lösung: Badminton Turnier: Jeder gegen jeden Erstes Blatt Namen eingeben Zweites Blatt Spielstände eintragen Drittes Blatt Ligaansicht.
Hier das Makro, wenn das jemand einsehen möchte:
Code:
Sub GeneratePairings() Dim playerCount As Integer Dim i As Integer, j As Integer Dim row As Integer Dim playerRange As Range Dim cell As Range
' Spielerbereich festlegen (fix auf Zeilen 2 bis 45) Set playerRange = Sheets("Spielerübersicht").Range("D2:D45") ' Spalte D für Turniernamen verwenden
' Spieleranzahl zählen (nur nicht-leere Zellen in Spalte D) playerCount = 0 For Each cell In playerRange If Trim(cell.Value) <> "" Then playerCount = playerCount + 1 End If Next cell
' Zielblatt und Zelle für die Paarungen festlegen Dim pairingSheet As Worksheet Set pairingSheet = ThisWorkbook.Sheets("Turniermodus")
' Alte Paarungen löschen (nur Spalten C und D, damit Spalte B für Datum bleibt) pairingSheet.Range("C3:D1000").ClearContents
' Paarungen erstellen row = 3 ' Startzeile für die Paarungen (unterhalb der Kopfzeile) For i = 2 To playerCount + 1 For j = i + 1 To playerCount + 1 ' Spieler 1 und Spieler 2 aus der Spielerübersicht (Spalte D) Dim player1 As String, player2 As String player1 = Trim(Sheets("Spielerübersicht").Cells(i, 4).Value) ' Spalte D für Spieler 1 player2 = Trim(Sheets("Spielerübersicht").Cells(j, 4).Value) ' Spalte D für Spieler 2
' Nur Paarungen eintragen, wenn Spieler 1 und Spieler 2 gültige Namen haben If player1 <> "" And player2 <> "" Then pairingSheet.Cells(row, 3).Value = player1 ' Spieler 1 in Spalte C pairingSheet.Cells(row, 4).Value = player2 ' Spieler 2 in Spalte D row = row + 1 ' Nächste Zeile End If Next j Next i
' Nachricht mit der tatsächlichen Spieleranzahl MsgBox "Paarungen für " & playerCount & " Spieler wurden erstellt!" End Sub
Es dankt der Spender
@ ws-53 das sieht interessant aus. So wie ich das verstehe kommt das dann ohne Makros aus. Habe ich noch nie was von gehört. Wie starte ich diese Power Query? Also wenn ich jetzt Spieler hinzufüge, muss ich ja die Daten irgendwie aktualisieren. Wie mache ich das?
19.11.2024, 21:29 (Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2024, 21:29 von ws-53.)
Cursor iwo in die Tabelle > rechte Maustaste > Aktualisieren.
Dann musst du aber vorher oder nachher alle Ergebnisse löschen, da diese ja nicht zu den neuen Paarungen passen.
Unter > Daten > Abfragen und Verbindungen siehst du alle Abfragen, die du zur Bearbeitung öffnen kannst. In einer Abfrage kannst du dann von oben nach unten alle Schritte der Reihe nach anklicken, um zu sehen was passiert.
Immer wenn du neue Ergebnisse eingetragen hast, kannst du dann die Rangliste aktualisieren.
Folgende Änderungen habe ich in der aktuellen Version durchgeführt:
Bei der Bestimmung der Ranglistenpositionen hatte ich noch nicht alle notwendigen Kriterien berücksichtigt. Im Tabellenblatt "Rangliste" werden nun alle Kriterien genannt.
Weiterhin habe ich nun vorgesehen, das während des Turniers Spieler ein- und aussteigen können. Neue Spieler werden dann nach einer Aktualisierung in den Spielplan aufgenommen und noch nicht gespielte Matches, von ausgestiegenen Spielern, aus dem Spielplan entfernt. Somit werden bereits durchgeführte Matches, von ausgestiegenen Spielern, weiterhin in der Rangliste berücksichtigt. Die Zeitpunkte für Ein-/Ausstieg können terminiert werden.
Soll ein neues "Jeder gegen jeden" Turnier müssen alle Datenzeilen des Spielplans einmal manuell gelöscht werden.
Nach jeder nachträglichen Änderung der Teilnehmer und Aktualisierung des Spielplans, ändern sich dann auch die Spielnummern. Diese können somit nicht als Auswertungskriterium genutzt werden.
Der nachträgliche Ein-/Ausstieg hat den Vorteil, dass neue Vereinsmitglieder in das laufende Turnier einsteigen können, und Mitglieder, die aus iwelchen Gründen nicht mehr teilnehmen können/wollen, nicht mehr als noch mögliche Paarungen gezeigt werden.
Eine Sache der Praktikabilität noch... Ein Ergebnis eintragen bei 25 Spielern. Ich verwende die Suchfunktion und suche dann nach dem Vornamen. Das kann dann schon recht lange dauern bis man die Partie gefunden hat. Gibt es da nen clevereren Ansatz anstannt Strg+f?
08.12.2024, 14:33 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2024, 14:35 von ws-53.)
Ich habe mal in meine sehr komfortable PQ-Variante, die du vermutlich nicht benutzt eine Farbmarkierung eingebaut, die du zum filtern benutzen kannst. Dabei ist es egal, nach welchen Namensbestandteil du suchst und ob dieser in in "Spieler 1" oder "Spieler 2" enthalten ist.
09.12.2024, 13:20 (Dieser Beitrag wurde zuletzt bearbeitet: 09.12.2024, 13:20 von ws-53.)
Ich habe die Farbmarkierung, die zum Filtern benutzt wird, nun noch etwas erweitert.
Du kannst nun zusätzlich auswählen, ob zum gesuchten Spieler "alle", "offene" oder "gespielte" Matsches markiert werden sollen.
Weiterhin habe ich für die Filteraktionen 2 Buttons eingefügt und diese mit entsprechenden Makros verknüpft. Das ist vom Handling einfacher, als die Spaltenfunktionen auszuführen.
Und ereignisgesteuert wird nun bei einer Änderung der Filterauswahl, Die Filterung sofort ausgeführt, wenn vorher schon ein Filter aktiv war.
Die Makros sind auch als Text im Tabellenblatt "VBA Codes" enthalten.
@ws-53 Ähm... großen Dank. Kann ich dir irgendeinen Obulus überweisen? Das sieht schon sehr fantastisch aus. Ich scheitere allerdings an der Bedienung :D
1.) Fritz und Henrich haben bei Rang 3, bei Heinrich wird dann kein Rang angezigt 2.) Was macht tbl-Ergebnisspalten? 3.) In der Rangliste tauchen erst Spieler auf, wenn sie ein Spiel gemacht haben? 4.) Wie werden die Spiele nach der Eingabe der Spielernamen generiert? Über Rechtsklick aktualisieren? 5.) Habe noch einen Spieler Erik hinzugefügt und aktualisiert, dann Fehlermeldung: 6.) Manuelle Sicherung ist zum händischen eintragen der Erggebnisse?
1.) Fritz und Henrich haben bei Rang 3, bei Heinrich wird dann kein Rang angezigt Weil, aus meiner Sicht besser erkennbar, wird bei Ranggleichheit per BF nur das Erste auftreten gezeigt 2.) Was macht tbl-Ergebnisspalten? In der Abfrage "Spielplan" müssen ja auch die Spalten für die Ergebnisse erzeugt werden. Da habe ich halt den Weg gewählt, diese als Tabelle anzufügen.
3.) In der Rangliste tauchen erst Spieler auf, wenn sie ein Spiel gemacht haben? JA
4.) Wie werden die Spiele nach der Eingabe der Spielernamen generiert? Über Rechtsklick aktualisieren? Ja: Cursor iwo, in die Tabelle > rechte Maustaste > Aktualisieren 5.) Habe noch einen Spieler Erik hinzugefügt und aktualisiert, dann Fehlermeldung: Von Cobol und ABAP bin ich es gewohnt, dass sobald die Erste if-Bedingung nicht erfüllt wird, der Rest nicht mehr geprüft wird.
Durch Änderung von: If Target.Address = "$D$1" And Target.Value = "" And Status_Filter = "aktiv" Then Call reset_Filter Exit Sub End If
auf: If Target.Address = "$F$1" Then If Target.Value <> "" And Status_Filter = "aktiv" Then Call set_Filter Exit Sub End If End If
Konnte ich das Problem beseitigen. 6.) Manuelle Sicherung ist zum händischen eintragen der Erggebnisse? Dieses Tabellenblatt kann gelöscht werden. Das hatte ich mir nur für den Fall angelegt, dass wenn beim ändern und testen, die bereits erfassten Dummyergebnisse mal verlorengehen, ich diese wieder in den Spielplan kopieren kann.
Da ich grundsätzlich damit unzufrieden war, dass nach Änderungen, an der Spielerliste, die Spielnummern immer wieder neu generiert werden, habe ich dies dahingehend geändert, dass nun einmal vergebenen Spielnummern erhalten bleiben. Somit entstehen jetzt Lücken, wenn Spieler vorzeitig aussteigen und neue Nummern, wenn Spieler nachträglich hinzukommen.
Über: Daten > Abfragen und Verbindungen, werden die alle in der Mappe enthaltenen Abfragen angezeigt, die du auch zur Bearbeitung öffnen kannst. Du siehst dann alle Schritte der Abfrage, deren M-Code in den meisten Fällen durch zusammenklicken entstanden ist. Der Cursor steht dann immer auf dem letzten Schritt der Abfrage und zeigt dir somit immer das Endergebnis der geöffneten Abfrage. Wenn du sehen willst, wie es zu dem Ergebnis kam, dann musst du nur, von oben nach unten, alle Schritte einzeln anklicken und siehst in den meisten Fällen sofort, was der jeweilige Schritt bewirkt hat.
Wenn du dich durch das öffnen einer Abfrage im Power Query-Editor befindest, dann werden dir bei Auswahl: Ansicht > Abfrageabhängigkeiten, diese grafisch angezeigt.
Willst du mehr über das geniale Tool "Power Query" erfahren, findest du auf YouTube sehr viele Videos und bei entsprechender Suche auch PQ-Blogger die ihr Wissen zum besten geben. Auch wenn PQ seit der Version 2016 immer in Excel enthalten ist, kennen es viele noch nicht. Auch deshalb, wenn ich eine ganz spezielle Fragestellung habe, formuliere ich diese dann auf englisch, um eine Antwort zu finden.
Im übrigen habe ich, trotz miserabler Technik, auch rund 25 Jahre Badminton gespielt. Konnte dabei die miserable Technik oft durch meine sehr gute Kondition (Rennrad fahren) kompensieren. Viele Jahre habe ich dabei in dem Verein gespielt, der aktuell den deutschen Meister stellt.