Zuordnung mit if then else
Servus. Kann mir mal jemand sagen, wo mein Denkfehler ist. Ich weiß mir keinen Rat mehr. Ich möchte Spieler des Vereins anhand ihres Geburtstages den jeweiligen Spielklassen zuordnen. Aber ich komme nicht mehr weiter. Das hab ich als Formel so eingetippt:
if age(Geburtstag) < 10 then "Jugend C"
else if age(Geburtstag) >= 10 + (<= 14) then "Jugend B"
else if age(Geburtstag) >= 15 + (<= 18) then "Jugend A"
else if age(Geburtstag) >= 19 + (<= 23) then "Junioren"
else if age(Geburtstag) >= 24 + (<= 49) then "Aktive"
else if age(Geburtstag) >= 50 + (<= 57) then "Senioren A"
else if age(Geburtstag) >= 58 + (<= 64) then "Senioren B"
else if age(Geburtstag) > 64 then "Senioren C" end
end end end end end end end
Letztendlich wird die Jugend C noch zugeordnet, aber dann leider kein anderer mehr.
Danke schon vorab für die Hilfe.
Carlo
10 Antworten
-
Hallo Carlo:
---
if Geburtstag then
switch age(Geburtstag) >= 0 do
case age(Geburtstag) < 10:
"Jugend C"
case age(Geburtstag) >= 10 and age(Geburtstag) <= 14:
"Jugend B"
case age(Geburtstag) >= 15 and age(Geburtstag) <= 18:
"Jugend A"
case age(Geburtstag) >= 19 and age(Geburtstag) <= 23:
"Junioren"
case age(Geburtstag) >= 24 and age(Geburtstag) <= 49:
"Aktive"
case age(Geburtstag) >= 50 and age(Geburtstag) <= 57:
"Senioren A"
case age(Geburtstag) >= 58 and age(Geburtstag) <= 64:
"Senioren B"
case age(Geburtstag) > 64:
"Senioren C"
end
end
---
Leo
-
Hallo Carlo,
mal eine Frage am Rande: werden die Altersklassen tatsächlich nach Alter eingeteilt - und nicht nach Geburtsjahr?
lg, Torsten
-
Hallo Leo. Danke für die Hilfe. "Case hatte ich auch versucht, bin aber ebenfalls zu keinem Ergebnis gekommen.
Torsten:
Geburtsjahr und Alter sind doch in abhängigkeit zueinander, oder nicht? Jetzt wird es allerdings komplizierter. Es gibt ein "sportliches" Kalenderjahr. Der Stichtag ist der 30.06.. Wer also danach Geburtstag hat, darf also in der "kleineren Klasse" spielen. Wenn ich das jetzt auch noch mit einbinden könnte, dann wäre es grandios. Aber ich gebe mich vorerst mit der jetzigen Lösung zufrieden. So viele Spieler sind es nicht, bei denen ich das dann beachten muss.
LG Carlo
-
Ahoi. Also, dieses ">= 10 + (<= 14)" wird so nicht funktionieren. Wenn, dann müsste es wohl heißen:
if age(Geburtstag) >= 10 and age(Geburtstag) <= 14 then "Jugend B
Ich würde es allerdings generell anders aufbauen, dann spart man sich die Von-bis-Abfragen:
let Alter := age(Geburtstag);
if Alter > 64 then
"Senioren C"
else
if Alter > 57 then
"Senioren B"
else
if Alter > 49 then
"Senioren A"
else
if Alter > 23 then
"Aktive"
else
if Alter > 18 then
"Junioren"
else
if Alter > 14 then
"Jugend A"
else
if Alter > 9 then "Jugend B" else "Jugend C" end
end
end
end
end
end
end
Oder als switch-case-Struktur:
let Alter := age(Geburtstag);
switch Alter > 0 do
case Alter < 10:
"Jugend C"
case Alter < 15:
"Jugend B"
case Alter < 19:
"Jugend A"
case Alter < 24:
"Junioren"
case Alter < 50:
"Aktive"
case Alter < 58:
"Senioren A"
case Alter < 65:
"Senioren B"
case Alter > 64:
"Senioren C"
end
-
Ups, da komme ich mal wieder zu spät ...
-
Die Überprüfung des Stichtags könnte man wie folgt lösen:
let Alter := 0;
if month(today()) > 6 then
Alter := age(Geburtstag) - 1
else
Alter := age(Geburtstag)
end;Rest wie gehabt.
-
Quatsch. Es muss natürlich heißen: "if month(Geburtstag)". Gut, dass es morgen wieder kühler werden soll ...
-
So, jetzt noch mal richtig und etwas kompakter:
let Alter := age(Geburtstag);
if month(Geburtstag) > 6 then
Alter := Alter - 1
end;
Ich glaub(!), jetzt hamwers ... ;)
-
Funktioniert mit der Einteilung wunderbar. Vielen Dank an alle.
Allerdings sind bei denen, die kein Geburtstag eingetragen haben, automatisch "Jugend C" zugeordnet. Wie kann ich denn jetzt noch die leeren Felder ignorieren.
Nochmals ganz herzlichen Dank an alle!!!
-
Hallo Carlo,
In meiner Formel steht als erstes: if Geburtstag then...
das solltest du dann auch ansetzen. Ich würde aber die Formel von Copytexter nehmen, sie ist viel eleganter:
---
if Geburtstag then
let Alter := age(Geburtstag);
if month(Geburtstag) > 6 then
Alter := Alter - 1
end;
switch Alter >= 0 do
case Alter < 10:
"Jugend C"
case Alter < 15:
"Jugend B"
case Alter < 19:
"Jugend A"
case Alter < 24:
"Junioren"
case Alter < 50:
"Aktive"
case Alter < 58:
"Senioren A"
case Alter < 65:
"Senioren B"
case Alter > 64:
"Senioren C"
endend
---
Leo
Content aside
- vor 5 JahrenZuletzt aktiv
- 10Antworten
- 3282Ansichten