Frage von Silneos, 179

Excel verschachtelte Wenn funktion, warum mit dem größten wert anfangen?

Also ich weiß wie diese Funktion funktioniert bin mir aber nicht sicher wie ich eine bestimmte Sache ausdrücken muss.

bei der Verschachtelten Wenn funktion, nehmen wir an wir haben einen Notenspiegel 100-0 Punkte

Dann fangen wir bei dem GRÖßTEN Wert an und arbeiten und bis zum kleinsten Wert vor, aber wie kann man dass Begründen, mir fällt es einfach nicht ein.

Antwort
von offeltoffel, 114

Ich nehme an du meinst folgendes Szenario:

wenn Punkte>80, dann Note 1, sonst: wenn Punkte >60, dann Note 2, sonst: wenn Punkte > 40, dann Note 3 etc.?

Du könntest stattdessen auch jedes Mal abfragen: wenn Punkte >60 und <= 80 (kleiner/gleich), dann Note 2. Aber das ist einfach mehr Schreibaufwand und daher nicht unbedingt schön. Du prüfst daher erst den Extremfall, also ob mehr als 80 Punkte da sind, dann hast du sicher eine 1. Wenn das nicht der Fall ist, prüfst du, ob es mehr als 60 sind usw.

Du musst dabei aber nicht zwangsläufig beim GRÖßTEN anfangen. Genauso kannst du auch sagen:

wenn Punkte<20, dann Note 6, sonst: wenn Punkte <30, dann Note 5, sonst: etc.

Du solltest nur eben nicht jeden Fall einzeln prüfen, sondern die Fälle schrittweise von der einen Richtung her aufarbeiten. Ob du dabei oben oder unten anfängst, spielt keine Rolle.

Antwort
von EGitarre, 105

Nehmen wir mal die Werte 0, 50 und 100.

Alle mir geläufigen Programmiersprachen arbeiten "von oben nach unten" den Quelltext durch.  Sagen wir mal als Beispiel:

Wenn Punkte >=0, dann Note = 6

Wenn Punkte >=50 dann Note =4

Wenn Punkte >=100, dann Note =1

Und sagen wir jetzt mal, die Punktzahl ist 75. Das Programm guckt jetzt, ob die Punkte >= 0, das trifft zu, also Note=6. Das Programm guckt aber in dieser Wenn-Funktion dann nicht weiter, ob es z.B. auch noch größer als 50 ist, da es ja bereits ein Ergebnis hat.

Wenn wir das jetzt aber andersherum schreiben:

Wenn Punkte >=100, dann AktionZ

Wenn Punkte >=50 dann AktionY

Wenn Punkte >=0, dann AktionX

,dann wird es zuerst feststellen, dass 100 nicht geht, 75 aber größer 50 ist, also wird das Ergebnis Note=4 festgelegt und die Funktion ist abgeschlossen.

Also zusammenfassend:  Bei einer Funktion, bei der du ein Ergebnis haben willst, was eine Wenn-Funktion ist, wird die Funktion abgeschlossen, sobald ein Ergebnis vorhanden ist, ob es weiter Möglichkeiten gibt wird nicht geguckt. Das müsstest du dann noch mit einer Und-Funktion programmieren, also Wenn Punkte >=0 und Punkte <50, dann 6, sonst 4

Kommentar von Silneos ,

Perfekt, danke :)

Antwort
von Jackie251, 64

Die Wennfunktion ist für solche Anwendungen schon ungeeignet.
Die Verweis/Index Funktionen sind für sowas da.
Der Sinn innerhalb einer verschachtelten Wennfunktion sortiert vorzugehen, liegt im einfacheren Aufbau.
Statt 2 Grenzen innerhalb einer Wennfunktion abzufragen, kann man so kontinuierlich nur eine grenze abfragen.

Dabei beim größtem anzufangen bringt vermutlich einen geringen Performance Vorteil. Da zu erwarten ist, dass mehr Schüler eine 1 oder 2 haben, als eine 5 oder 6.
Daher wird die Wennfunktion früher beendet.

Kommentar von Silneos ,

Ich MUSS die Wennfunktion benutzen, deswegen leider nicht möglich, aber trotzdem danke , ich merks mir für die Zukunft :)

Antwort
von daCypher, 54

Das muss man nur, wenn man mit "größer als" oder "kleiner als" arbeitet. Die Funktion nimmt halt das erste Ergebnis, was wahr ist.

Beispiel:
= WENN(A1 > 95; 1; WENN(A1 > 80; 2; WENN(A1 > 66; 3; 6)))

