Ranglisten-Plätze nach Wert sortieren

Hallöchen!

Ich habe eine Rangliste fürs Jugendtraining (Tischtennis) erstellt. Eine von vier Top 15 soll die Anwesenheit bei den Spielen sein (um die Kinder zu motivieren :wink:). Die Rangliste sieht wie folgt aus: Platz / Name / Anwesenheit in Prozent! Meine Sortierung erfasst „Name & Anwesenheit“ und wird nach „Anwesenheit“ geordnet. Da allerdings viele Plätze mehrfach belegt werden, würde ich es gerne so einrichten, dass Excel automatisch die Platznummern verteilt. Wenn bspw. drei Leute 100% anwesend waren, so sollen alle drei „Platz 1“ bekommen usw.

Über jede Idee bin ich dankbar!

Viele Grüße,
Daniel

PS: Wer interesse an der Rangliste hat, dem schicke ich sie gerne zu, wenn sie fertig ist! Einfach ne kurze Mail an: [email protected]

Ich habe eine Rangliste fürs Jugendtraining (Tischtennis)
erstellt. Eine von vier Top 15 soll die Anwesenheit bei den
Spielen sein
(um die Kinder zu motivieren :wink:). Die Rangliste
sieht wie folgt aus: Platz / Name / Anwesenheit in Prozent!
Meine Sortierung erfasst „Name & Anwesenheit“ und wird nach
„Anwesenheit“ geordnet. Da allerdings viele Plätze mehrfach
belegt werden, würde ich es gerne so einrichten, dass Excel
automatisch die Platznummern verteilt. Wenn bspw. drei Leute
100% anwesend waren, so sollen alle drei „Platz 1“ bekommen
usw.

Moin Daniel,

Eine von vier Top 15 soll die Anwesenheit bei den Spielen sein

versteh ich jetzt nicht, speziell das „Eine von 4 Top 15“ :frowning:
Das andere verstehe ich so, da ist eine Tabelle mit 3 Spalten,
Rang/Name/Anwesenheit.
In Name stehen die Namen und in Anwesenheit die Anwesenheit( an dem Tag, im Monat?) in %.
Aufgrund der Anwesenheit soll die Tabelle sortiert werden, ggfs die Namen nach ABC und dann die Plätze verteilt werden, wobei gleiche Anwesenheit gleichen Platz bedeutet.
Soll das dann monatlich, wöchentlich gespeichert werden?
Also dass da ein Spieler sehen kann wie sein Ranglistenverlauf in einem Jahr war?
Gruß
Reinhard
ps: wir hatten in unserm TT-verein eine Dauer-Rangliste, alle standen untereinander und der jeweils untere konnte den, der direkt über ihm stand, zu einem Spiel fordern, je nach Ausgang blieb das dann gleich oder es wurden dann die Plätze getauscht.

Moin Daniel, eine von vier Top 15 soll die Anwesenheit bei den
Spielen sein versteh ich jetzt nicht, speziell das „Eine von 4
Top 15“

Guten Morgen und erstmal vielen Dank für die super schnelle Antwort!
Ich habe in der Rangliste insgesamt 4 „Top 15“ integriert. Der beste nach „Spielen“, „Sätzen“, „Punkten“ und eben nach „Anwesenheit“. Die Sortierung der anderen drei klappt einwandfrei …

Das andere verstehe ich so, da ist eine Tabelle mit 3 Spalten,
Rang/Name/Anwesenheit. In Name stehen die Namen und in Anwesenheit
die Anwesenheit(an dem Tag, im Monat?) in %.

Ich lasse die Jugendlichen ab und an beim Training (nicht immer) gegeneinander spielen. Da nicht immer alle beim Training sind, habe ich mir das System der „Endlos-Rangliste“ ausgedacht, wo ich jedes Mal zufällige Paarungen auslose. So spielen, nicht wie beim üblichen Model -wo der untere den oberen herausfordert- immer die gleichen gegeneinander.

Aufgrund der Anwesenheit soll die Tabelle sortiert werden,
ggfs die Namen nach ABC und dann die Plätze verteilt werden,
wobei gleiche Anwesenheit gleichen Platz bedeutet.
Soll das dann monatlich, wöchentlich gespeichert werden?
Also dass da ein Spieler sehen kann wie sein Ranglistenverlauf
in einem Jahr war?

