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).

1voto

Francis Rodgers Punkte 4435

Ich weiß, es ist ein bisschen spät für eine Antwort, aber ich denke, dieses kurze Video wird Ihnen sehr helfen.

http://www.xlninja.com/2012/07/25/excel-choose-function-explained/

Im Wesentlichen handelt es sich um die Verwendung der Funktion "Wählen". Er erklärt es sehr gut in dem Video, so dass ich es tun lassen, anstatt 20 Seiten zu tippen.

In einem anderen Video von ihm wird erklärt, wie man die Datenvalidierung verwendet, um ein Dropdown-Menü zu füllen, das Sie aus einem begrenzten Bereich auswählen können.

http://www.xlninja.com/2012/08/13/excel-data-validation-using-dependent-lists/

Sie könnten die beiden kombinieren und den Wert in der Dropdown-Liste als Index für die Auswahlfunktion verwenden. Er hat zwar nicht gezeigt, wie man sie kombiniert, aber ich bin sicher, dass Sie es herausfinden können, da seine Videos gut sind. Wenn Sie Probleme haben, lassen Sie es mich wissen und ich werde meine Antwort aktualisieren, um es Ihnen zu zeigen.

1voto

Dan Punkte 11

Ich verstehe, dass dies eine Antwort auf einen alten Beitrag ist.

Ich mag die Funktion If() in Kombination mit Index()/Match():

=IF(B2>0,"x",INDEX($H$2:$I$9,MATCH(A2,$H$2:$H$9,0),2))

Die if-Funktion vergleicht, was in der Spalte b steht, und wenn es größer als 0 ist, gibt sie x zurück, wenn nicht, verwendet sie das Array (Informationstabelle), das durch die Index()-Funktion identifiziert und durch Match() ausgewählt wurde, um den Wert zurückzugeben, dem a entspricht.

Das Index-Array hat die absolute Position festgelegt $H$2:$I$9 (die Dollarzeichen), damit sich die Stelle, auf die sie zeigt, beim Kopieren der Formel nicht ändert. Die Zeile mit dem Wert, den Sie zurückgeben möchten, wird durch die Funktion Match() identifiziert. Match() hat den zusätzlichen Vorteil, dass keine sortierte Liste zum Durchsehen benötigt wird, wie es bei Vlookup() der Fall ist. Match() kann den Wert mit einem Wert finden: 1 kleiner als, 0 genau, -1 größer als. Ich habe eine Null nach dem absoluten Match()-Array eingefügt $H$2:$H$9 um die genaue Übereinstimmung zu finden. Für die Spalte wird der Wert des Index()-Arrays eingegeben, den man zurückgeben möchte. Ich habe eine 2 eingegeben, weil in meinem Array der Rückgabewert in der zweiten Spalte stand. Unten sah mein Index-Array wie folgt aus:

32   1420

36   1650

40   1790

44   1860

55   2010

Der Wert in der Spalte "a", nach dem in der Liste gesucht werden soll, steht in meinem Beispiel in der ersten Spalte, und der entsprechende Wert, der zurückgegeben werden soll, steht rechts davon. Die Nachschlage-/Verweistabelle kann sich auf einer beliebigen Registerkarte im Arbeitsbuch befinden - oder sogar in einer anderen Datei. -Buch2 ist der Dateiname, und Blatt2 ist der Name der "anderen Registerkarte".

=IF(B2>0,"x",INDEX([Book2]Sheet2!$A$1:$B$8,MATCH(A2,[Book2]Sheet2!$A$1:$A$8,0),2))

Wenn Sie nicht wollen, dass x zurückgegeben wird, wenn der Wert von b größer als Null ist, löschen Sie das x für ein 'blank'/null-Äquivalent oder setzen Sie vielleicht eine 0 ein - ich bin nicht sicher, was Sie dort wollen würden.

Nachfolgend der Beginn der Funktion, wobei das x gelöscht wurde.

=IF(B2>0,"",INDEX...

1voto

gaborsch Punkte 15069

Wenn Sie in Ihrer Excel-Version (vor Excel-2016) keine SWITCH-Anweisung haben, finden Sie hier eine VBA-Implementierung dafür:

Public Function SWITCH(ParamArray args() As Variant) As Variant
    Dim i As Integer
    Dim val As Variant
    Dim tmp As Variant

    If ((UBound(args) - LBound(args)) = 0) Or (((UBound(args) - LBound(args)) Mod 2 = 0)) Then
        Error 450       'Invalid arguments
    Else
        val = args(LBound(args))
        i = LBound(args) + 1
        tmp = args(UBound(args))

        While (i < UBound(args))
            If val = args(i) Then
                tmp = args(i + 1)
            End If
            i = i + 2
        Wend
    End If

    SWITCH = tmp
End Function

Es funktioniert genau so, wie man es erwartet, und ersetzt zum Beispiel die Funktion von Google Spreadsheet SWITCH Funktion.

Syntax:

=SWITCH(selector; [keyN; valueN;] ...  defaultvalue)

wobei

  • Selektor ist jeder Ausdruck, der mit Schlüsseln verglichen wird
  • key1, key2, ... sind Ausdrücke, die mit dem Selektor verglichen werden
  • value1, value2, ... sind Werte, die ausgewählt werden, wenn der Selektor gleich dem entsprechenden Schlüssel ist (nur)
  • defaultvalue wird verwendet, wenn kein Schlüssel mit dem Selektor übereinstimmt

Beispiele:

=SWITCH("a";"?")                       returns "?"
=SWITCH("a";"a";"1";"?")               returns "1"
=SWITCH("x";"a";"1";"?")               returns "?"
=SWITCH("b";"a";"1";"b";TRUE;"?")      returns TRUE
=SWITCH(7;7;1;7;2;0)                   returns 2
=SWITCH("a";"a";"1")                   returns #VALUE!

Um es zu verwenden, öffnen Sie Ihr Excel, gehen Sie auf die Registerkarte Entwicklungswerkzeuge, klicken Sie auf Visual Basic, klicken Sie mit der rechten Maustaste auf Diese Arbeitsmappe, wählen Sie Einfügen, dann Modul, und kopieren Sie schließlich den Code in den Editor. Sie müssen ihn als makrofreundliche Excel-Arbeitsmappe (xlsm) speichern.

0voto

Chiwda Punkte 1016

Auch wenn diese Frage alt ist, so scheint sie doch sehr beliebt zu sein, daher werde ich eine andere Lösung veröffentlichen, die ich für sehr elegant halte:

http://fiveminutelessons.com/learn-microsoft-excel/using-multiple-if-statements-excel

Sie ist elegant, weil sie nur die IF-Funktion verwendet. Im Grunde genommen läuft es auf Folgendes hinaus:

wenn( Zustand , einen Wert aus der Tabelle auswählen/verwenden , wenn( Zustand , einen anderen Wert aus der Tabelle wählen/verwenden ...

Und so weiter

Funktioniert wunderbar, sogar besser als HLOOKUP oder VLOOOKUP

aber... Seien Sie gewarnt - es gibt eine Grenze für die Anzahl der verschachtelten if-Anweisungen, die Excel verarbeiten kann.

0voto

Pit J Punkte 159

Microsoft ersetzt SWITCH, IFS und IFVALUES durch die Funktion CHOOSE only.

=CHOOSE($L$1,"index_1","Index_2","Index_3")

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