Hier sind drei Wenns ineinander verschachtelt. Wenn jetzt in A1 beispielsweise eine 90 steht, fängt Excel an zu rechnen und prüft zuerst, ob A1 größer als 95 ist. Das ist falsch, also verzweigt es in den Falsch-Teil der Funktion, wo wieder ein Wenn ist, was prüft, ob A1 größer als 80 ist. Das ist dann wahr, also verzweigt es in den Wahr-Teil der Funktion, wo das Ergebnis 2 drin steht und schreibt die 2 in die Zelle.

Wenn man die Funktion jetzt umdrehen würde:
= WENN(A1 > 66; 3; WENN(A1 > 80; 2; WENN(A1 > 95; 1; 6)))

dann würde beim Beispiel von 90 schon beim ersten Wenn wahr rauskommen und er würde eine 3 reinschreiben. Wenn der Wert kleiner oder gleich 66 wäre, würde eine 6 reinkommen.

Kommentar von PWolff ,

Silneos,

Wenn du statt der Funktion WENN die (m. E. angemessenere) Funktion VERWEIS verwendest, musst du sogar mit dem kleinsten Wert anfangen:

=VERWEIS(<Prozentzahl>;{0;30;50;67;81;92};{6;5;4;3;2;1})

da VERWEIS im Gegensatz zu SVERWEIS und WVERWEIS kein viertes Argument mit der Sortierrichtung zulässt (dafür aber auch direkt angegebene Matrizen anstelle der Bezüge akzeptiert). Es sei denn, das ist in einer späteren Excel-Version geändert worden.

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 53

Wichtig ist, dass der Vergleichsoperator dazu passt. Entweder du fängst beim Größten an und vergleichst mit > oder du fängst beim Kleinsten an und vergleichst mit <.

Beispiel:

=WENN(A1>=92;1;WENN(A1>=81;2;WENN(A1>=67;3;WENN(A1>=50;4;WENN(A1>=30;5;6)))))

oder 

=WENN(A1<30;6;WENN(A1<50;5;WENN(A1<67;4;WENN(A1<81;3;WENN(A1<92;2;1)))))

Falsch wäre hingegen:

=WENN(A1>=0;6;WENN(A1>=30;5;WENN(A1>=50;4...

Es wäre deswegen falsch, weil wenn du mit zum Beispiel 40 Prozent einsteigen würdest, zuerst A1>=0 geprüft werden würde und dies wahr ist, würde eine 6 zurück gegeben werden. Die anderen Bedingungen werden gar nicht mehr geprüft.

Antwort
von iMPerFekTioN, 50

Ganz einfach,

Wenn der Wert z.B. 94 Punkte ist, deine erste abfrage aber sagt =WENN(Punktzahl>80;"Mehr als 80 Punkte";WENN(PUNKTZAHL>90;"Mehr als 90 Punkte;"...") dann wird es nie dazu kommen dass deine Abfrage ob es größer als 90 ist nie überprüft werden, weil die Überprüfung schon bei den größer als 80 erfolgreich war.

Grüße,

iMPerFekTioN

Kommentar von azmd108 ,

Man könnte auch einfach sagen

=WENN(UND(Punkzahl>80;Punktzahl<90);"Mehr als 80 Punkte";Wenn(UND(Punktzahl>90;Punktzahl<100;"Mehr als 90 Punkte"))) .
Dann ist es egal wo man mit der Überprüfung anfängt, siehe meinen Beitrag.

Kommentar von iMPerFekTioN ,

Er soll erklären warum man mit dem kleinsten Wert anfangen soll/muss, (Schule oder was weiß ich warum) da bringt deine Erklärung oder Begründung "Muss man nicht, man kann mit UND arbeiten" nichts.

Kommentar von offeltoffel ,

Generell bin ich der Meinung: richtig ist, was funktioniert. Wenn man aber auf Stil achtet, dann wird es schon haarig. Es stellt sich die Frage, ob massige Und-Verknüpfungen eleganter sind, als eine Wenn-Dann-Sonst:Wenn-Dann-Sonst- ... - Abfrage. Über Programmierphilosophie lässt sich trefflich streiten ;)

Kommentar von daCypher ,

Mal abgesehen davon, dass ich mehrere Wenn-Dann Verschachtelungen eleganter finde als Wenn-Dann-Verschachtelungen mit zusätzlichem UND, sieht man an der vorgeschlagenen Lösung zusätlich noch, dass man bei der Variante mit UND schnell Fehler einbauen kann. Hier würde nämlich kein Ergebnis rauskommen, wenn die Punktzahl = 90 ist.

Antwort
von azmd108, 42

? Wer behauptet denn sowas. Du kannst anfangen wo du möchtest, der bzw. den WENN-Funktionen ist das egal. Du musst die Bedingungen nur richtig setzen und ggf. noch zusätzlich den Wertebereich mit UND eingrenzen.

Keine passende Antwort gefunden?

Fragen Sie die Community