Getagged: Rangliste

Excel – Rangliste bei Sportereignis – AGGREGAT

Ganz ehrlich… ich bin noch keinen Marathon gelaufen – aber theoretisch bin ich recht gut vorbereitet.
Nach einem Marathonlauf werden die Zeiten von 23 Läufern ausgewertet.

Die Tabelle mit den Namen, den Zeiten und der Platzierung wurde als Intelligente Tabelle über die Tastenkombination STRG + T formatiert und in tab_Laufzeiten umbenannt.

E358_1

In Spalte C wurde die folgende Formel eingegeben:
=RANG.GLEICH([@Zeit];[Zeit];1)

RANG.GLEICH sucht den aktuellen Zeitwert in der Spalte B [Zeit] und ermittelt den Rang. Bei gleichen Plätzen, haben die Werte alle den gleichen Rang. So kann es einen ersten, einen zweiten und drei dritte Plätze geben, dafür dann erst wieder einen sechsten Platz. Die 1 als Argument zum Schluss sorgt dafür, dass die Werte vom kleinsten zum größten Wert hin gesucht werden. Der kleinste Wert und somit die schnellste Laufzeit hätte somit den Rang 1.

Ohne Intelligente Tabelle hätte die folgende Formel in Zelle C2 geschrieben und nach unten kopierten werden müssen:
=RANG.GLEICH(B2;$B$2:$B$24;1)

Wie man in dem Bild erkennen kann, gibt es zwei dritte und zwei achte Plätze. Und das machte das ganze ein wenig komplizierter, wenn man die Namen der Personen in einer Rangliste ausgegeben haben möchte. Sucht man zum Beispiel mit den Funktionen KKLEINSTE, INDEX und VERGLEICH nach den schnellsten Zeiten, findet VERGLEICH lediglich den ersten, aber nicht die weiteren Treffer. Also muss eine Matrixfunktion her… aber bitte ohne Matrixschreibweise in geschweiften Klammern. Ich nutzte hier die Funktion =AGGREGAT(15;..;..;ZÄHLENWENN(...)), um zum gewünschten Ergebnis zu kommen.

In Zelle F2 steht die Formel:
=AGGREGAT(15;4;tab_Laufzeiten[Zeit];ZEILE()-1)
Hier hätte auch =KKLEINSTE(tab_Laufzeiten[Zeit];Zeile()-1) stehen können.

Allerdings ist eine Veränderung in =AGGREGAT(15;6;tab_Laufzeiten[Zeit];ZEILE()-1) sinnvoll, wenn Fehlerwerte in den Zeiten stehen könnten. Das zweite Argument steuert über den Wert 6, dass Fehlerwerte ignoriert werden sollen.

E358_2

AGGREGAT Typ 15 sucht den k-kleinsten Wert einer List. Da die Formel in Zelle F2 beginnt, also in der zweiten Zeile, suche ich eigentlich nach dem erstkleinsten. Mit der Formel Zeile()-1 ermittle ich in diesem Fall die aktuelle Zeile und ziehe einen ab.
Es wird der k-kleinste Wert in Spalte B gesucht, also [Zeit] der vorderen Tabelle. Diese Funktion führt dazu, dass die Zeiten aufsteigend sortiert angezeigt werden. Dies ist der einfache Teil.

In Zelle G2 steht die Formel:
=INDEX(A:A;AGGREGAT(15;6;ZEILE(B:B)/(B:B=F2);ZÄHLENWENN($F$2:F2;F2));1)

E358_3

Nun müssen zu den Zeiten oder halt Platzierungen die passenden Personen aus Spalte A gesucht werden. Mit (B:B=F2) wird geschaut, in welcher Zeile von Spalte B genau der Zeitwert der aktuellen Zeile liegt. Stimmen Die Zeit in Spalte F und der Wert in Spalte B überein, kommt hier der Wert WAHR heraus. Wenn man einen Wert durch WAHR teilt, bedeutet dies, durch 1 zu teilen. FALSCH ist entsprechend der Divisionsfehler #DIV0. Nun wird über die Formel ZEILE(B:B)/(B:B=F2) geprüft, in welcher Zeile der jeweilige Treffer der aktuellen Zeit vorkommt.

Über ZÄHLENWENN($F$2:F2;F2) wird ermittelt, wie häufig die aktuelle Laufzeit bereits vorkam. Kommt eine doppelte Laufzeit zum ersten mal in Zeile 5 vor, kommt hier eine 1 als Ergebnis heraus. Steht in Zeile 6 dieselbe Zeit, kommt hier eine 2 heraus. Ich suche also in der Formel AGGREGAT(15;6;…;k) den jeweils erstkleinsten, zweitkleinsten usw. Wert, der mit der Spalte F identisch ist.

Als Ergebnis resultieren also immer die Zeilen, in denen die gesuchten Personennamen in Spalte A stehen. Über INDEX(A:A;Ergebnis von AGGREGAT;1) wird also aus Spalte A der entsprechende Name angezeigt.

Download der Datei: E358_Läufer_Rangliste

Zum YouTube-Video:
Videolink: http://youtu.be/XJI_QwFEgbE