Schiessbewerbauswertung
Hallo, ich versuche gerade eine Auswertung für einen Schiesbewerb zu machen. Jedoch scheitere ich an folgender Aufgabenstellung. Jeder Schütze kann eine beliebige Zahl an Serien schiessen. Jede Serie hat eine gewisse Wertung, ziwischen 0 und 55 Ringen. So, jetzt muss ich pro Schützen zwischen 1 und z.B. 30 Serien erst nach der Wertung sortieren, also 55 die höchste und 0 die niedrigste, und dann noch die Schützen je nach höchsten Wertungen sortieren, d.h. einer mit 3X55 Ringen ist vor einem mit nur 2X55 Ringen. In Excel konnte ich das Lösen, mit einer vorsortierungstabelle nach Serien =WENN(ISTFEHLER(KGRÖSSTE(Rohdaten.$J2:$VS2;SPALTE()-2));"";KGRÖSSTE(Rohdaten.$J2:$AC2;SPALTE()-2))
und dann mit der Nachsortierung nach Rang
=INDEX(sortiert.$A$2:$L$250;VERGLEICH(KKLEINSTE(sortiert.$X$2:$X$250;ZEILE(A1));sortiert.$X$2:$X$250;0);SPALTE(A1))
Gibts da ähnliche Möglichkeiten in NX ?
10 Antworten
-
Es geht - wenn ich es richtig verstanden habe, um die "richtige" Sortierung der Schützen nach einer Serie. Die Regeln nach denen dies bestimmt wird, sind mir aber nicht ganz klar.
Birger
-
es können von 0-55 bei jeder Serie erreicht werden. je mehr desto besser. es sind beliebig viele serien erlaubt.
jewertet wird, wer die beste serie hat, wenn mehrere 55 haben, dann wie oft und wie die anderen serien sind.
z.b. einer hat 55,55,40,40 und einer 55,54,53 dann hat der 1. gewonnen weil 2*55
-
Ich raffe es nicht. Also, es sind 30 Serien. Die Schützen werden pro Serie miteinander vergliechen. Dann sind es 30 Ranglisten.
Wenn ich jetzt pro Schütze die Serien sortiere, wie soll das Ergebniss aussehen? Anzahl der Ringe mal Heufigkeit der Serien mit diesem Ergebniss. Was passiert wenn einer zwar 3x55 hat, dann aber 27 mal 10 Ringe hat, wobei der andere 2x55 und 48 Mal 50?
Tut mir leid, meine letzte Schiessübung war vor 27 Jahren bei der russischen Armee. Und es ging damals gar nicht um die Punkte :-)
Grüße
Leo
-
der schütze mit 3X55 liegt vor dem Schützen mit 2 X 55 - und das bei bis zu 50 Serien
-
Hallo!
Wie wäre es denn, bei den Schützen ein Hilfsfeld mit der Häufigkeit der jeweiligen Ergebnisse zu erstellen und nach dem zu sortieren. Denke da an etwas in der Art:
cnt(Serien[Ergebnis=55])+"-"+cnt(Serien[Ergebnis=54])+"-"+cnt(Serien[Ergebnis=53])+"-"+ usw.
Formel ohne Gewähr auf Funktion ;-)
lg, Torsten
-
Hallo nochmal!
etwas in der Art ist wohl für die Sortierung zielführender :-)
let my55 := cnt(Serien[Ergebnis=55]);
let my54 := cnt(Serien[Ergebnis=54]);let my53 := cnt(Serien[Ergebnis=53]);
let my52 := cnt(Serien[Ergebnis=52]);
lpad(text(my55), 2, "0") + lpad(text(my54), 2, "0") + lpad(text(my53), 2, "0") + lpad(text(my52), 2, "0")
lg, Torsten
-
Hallo Zusammen,
Angenommen es gibt eine Tabelle "Mitglieder" und eine Untertabelle "Serien". Dort sind dann die Ergebnisse für jeden Schütze untergebracht. Wenn ich die Zahlen als String, kommagetrennt, absteigend sortiere, bekomme ich Texte, welche ich ganz normal nach Größe sortieren kann (einzige Einschränkung - 2 wird höher als 11 gewertet. Ich hoffe aber, dass niemand bei der Serie unter 10 bleibt). Um so ein String zu bekommen muss man in der Tabelle "Schützen" folgendes schreiben:
---
concat(rsort(Serien.Ergebnis))
---
Jetzt müssen wir die Sortierung hinbekommen. Dazu entweder ein berechnetes Feld in der Tabelle "Schützen" einfügen oder einfach als Spalte mit der Funktion:
---
let myM := concat(rsort(Serien.Ergebnis));
let myN:=Nr;
cnt(select Mitglieder[concat(rsort(Serien.Ergebnis)) > myM and Nr != myN]) + 1
---
Der Counter kann man jetzt aufsteigend sortieren.
Wenn mehrere Mitglieder das gleiche Ergebnis haben, dann kriegen Sie dann auch die gleiche Platzierung.
Ich hoffe, ich habe verständlich rübergebracht.
Grüße
Leo
-
leider gibt es immerwieder Schützen (gerade Anfänger) die auch 0 treffen, d.h. wir werten von 0-55
-
Ok, dann greife ich auf den Vorschlag von Torsten zu:
1. Erstell bei Mitglieder ein Berechnungsfeld namens "Berechnung". Dieses kannst du auch verstecken.
---
let myARRAY := [55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
var AA := "";
for II in myARRAY do
AA := AA + lpad(text(cnt(Serien[Ergebnis = II])), 2, "0")
end;
AA---
2. Erstell bei Mitglieder ein Berechnungsfeld namens "Rang" (oder eine Spalte als Funktion):
---
let myM := Berechnung;
let myN := Nr;
cnt((select Mitglieder)[Berechnung > myM and Nr != myN]) + 1---
Leo
-
verstehe, ich hab 2 Tabellen, Mitglieder mit 2 Berechnungen (Berechnung und Rang) und eine Tabelle Serien mit verknüpfung zu Mitglieder und Ergebnis.
Mal schauen was da raus kommt, erstmal vielen Dank für die Hilfe!!!!
Content aside
- vor 6 JahrenZuletzt aktiv
- 10Antworten
- 3709Ansichten