[gelöst] Sortierung Deckserie (Schießsport)

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] Sortierung Deckserie (Schießsport)

Re: Sortierung Deckserie (Schießsport)

von CROW1973 » Di, 21.03.2017 22:41

Jaaaaa *freufreufreufreu*

Es funktioniert nun alles so, wie ich es mir nur erträumt habe! Mah, ich bin jetzt überglücklich!!

Vielen vielen vielen lieben Dank!!!!!!!!!!!

Re: Sortierung Deckserie (Schießsport)

von mikeleb » Di, 21.03.2017 21:54

Hallo,
in A11: =ABRUNDEN(KKLEINSTE(sortiert.$N$2:$N$250;ZEILE(A1)))
in B11: =INDEX(sortiert.$A$2:$L$250;VERGLEICH(KKLEINSTE(sortiert.$N$2:$N$250;ZEILE(A1));sortiert.$N$2:$N$250;0);SPALTE(A1))

Re: Sortierung Deckserie (Schießsport)

von CROW1973 » Di, 21.03.2017 13:09

Ja, die lassen sich so eine Software schon fein bezahlen. Aber das ist dann mit Vereinsdatenbanken, Gästedatenbanken usw usw
Aber das wollen wir nicht. Wir sind ein kleiner junger neuer Verein die gerne ab und zu mal für maximal 20-30 Leute einen Wettbewerb starten wollen. Da sind mir ehrlich gesagt 250€ zu viel. Auch wenn wir das nach 2 Bewerben drinnen haben.

Daher auch die Lösung per Excel/Open Office.
Werde versuchen das hier alles umzusetzen. Ist ja fast schon perfekt so wie es ist :)

@echo
Danke, jetzt wird kein Fehler mehr angezeigt.
Jedoch bei Punktegleichheit, steht links noch immer Platz 1 ... Platz 2, obwohl im Reiter "sortiert" 2x 1 angezeigt wird.

Re: Sortierung Deckserie (Schießsport)

von Karolus » Di, 21.03.2017 13:00

Hallo

Mit Excel-kompatibilität kann ich dir nicht dienen, der Aufwand steht für mich in keinem vernünftigen Verhältnis zum "Aufwand" ein paar Vereinskollegen davon zu überzeugen kostenlos Libre|Apache -office zu installieren.
Wenn nicht, muss ich leider ein Auswertungsprogramm um 250€ kaufen.
Wow - Ein stolzer Preis für eine derart triviale Aufgabe!

Re: Sortierung Deckserie (Schießsport)

von CROW1973 » Di, 21.03.2017 12:39

Hallo echo

Danke! Ich werde mal versuchen das umzusetzen!

lg

Re: Sortierung Deckserie (Schießsport)

von echo » Di, 21.03.2017 12:36

Desweiteren würde ich es auch gerne so haben, wenn beide punktgleich sind, dass sie auch den selben Platz haben.
Hallo
In sortiert.$N$2:$N$250 steht als Rang 1;1;3;4.....usw 2 fehlt, obwohl Vergleich() in deiner Formel danach sucht
Die beiden Zeilen 1;1; unterscheiden sich nicht, daher kannst du auch nicht nach beiden Zeilen suchen

Vorschlag: in Sortiert!N2
ersetze =RANG(M2;$M$2:$M$250) durch =RANG(M2;$M$2:$M$250)+ZEILE()/1000 (Kannst die Nachkommastellen ja ausblenden)
Runter kopieren, jetzt unterscheiden sich die Einträge ohne den Rang zu verändern und du kannst danach suchen

in Rangliste! B11 den Vergleich() ein wenig erweitert, das wars
=VERSCHIEBUNG(sortiert.$A$1;VERGLEICH(KKLEINSTE(sortiert.$N$2:$N$250;$A11);sortiert.$N$2:$N$250;0);SPALTE()-2)

in Excel heißt die Funktion =VERSCHIEBUNG() =BEREICH.VERSCHIEBEN(), daher würde ich INDEX() auch der VERSCHIEBUNG() vorziehen
=INDEX(sortiert.$A$2:$L$250;VERGLEICH(KKLEINSTE(sortiert.$N$2:$N$250;$A11);sortiert.$N$2:$N$250;0);SPALTE(A1))

LG Holger

Re: Sortierung Deckserie (Schießsport)

von CROW1973 » Di, 21.03.2017 12:21

Hallo Karolus

Ich habe die Methode von mikeleb genommen, da es genau das ist, was ich gesucht habe.
Jetzt habe ich gestern Stunden dazu verbracht, es so weit zu bringen, wie meine zuletzt angehängte Datei.

Ich habe deine Version auch ausprobiert, aber im Excel wird mir da kein Button angezeigt. Nur ich verwende Open Office im Verein, alle anderen verwenden Excel.
Das von dir verstehe ich leider überhaupt nicht. Wo füge ich das ein usw usw

Das von mikeleb verstehe ich halbweg und es funktioniert ja jetzt tadelos (in Open Office und Excel), bis auf die "Kleinigkeit".
Wäre toll, wenn ihr mir hier noch für den letzten Schritt weiterhelfen könntet. Wenn nicht, muss ich leider ein Auswertungsprogramm um 250€ kaufen.

