50 Stimmen

Fallfunktion Äquivalent in Excel

Ich habe eine interessante Aufgabe: Ich muss die folgenden Daten in Excel überprüfen:

|   A  -   B  -   C  -  D   |
|------|------|------|------|
|  36  |   0  |   0  |   x  |
|   0  |  600 |  700 |   x  |
|___________________________|

Bitte entschuldigen Sie meine wunderbare schlechte ASCII-Kunst. Ich brauche also die Spalte D (x), um eine Überprüfung mit den angrenzenden Zellen durchzuführen und die Werte dann gegebenenfalls umzuwandeln. Hier sind die Kriterien:

Wenn Spalte B größer als 0 ist, funktioniert alles prima und ich kann Kaffee holen. Wenn das nicht der Fall ist, muss ich A1 anhand einer Tabelle umwandeln - zum Beispiel, 32 = 1420 und in die D . Leider gibt es keine Beziehung zwischen A und dem, in was es umgewandelt werden muss, so dass eine Berechnung nicht in Frage kommt.

Eine Case- oder Switch-Anweisung wäre für dieses Szenario ideal, aber ich glaube nicht, dass es sich dabei um eine native Funktion in Excel handelt. Ich denke auch, dass es ziemlich verrückt wäre, einen Haufen von =IF() Das habe ich etwa viermal gemacht, bevor ich mich entschied, dass es keine gute Idee war (die Geschichte meines Lebens).

0voto

Wenn Sie Office 2016 oder höher oder Office 365 verwenden, gibt es eine neue Funktion, die sich ähnlich wie eine CASE-Funktion verhält. IFS . Hier ist die Beschreibung der Funktion aus der Dokumentation von Microsoft:

Die IFS-Funktion prüft, ob eine oder mehrere Bedingungen erfüllt sind, und gibt einen Wert zurück, der der ersten TRUE-Bedingung entspricht. IFS kann den Platz mehrerer verschachtelter IF-Anweisungen einnehmen und ist bei mehreren Bedingungen viel einfacher zu lesen.

Es folgt ein Beispiel für die Verwendung:

=IFS(A2>89,"A",A2>79,"B",A2>69,"C",A2>59,"D",TRUE,"F")

Sie können sogar ein Standardergebnis angeben:

Um ein Standardergebnis festzulegen, geben Sie TRUE für Ihr letztes logical_test-Argument ein. Wenn keine der anderen Bedingungen erfüllt ist, wird der entsprechende Wert zurückgegeben.

Das Standard-Ergebnismerkmal ist in dem oben gezeigten Beispiel enthalten.

Sie können mehr darüber lesen auf Microsofts Support-Dokumentation

0voto

FRocha Punkte 872

Kürzlich musste ich leider wieder eine Zeit lang mit Excel 2010 arbeiten und habe die SWITCH-Funktion sehr vermisst. Ich habe mir folgendes einfallen lassen, um meine Schmerzen zu minimieren:

=CHOOSE(SUM((A1={"a";"b";"c"})*ROW(INDIRECT(1&":"&3))),1,2,3)
CTRL+SHIFT+ENTER

wobei A1 der Ort ist, an dem sich Ihre Bedingung befindet (es kann eine Formel sein, was auch immer). Das Gute daran ist, dass wir die Bedingung nur einmal angeben müssen (genau wie bei SWITCH) und die Fälle (in diesem Beispiel: a,b,c) und Ergebnisse (in diesem Beispiel: 1,2,3) geordnet sind, was es einfach macht, darüber nachzudenken.

Das funktioniert folgendermaßen:

  • Cond={"c1"; "c2";...; "cn"} gibt einen N-Vektor von TRUE oder FALSE zurück (verhält sich wie 1s und 0s)
  • ROW(INDIRECT(1&":"&n)) gibt einen N-Vektor von geordneten Zahlen zurück: 1;2;3;...;n
  • Die Multiplikation der beiden Vektoren ergibt viele Nullen und eine Zahl (Position), bei der die Bedingung erfüllt wurde
  • SUM wandelt diesen Vektor mit Nullen und einer Position einfach in eine einzige Zahl um, die CHOOSE dann verwenden kann
  • Wenn Sie eine weitere Bedingung hinzufügen möchten, denken Sie einfach daran, die letzte Zahl innerhalb von INDIRECT zu erhöhen
  • Wenn Sie einen ELSE-Fall wünschen, verpacken Sie ihn einfach in eine IFERROR-Formel
  • Die Formel verhält sich nicht korrekt, wenn Sie dieselbe Bedingung mehr als einmal angeben, aber das will wohl sowieso niemand.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X