Jak dołączyć wiele instrukcji JEŻELI do jednej komórki w Arkuszach Google

17

Usiłuję zmienić wartość komórki w Arkuszach Google na podstawie wartości sąsiedniej komórki. Ta sąsiednia komórka otrzymuje swoją wartość z koloru sąsiedniej komórki za pomocą formuły z tej odpowiedzi Quora. Tak więc wartość komórki powinna się zmienić w oparciu o kod szesnastkowy uzyskany z koloru pierwszej komórki. Istnieją obecnie cztery możliwe wartości szesnastkowe, więc próbowałem umieścić cztery różne instrukcje IF w tej samej komórce, więc na tej podstawie zmienia się jej wartość.

Moja pierwsza próba doprowadziła do błędu analizy formuły:

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

Oczywiste jest, że nie można po prostu oddzielić, jeśli instrukcje są przecinkami. Na podstawie tego pytania dotyczącego przepełnienia stosu wypróbowałem ten kod z zagnieżdżonymi instrukcjami IF:

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

Prowadzi to również do błędu analizy formuły.

Czy jest jakiś sposób, aby po prostu dołączyć wiele instrukcji IF w tej samej komórce, która będzie działać dla mojego kodu?

Jack Graveney
źródło
Czy możesz połączyć je w OR lub coś podobnego?
AccioBooks

Odpowiedzi:

19

Użyj lookupzamiast if:

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

Uwaga: drugim parametrem musi być posortowana lista.

Daniel
źródło
1
Zauważ, że to nie działa, jeśli elementy w trzecim argumencie są wyrażeniem
Christiaan Westerbeek,
1
Zauważ, że pierwsza tablica (tablica „kluczowa”) musi być posortowana (działała, gdy moja była posortowana alfabetycznie rosnąco), aby działała zgodnie z przeznaczeniem.
fgblomqvist
@ChristiaanWesterbeek, czy jest na to jakiś sposób, czy wystarczy użyć zagnieżdżonego ifs?
Andrew
23

Krótka odpowiedź

Problemem w podanych przykładach są nawiasy. Zastosuj je poprawnie.

Wyjaśnienie

IF() funkcja powinna mieć dwa parametry i opcjonalnie trzeci.

IF(logical_expression, value_if_true, value_if_false)

Konkretny problem z

  • pierwszym podanym przykładem jest to, że zewnętrzny IF()ma zbyt wiele parametrów.
  • drugim przykładem jest to, że logical_expressionzewnętrzne IF()nie zwracają TRUElubFALSE

W Arkuszach Google parametry funkcji są oddzielone przecinkami (lub średnikami, jeśli arkusz kalkulacyjny używa przecinka jako separatora dziesiętnego). Gdy w nawiasie są używane różne operacje i funkcje wewnątrz funkcji, są one uważane za parametr funkcji, która je zawiera.

Powszechną praktyką jest umieszczanie wewnętrznego IF()jako value_if_false, ale można to zrobić na wiele sposobów. Dodanie IF()wewnątrz innego, jak value_if_truei value_if_falsejest nazywane IF() logical test nestinglub po prostu IF() nesting.

Poniżej znajduje się przykład formuły, która ma trzy IF(), dwa z nich użyte do określenia value_if_falserodzica IF(). Dla czytelności zastosowano wieloliniowe i pionowe wyrównanie stylu nawiasów

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

Powyższy styl można wykorzystać do pisania formuł w Arkuszach Google. Uznałem, że jest to przydatne do debugowania formuł.

Odniesienie

Ruben
źródło
1
Bardzo przydatne, zwłaszcza sformatowana próbka wielowierszowa - znacznie ułatwiła zrozumienie i wdrożenie.
Łukasz
4

Właśnie dowiedziałem się, jak połączyć, jeśli i lub.

Przykład:

=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”)

Na przykład:

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

Źródło: Połączone użycie IF, AND, OR Funkcje logiczne w arkuszu kalkulacyjnym Google Doc .

Geoffrey Derry
źródło
1

Można na przykład zagnieżdżać instrukcje IF

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

Pracowałbym

LUB

możesz na przykład użyć zagnieżdżonego IFAND

IF(AND(AND()))

Działa również.

TechnicalTophat
źródło
Funkcja IF () wymaga co najmniej dwóch parametrów. Zobacz webapps.stackexchange.com/a/89068/88163
Rubén
1

Zaproponowano ci teorię i lepsze podejście, ale musisz odpowiedzieć konkretnie:

Czy jest jakiś sposób, aby po prostu dołączyć wiele instrukcji IF w tej samej komórce, która będzie działać dla mojego kodu?

proszę spróbować:

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

To znaczy, twoja druga próba bez pierwszego nawiasu otwierającego i bez ostatniego nawiasu zamykającego.

orzechy
źródło