# [Excel] Automatisch Rangliste erzeugen lassen



## Snape (20. Januar 2006)

Moin,
Hat hierfür jemand eine Idee, wie ich, basierend auf den Ergebnissen (Spiele/Sätze) rechts neben der oberen Tabelle den unteren Endstand automatisch ausfüllen lassen kann mit Excel?

Für die Nicht-URL-Klicker:
Ich habe eine "Kreuztabelle", in der die Ergebnisse "jeder-gegen-jeden" eingetragen und inzwischen auch automatisch ausgerechnet werden. Nun möchte ich, dass mir Excel anhand dieser Endergebnisse die zugehörige Rangliste (wie z.B. Bundesliga Punkt - Torverhältnis) erstellt.

Geht das, wenn ja, wie?

TIA


----------



## Leola13 (20. Januar 2006)

Hai,

in welcher Form liegen die Ergebnisse vor ?

Bei Zahlen geht das mit der Funktion =RANG(A1;A1:A999)

Ciao Stefan


----------



## Snape (20. Januar 2006)

Moin,
die Ergebnisse sind mit VERKETTEN zusammengesetzt. Hast Du Dir den Screenshot angeschaut? Wenn nicht, solltest Du das evtl. nachholen, ich denke, damit wird es deutlich.


----------



## Leola13 (20. Januar 2006)

Hai,

hab schon verstanden was du willst, aber einen Schritt zu weit gedacht.

Hast du die Ergebnisse (8:2 und 20:10), also Punkte und Tore (?) auch in einem Zahlenformat vorliegen ? Wenn es noch um das Selbe geht wie letzes Mal dann ja wohl nicht.

Also musst du dein 8:2, aufsplitten - rechts(a1;1) und links(a1;1) - dann diese Zahlen teilen und du bekommst eine Zahl mit der du dann den Rang (siehe erstes Posting) erstellen kannst. Dasselbe noch für die Tore ,falls es möglich ist gleiche Punkte zu erzielen, die beiden Zahlen verknüpfen und fertig.

Neben teilen geht auch subtrahieren, gibt glaub ich bei Punktgleichheit bei der Tordifferenz ein anderes Ergebnis.

Ciao Stefan


----------



## Snape (22. Januar 2006)

>Hast du die Ergebnisse (8:2 und 20:10), also Punkte und Tore (?) auch in einem Zahlenformat vorliegen ? Wenn es noch um das Selbe geht wie letzes Mal dann ja wohl nicht.

Genau.

>Also musst du dein 8:2, aufsplitten - rechts(a1;1) und links(a1;1) - dann diese Zahlen teilen und du bekommst eine Zahl mit der du dann den Rang (siehe erstes Posting) erstellen kannst. Dasselbe noch für die Tore ,falls es möglich ist gleiche Punkte zu erzielen, die beiden Zahlen verknüpfen und fertig.

Klar, "ganz einfach" - ich weiß aber immer noch nicht, wie ich das in Excel umsetzen kann. Auch eine Rangfolge ist mir noch nicht transparent. Ersten und Letzten kann man bestimmt mit irgendeiner MAX / MIN Funktion ermitteln, aber die Rangfolge dazwischen?

>Neben teilen geht auch subtrahieren, gibt glaub ich bei Punktgleichheit bei der Tordifferenz ein anderes Ergebnis.

Subtrahieren wäre in der Tat der gewünschte Weg.

Was mich wundert: Für sowas müsste es doch schon fertige Vorlagen geben?! Ich bin doch sicher nicht der erste/einzige mit einer solchen Tabelle?!

>Ciao Stefan


----------



## Leola13 (23. Januar 2006)

Hai,

mit der Funktion =RANG(A1;A1:A10;1)

A1 ist die Zahl dessen Rang bestimmt werden soll. A1:A10 ist die Liste der Zahlen innerhalb dessen der Rang bestimmt werden soll. 1 steht für aufsteigend, 0 wäre absteigend.

Ciao Stefan


----------



## Suchfunktion (23. Januar 2006)

Da muss 'n Makro her.
Eindeutig!