Ich schreibe die Spielergebnisse in eine Tabelle. Die Anwesenheit wird aus dem Wert ermittelt, wie oft der Name in dieser Tabelle auftaucht. Den Prozentwert ermittel ich aus der Anzahl der insgesamt gespielten Runden in Kombination mit der Anzahl der tatsächlich mitgespielten Runden des Spielers. Das Datum habe ich zur Info eingetragen, soll aber bei der Anwesenheit keine Bedeutung spielen.

Gruß
Reinhard
ps: wir hatten in unserm TT-verein eine Dauer-Rangliste, alle
standen untereinander und der jeweils untere konnte den, der
direkt über ihm stand, zu einem Spiel fordern, je nach Ausgang
blieb das dann gleich oder es wurden dann die Plätze
getauscht.

Wir hatten früher auch sowas ähnliches in Pyramidenform. Diese Rangliste wollte ich aber online stellen. Zumal wollte ich nicht nur eine Top 15 erstellen, sondern möglichst mehrere auf Platz 1 haben. Die Anwesenheit schien mir hier eine geeignete Form, um auch schlecht spielenden Kindern die Chance zu geben, ganz oben zu stehen :wink:

Gruß Daniel

Ich habe eine Rangliste fürs Jugendtraining (Tischtennis)
erstellt. Eine von vier Top 15 soll die Anwesenheit bei den
Spielen sein (um die Kinder zu motivieren :wink:). Die Rangliste
sieht wie folgt aus: Platz / Name / Anwesenheit in Prozent!
Meine Sortierung erfasst „Name & Anwesenheit“ und wird nach
„Anwesenheit“ geordnet. Da allerdings viele Plätze mehrfach
belegt werden, würde ich es gerne so einrichten, dass Excel
automatisch die Platznummern verteilt. Wenn bspw. drei Leute
100% anwesend waren, so sollen alle drei „Platz 1“ bekommen
usw.

Moin Daniel,
probier mal das nachfolgende Makro, es liefert die nachstehende Tabelle.
Gruß
Reinhard

 A B C 
Platz Name Anwesenheit
1 Antom 100
5 paul 21
1 frieda 100
2 harry 80
2 sally 80
4 nieda 21,1
1 stella 100
3 franz 25

mit folgenden Formeln in A:
 A
 Platz
=Rang1(C2;$C$2:blush:C$9)
=Rang1(C3;$C$2:blush:C$9)
=Rang1(C4;$C$2:blush:C$9)
=Rang1(C5;$C$2:blush:C$9)
=Rang1(C6;$C$2:blush:C$9)
=Rang1(C7;$C$2:blush:C$9)
=Rang1(C8;$C$2:blush:C$9)
=Rang1(C9;$C$2:blush:C$9)

'Anwesentheitswerte der Personen, Personenanzahl in Anz(0)
Public Anz()
'AnwesendsWerte ohne doppelte Werte, Anzahl davon in Anz2(0)
Public Anz2()
'Merker sorgt dafür, dass nicht bei jedem, der Rang pro Anwesendheit neu berechnet werden muss
Public Merker As Integer
Function Rang1(ByVal anw, ByVal Bereich As Range) As Integer
'Application.Volatile
If Merker = 0 Then
' MsgBox "hier"
 ReDim Anz(Bereich.Rows.Count)
 ReDim Anz2(Bereich.Rows.Count)
 Anz2(0) = 0
 Anz(0) = Bereich.Rows.Count
 n = 1
 For Each Zelle In Bereich 'Einlesen von Anz()
 Anz(n) = Zelle.Value
 n = n + 1
 Next Zelle
 For n = 1 To Anz(0) - 1 'Sortieren, Höchste zuerst
 For m = n + 1 To Anz(0)
 If Anz(m) \> Anz(n) Then
 h = Anz(n)
 Anz(n) = Anz(m)
 Anz(m) = h
 End If
 Next m
 Next n
 For n = 1 To Anz(0) - 1 'Anz() ohne Doppelte in Anz2(), letzter Wert fehlt noch
 If Anz(n) Anz(n + 1) Then
 Anz2(0) = Anz2(0) + 1
 Anz2(Anz2(0)) = Anz(n)
 End If
 Next n
 If Anz(n) Anz(n - 1) Then 'auch den letzten Wert überprüfen
 Anz2(0) = Anz2(0) + 1
 Anz2(Anz2(0)) = Anz(n)
 End If
End If
Merker = Merker + 1
For n = 1 To Anz2(0) 'Zuweisung des Rangs
 If anw = Anz2(n) Then Rang1 = n
Next n
If Merker \>= Bereich.Rows.Count Then Merker = 0 'wenn alle bedient, Merker wieder auf 0
End Function