Cómo incluir múltiples declaraciones IF en una celda en Hojas de cálculo de Google

17

Estoy intentando cambiar el valor de una celda en Hojas de cálculo de Google en función del valor de una celda adyacente. Esta celda adyacente obtiene su valor del color de la celda adyacente usando la fórmula de esta respuesta de Quora. Por lo tanto, el valor de la celda debe cambiar según el código hexadecimal que se obtiene del color de la primera celda. Hay cuatro posibles valores hexadecimales en este momento, por lo que estaba tratando de poner cuatro declaraciones IF diferentes en la misma celda, por lo que su valor cambia en función de esto.

Mi primer intento condujo a un error de análisis de fórmula:

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

Está claro que no puede simplemente separarse si las declaraciones con comas. En base a esta pregunta de desbordamiento de pila, probé este código, con instrucciones IF anidadas:

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

Esto también conduce a un error de análisis de fórmula.

¿Hay alguna manera de que simplemente pueda incluir múltiples declaraciones IF en la misma celda que funcionarán para mi código?

Jack Graveney
fuente
¿Puedes combinarlos en un = OR o algo similar?
AccioBooks

Respuestas:

19

Usar en lookuplugar de if:

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

Tenga en cuenta que el segundo parámetro debe ser una lista ordenada.

daniel
fuente
1
Tenga en cuenta que esto no funciona si los elementos en el tercer argumento son expresión
Christiaan Westerbeek
1
Tenga en cuenta que la primera matriz (la matriz "clave") debe clasificarse (funcionó cuando la mía se ordenó alfabéticamente de forma ascendente) para que funcione según lo previsto.
fgblomqvist
@ChristiaanWesterbeek, ¿hay alguna forma de evitar esto, o solo tienes que usar anidado ifs?
Andrew
23

Respuesta corta

El problema en los ejemplos proporcionados son los paréntesis. Aplicarlos adecuadamente.

Explicación

IF() La función debe tener dos parámetros y, opcionalmente, un tercero.

IF(logical_expression, value_if_true, value_if_false)

El problema específico con

  • El primer ejemplo proporcionado es que el exterior IF()tiene demasiados parámetros.
  • el segundo ejemplo es que el logical_expressiondel exterior IF()no regresa TRUEoFALSE

En las Hojas de cálculo de Google, los parámetros de las funciones están separados por comas (o punto y coma si su hoja de cálculo usa una coma como separador decimal). Cuando se usan paréntesis para encerrar varias operaciones y funciones dentro de una función, se consideran como un parámetro de la función que las contiene.

Una práctica común es poner lo interno IF()como el value_if_false, pero podría hacerse de muchas maneras. Agregar IF()dentro de otro otro como value_if_truey value_if_falsese llama IF() logical test nestingo simplemente IF() nesting.

A continuación se muestra un ejemplo de una fórmula que tiene tres IF(), dos de ellas utilizadas para determinar la value_if_falsedel padre IF(). Se aplica una alineación vertical y de varias líneas del estilo de paréntesis para facilitar la lectura.

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

El estilo anterior podría usarse en la escritura de fórmulas de Hojas de cálculo de Google. Lo encontré útil para la depuración de fórmulas.

Referencia

Rubén
fuente
1
Muy útil, especialmente la muestra multilínea formateada, hizo que fuera mucho más fácil de entender e implementar.
Lucas
1

Puede anidar sentencias IF por ejemplo

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

Trabajaría

O

podría usar un IFAND anidado, por ejemplo

IF(AND(AND()))

También funcionaría

TechnicalTophat
fuente
La función IF () requiere al menos dos parámetros. Ver webapps.stackexchange.com/a/89068/88163
Rubén el
1

Le han ofrecido teoría y mejores enfoques, pero para responder específicamente:

¿Hay alguna manera de que simplemente pueda incluir múltiples declaraciones IF en la misma celda que funcionarán para mi código?

por favor, inténtalo:

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

Es decir, su segundo intento sin el primer paréntesis de apertura y sin el último paréntesis de cierre.

nueces
fuente