Du schreibst dir in VBA ein Makro,
welches die einzelnen Zelleninhalte (C8 bis C17) einliesst,
dann am "-" aufteilt und dann jeweils die Punkte hinter dem "-" zin einer Variablen fuer Mueller.. zaehlt.
Das ganze machste dann noch mit D8 bis D17, E8 bis E17, usw.

Dann machst du das ganze nochmal horizontal (c8 bis L8 zaehlt hinter dem "-" zu Mueller.. usw)

Also du laesst dir die ergebnisse aufteilen und rechnest sie zu dem jeweiligen 'Eigentuemer' 

Bissel schwer zu erklaeren.. Sorry..
Habe leider kein M$ Office, sonst wuerde ich dir schnell etwas zusammenbasteln..


----------



## Leola13 (23. Januar 2006)

Hai,



> Was mich wundert: Für sowas müsste es doch schon fertige Vorlagen geben?! Ich bin doch sicher nicht der erste/einzige mit einer solchen Tabelle?!



Schau mal hier  und hier  und in der Rubrik Textfunktionen.

Das sollte dir ein Stück weiterhelfen.

Ciao Stefan


----------



## Snape (1. Februar 2006)

Zuerst einmal Danke für die Antworten.
Allerdings bin ich nicht sonderlich fit in Excel. So konnte ich zwar die Bundesliga-Formel aus den Links bei http://www.excelformeln.de anpassen. Doch dadurch, dass bei mir das Satzverhältnis schon zusammengestrickt ist, habe ich Probleme, daraus die Differenz zu berechnen. Klar, ich kann zwar aus meinem verketteten Wert "27:9" per =SUMME(LINKS(N8;2);-(RECHTS(N8;1))) die Differenz berechnen. Doch es ist nicht gewährleistet, dass der linke Wert immer zweistellig und der rechte immer einstellig ist. Beide können sowohl ein- als auch zweistellig ausfallen. Was mache ich dann?


----------



## Leola13 (1. Februar 2006)

Hai,

möglich wäre sicherlich eine Abfrage mit   =LÄNGE(A1)  um herauszufinden ob du ein X:X, X:XX oder XX:XX vorliegen hast.
Mit der Funktion =FINDEN(":";A1) kannst du dann auch noch nach der Position des : (Doppelpunktes) suchen und so deine Zahlen für Links/Rechts bestimmen.

Das wird ja langsam kompliziert und unübersichtlich.

Ciao Stefan


----------



## Snape (1. Februar 2006)

Allerdings. Vor allem mir, der ich mit den ganzen Excel-Funktionen a la SUMME, WENN, VERKETTEN, RANG usw. nicht sonderlich vertraut bin...

Wenn das einfacher geht, ich bin ganz Ohr.


----------



## Nirraven (2. Februar 2006)

hm... musste mich erstmal lange durchlesen bis ich alles verstanden hab... 
Mit länge und finden würde es etwa so aussehen:


```
=SUMME(LINKS(N8;FINDEN(":";N8) - 1);-(RECHTS(N8;LÄNGE(N8) - FINDEN(":";N8) + 1)))
```

Edit: Hatte doch glatt n Fehler in der Formel


----------



## Snape (2. Februar 2006)

Hi,
die Berechnung war nicht ganz korrekt.
So funktioniert die Differenz jetzt:
=SUMME(LINKS(N8;FINDEN(":";N8)-1);-RECHTS(N8;SUMME(LÄNGE(N8);-FINDEN(":";N8))))

Jetzt "nur noch" die Rangfolge berechnen - ich brech mir grad nen Ast...


----------



## Snape (3. Februar 2006)

Also in dem Beispiel hier http://www.excelformeln.de/formeln.html?welcher=283 bekomme ich (mind.?) eine Formel nicht korrekt ausgewertet, nämlich die für G2. Lasse ich das auf meine Tabelle angepasste, leicht modifizierte

=KGRÖSSTE(O$8:O$17;ZEILE()-20)

in meiner 21. Zeile, wird der Wert ganz normal angegeben (O$8:O$17 enthalten bei mir analog zum o.a. Beispiel in den Feldern G2:G11 die reinen Punkte). Versuche ich, die Formel gemäß des Beispiels um den + Teil zu erweitern auf

=KGRÖSSTE(O$8:O$17+P$8$17;ZEILE()-20)

