So fügen Sie in Google Sheets mehrere IF-Anweisungen in eine Zelle ein

16

Ich versuche, den Wert einer Zelle in Google Sheets basierend auf dem Wert einer benachbarten Zelle zu ändern. Diese angrenzende Zelle erhält ihren Wert aus der Farbe der angrenzenden Zelle, wobei die Formel aus dieser Quora-Antwort verwendet wird. Der Wert der Zelle sollte sich also basierend auf dem Hex-Code ändern, der sich aus der Farbe der ersten Zelle ergibt. Momentan gibt es vier mögliche hexadezimale Werte. Daher habe ich versucht, vier verschiedene IF-Anweisungen in dieselbe Zelle einzufügen. Der Wert wird daher basierend darauf geändert.

Mein erster Versuch führte zu einem Fehler beim Parsen der Formeln:

=if((J2="#00ff00","Read"), if(j2="#ff0000", "Unread"), if(j2="#ff9900","In Progress"), if(j2="#000000", "Not Applicable"))

Es ist klar, dass Sie Anweisungen nicht einfach durch Kommas trennen können. Basierend auf dieser Stapelüberlauf-Frage habe ich diesen Code mit verschachtelten IF-Anweisungen ausprobiert:

=if((J2="#00ff00","Read", if(j2="#ff0000", "Unread", if(j2="#ff9900","In Progress",if(j2="#000000", "Not Applicable")))))

Dies führt auch zu einem Fehler beim Parsen der Formeln.

Kann ich einfach mehrere IF-Anweisungen in dieselbe Zelle einfügen, die für meinen Code geeignet sind?

Jack Graveney
quelle
Kannst du sie zu einem = OR oder ähnlichem kombinieren?
AccioBooks

Antworten:

18

Verwenden Sie lookupanstelle von if:

=lookup(B7,
       {"#000000","#00ff00","#ff0000","#ff9900"},
       {"Not applicable", "Read","Unread","In Progress"}
  ) 

Beachten Sie, dass der zweite Parameter eine sortierte Liste sein muss.

Daniel
quelle
1
Beachten Sie, dass dies nicht funktioniert, wenn die Elemente im 3. Argument Ausdruck sind
Christiaan Westerbeek
1
Beachten Sie, dass das erste Array (das "Schlüssel" -Array) sortiert werden muss (es hat funktioniert, als meins alphabetisch aufsteigend sortiert war), damit es wie beabsichtigt funktioniert.
fgblomqvist
@ChristiaanWesterbeek, gibt es einen Weg, dies zu umgehen, oder müssen Sie nur verschachtelte verwenden ifs?
Andrew
22

Kurze Antwort

Das Problem in den Beispielen ist die Klammer. Wenden Sie sie richtig an.

Erläuterung

IF() Die Funktion sollte zwei und optional einen dritten Parameter haben.

IF(logical_expression, value_if_true, value_if_false)

Das spezifische Problem mit

  • Das erste Beispiel ist, dass das äußere IF()zu viele Parameter hat.
  • Das zweite Beispiel ist, dass die logical_expressiondes Äußeren IF()nicht zurückkehren TRUEoderFALSE

In Google Sheets werden die Funktionsparameter durch Kommas getrennt (oder durch Semikolons, wenn Ihre Tabelle Kommas als Dezimaltrennzeichen verwendet). Wenn Klammern verwendet werden, um mehrere Operationen und Funktionen in eine Funktion einzuschließen, werden sie als Parameter der Funktion betrachtet, die sie enthält.

Eine übliche Praxis ist es, das Innere IF()als das zu setzen value_if_false, aber es könnte auf viele Arten geschehen. Hinzufügen IF()in einem anderen als value_if_trueund value_if_falseheißt IF() logical test nestingoder nur IF() nesting.

Unten sehen Sie ein Beispiel für eine Formel mit drei IF(), von denen zwei verwendet werden, um die value_if_falsedes übergeordneten Elements zu bestimmen IF(). Aus Gründen der Lesbarkeit wird eine mehrzeilige und vertikale Ausrichtung des Klammerstils angewendet

 =IF(logical_expression, value_if_true, 
     IF(logical_expression, value_if_true, 
        IF(logical_expression, value_if_true, value_if_false
          )
       )
    )

Der obige Stil könnte beim Schreiben von Google Sheets-Formeln verwendet werden. Ich fand es nützlich für das Debuggen von Formeln.

Referenz

Rubén
quelle
1
Sehr nützlich, insbesondere das formatierte mehrzeilige Beispiel - es war viel einfacher zu verstehen und zu implementieren.
Luke,
4

Ich habe gerade herausgefunden, wie man ob und oder kombiniert.

Beispiel:

=IF(OR(B3>49,C3>49,D3>49),”Passed”,”Failed”)
=IF(AND(B3>49,C3>49,D3>49),”Passed”,”Failed”)
=IF(OR(AND(B3>49,C3>49),AND(B3>49,D3>49),AND(C3>49,D3>49)),”Won”,”Failed”)

Also für dein Beispiel:

= if(OR(J2="#00ff00",j2="#ff0000",j2="#ff9900"),"True","False")

Quelle: Kombinierte Verwendung von IF-, AND- und OR-Funktionen in der Google Doc-Tabelle .

Geoffrey Derry
quelle
1

Sie können beispielsweise IF-Anweisungen verschachteln

If(if(if(when all 3 equal true)))

Würde funktionieren

ODER

Sie könnten zum Beispiel ein verschachteltes IFAND verwenden

IF(AND(AND()))

Würde auch funktionieren.

TechnicalTophat
quelle
Die Funktion IF () benötigt mindestens zwei Parameter. Siehe webapps.stackexchange.com/a/89068/88163
Rubén,
1

Ihnen wurden Theorie und bessere Ansätze angeboten, aber um genau zu antworten:

Kann ich einfach mehrere IF-Anweisungen in dieselbe Zelle einfügen, die für meinen Code geeignet sind?

bitte versuche:

=if(J2="#00ff00","Read", if(J2="#ff0000", "Unread", if(J2="#ff9900","In Progress",if(J2="#000000", "Not Applicable"))))

Das heißt, Ihr zweiter Versuch ohne die erste öffnende Klammer und ohne die letzte schließende Klammer.

pnuts
quelle