Sorry wenn ich mich so blöd anstelle, aber das ist absolut nicht mein Gebiet :(

lg
Tommy

Re: Sortierung Deckserie (Schießsport)

von Karolus » Di, 21.03.2017 11:04

Hallo

Dir wurde bereits eine Lösung vorgeschlagen, die "ohne" diesen Fehler daherkommt…

Re: Sortierung Deckserie (Schießsport)

von CROW1973 » Di, 21.03.2017 09:34

Hallo nochmals

Ich muss leider nochmals lästig sein, sorry dafür!!
Ich habe das File nun halbwegs fertig, aber auch einen Fehler gefunden

Sobald 2 Schützen das gleich Ergebnis haben (z.B. beide Schützen haben 2x 60 Punkte geschossen), wird mir nur Schütze 1 angezeigt und bei Schütze 2 ist ein Fehler.
Ich habe es mal abgespeichert und hier angehängt
.
Desweiteren würde ich es auch gerne so haben, wenn beide punktgleich sind, dass sie auch den selben Platz haben.

Also
Platz 1 60 60
Platz 2 60 40
Platz 3 59 59
Platz 3 59 59
Platz 5 58 30
Platz 6 57 50
Platz 6 57 50
Platz 8 56 50
usw
Dateianhänge
SBCA_Deckserie_Bewerbe.ods
(102.23 KiB) 213-mal heruntergeladen

Re: Sortierung Deckserie (Schießsport)

von CROW1973 » Mo, 20.03.2017 20:19

Soooo :) Jetzt bin ich registriert.

Hab die Datei jetzt noch auf 250 Zeilen erweitert sollten mal mehr als 4 Teilnehmer dabei sein :)
Jetzt muss ich noch nach dem Namen noch einen Vereinsnamen rein basteln, aber das schaffe ich auch noch irgendwie.

*Edit*
Verein ist nun auch dabei :)
Möchte euch mein Ergebnis natürlich nicht vorenthalten!
Dateianhänge
SBCA_Deckserie_Bewerbe.ods
(32.36 KiB) 132-mal heruntergeladen

Re: Sortierung Deckserie (Schießsport)

von Karolus » Mo, 20.03.2017 18:46

Hallo

Der Ansatz von oben bereinigt von hässlichen lambdas und anderen Wiederholungen.
Dafür ist das in der Form nicht mehr kompatibel mit AOO und LO < 5.1 wegen der neuen slice-Syntax für Teil-Zellbereiche (#12),
und des Verzichts auf explizite tuple-Umwandlung (#13ff)

Code: Alles auswählen

from functools import partial

def compare(k):
    if isinstance(k, tuple):
        return [compare(item) for item in k[1:]]
    return k or 0

def sort_schuetzenliste2(*_):
    sort = partial(sorted, reverse=True, key=compare)
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.CurrentSelection
    series = sel[ : ,1:]
    data = [sort(row) for row in series.DataArray ]
    series.DataArray = data
    sel.DataArray = sort(sel.DataArray)

Re: Sortierung Deckserie (Schießsport)

von TrueColor » Mo, 20.03.2017 16:34

Ah, jetzt wird's klar, danke dir!

Scheint 'ne gute Doku zu sein, was du da verlinkt hast, recht gut verständlich.

Re: Sortierung Deckserie (Schießsport)

von Karolus » Mo, 20.03.2017 12:33

TrueColor hat geschrieben: Mo, 20.03.2017 11:04 Hallo Karolus,
Karolus hat geschrieben: Mo, 20.03.2017 10:15

Code: Alles auswählen

[...]
                          key=lambda x: x or 0,
                          [...]
könntest du das mal bitte erläutern oder zu einer guten Erklärung linken (für jmd., der der eigentlich keine Ahnung von Python hat? Was macht das? Der restliche Code ist ja für mich gut verständlich.

Danke!
Oha… womit fang ich jetzt an?

das DatenArray enhält im konkreten Fall sowohl Zahlenwerte als auch Text, ( !die leeren Zellen enthalten einen Leerstring "" !)
python muss zum sortieren die jeweiligen Inhalte vergleichen (a grösser b), kann das aber nur mit vergleichbaren Typen, und würde dann beim Vergleich Zahl|Text mit einem Fehler abbrechen, daher der Ausdruck x or 0 der im Fall von x=="" eben 0*** statt dem Leerstring als Vergleichswert einsetzt.

lambda kreiert eine anonyme Funktion.

Code: Alles auswählen

key=lambda x: x or 0
ist dasselbe wie eine explizite Funktion:

Code: Alles auswählen

def compareKey(x):
    return x or 0
in Verbindung mit:

Code: Alles auswählen

key=compareKey
***or verhält sich in python etwas anders als in Basic, und liefert den ersten Ausdruck zurück der logisch Wahr ist, falls kein Ausdruck Wahr ist den letzten.

https://docs.python.org/3.5/howto/sorti ... ght=sorted
https://docs.python.org/3.5/howto/funct ... expression

Re: Sortierung Deckserie (Schießsport)

von mikeleb » Mo, 20.03.2017 11:09

Hallo,
und noch eine Formellösung ...
Dateianhänge
Unbenannt 1.ods
(20.61 KiB) 145-mal heruntergeladen

Re: Sortierung Deckserie (Schießsport)

von TrueColor » Mo, 20.03.2017 11:04

Hallo Karolus,
Karolus hat geschrieben: Mo, 20.03.2017 10:15

Code: Alles auswählen

[...]
                          key=lambda x: x or 0,
                          [...]
könntest du das mal bitte erläutern oder zu einer guten Erklärung linken (für jmd., der der eigentlich keine Ahnung von Python hat? Was macht das? Der restliche Code ist ja für mich gut verständlich.

Danke!

Nach oben