macht Excel die Grätsche ("#WERT!").
Ich vermute, dass mit dem +P$8$17 der Bereich angegeben werden soll, über den die Rangfolge bei O$8:O$17 verfeinert werden soll bei gleicher Punktzahl. Das scheint so aber nicht zu funktionieren.

Weiss jemand, wie die korrekte Verfeinerung auszusehen hat?
Das Beispiel in der Excel-Hilfe beinhaltet nur einen direkten Bereich ohne Verfeinerung. Hier kurz die Syntax:

KGRÖSSTE(Matrix;k)

Matrix   ist die Matrix oder der Datenbereich, deren k-größten Wert Sie bestimmen möchten.

k   ist der Rang des Elementes einer Matrix oder eines Zellbereiches, dessen Wert geliefert werden soll.


----------



## thekorn (3. Februar 2006)

Hallo,
Ich finde diese Problemstellung sehr interresant, nur bin ich kein Freund von so langen und komplizierten Excelformeln, man verliert halt schnell den Überblick.
Da die Lösung per Makro allen Anschein nach nicht in Betracht kommt, habe ich mich für einen Mittelweg entschieden: Ich habe 3 Funktionen geschrieben. die im wesentlichen das Problem lösen sollten (hoffentlich  ), siehe Anhang.

Gruß
thekorn


----------



## Snape (3. Februar 2006)

>Ich finde diese Problemstellung sehr interresant, nur bin ich kein Freund von so langen und komplizierten Excelformeln, man verliert halt schnell den Überblick.

Allerdings...  

>Da die Lösung per Makro allen Anschein nach nicht in Betracht kommt,

Wieso nicht? Entscheidend ist, was hinten raus kommt. ;-) 
Und nötige Änderungen sollte ich auch durchführen können, was dem evtl. widerspricht. ;-)

>habe ich mich für einen Mittelweg entschieden: Ich habe 3 Funktionen geschrieben. die im wesentlichen das Problem lösen sollten (hoffentlich  ), siehe Anhang.
>Gruß
>thekorn

Vielen Dank dafür, werde ich mir bei Gelegenheit mal näher anschauen.
Prinzipiell soll die Tabelle so aussehen wie in der von mir geposteten Grafik. D.h. ich möchte separat unter der Kreuztabelle die Rangliste mit Namen, Spielen und Sätzen aufgelistet haben. In der Zeile neben den Namen den Rang zu bestimmen ist ja schon der richtige Weg. Aber wie bekomme ich Namen, Spiele und Sätze in der berechneten Rangfolge von 1-x in einen eigenen Zellenbereich wie von mir angegeben?


----------



## thekorn (3. Februar 2006)

Naja im Prinzip ist es egal, wo du die Formeln für die Rangliste plazierst, Vorteil von von einem "Makro" wäre also die vollkommene Skalierbarkeit, würde es mir halt ähnlich wie eine Pivottabelle vorstellen: Bereich für die Kreuztabelle festlegen, das Programm fasst die Spieler automatisch mit den entsprechenden Punkten zusammen.
Im übrigen: VBA ist einfacher als Java, also nur Mut, wird schon schief gehen.

gruß
thekorn


----------



## Snape (6. Februar 2006)

>Naja im Prinzip ist es egal, wo du die Formeln für die Rangliste plazierst, Vorteil von von einem "Makro" wäre also die vollkommene Skalierbarkeit, würde es mir halt ähnlich wie eine Pivottabelle vorstellen: Bereich für die Kreuztabelle festlegen, das Programm fasst die Spieler automatisch mit den entsprechenden Punkten zusammen.

Ich bin weitgehend  was Excel angeht. Ich kann eine Summe ausrechnen lassen und eine Spalte durchnummerieren...

>Im übrigen: VBA ist einfacher als Java, also nur Mut, wird schon schief gehen.
>gruß
>thekorn

Also wenn eine solche Anforderung Excel bereits so weit fordert, dass VBA notwendig ist, dann lasse ich die Finger davon und bestimme die Rangliste lieber per Hand. Dafür alleine werde ich mich sicher nicht in Excel-VBA reinfuchsen. Ich war mir nur sicher, dass eine solche Tabelle noch andere Leute benötigen und es deshalb eine fertige Vorlage geben würde.


----------

