Как включить несколько операторов IF в одну ячейку в Google Sheets


17

Я пытаюсь изменить значение ячейки в Google Sheets на основе значения соседней ячейки. Эта смежная ячейка получает свое значение от цвета смежной с ней ячейки, используя формулу из этого ответа Quora. Таким образом, значение ячейки должно меняться в зависимости от шестнадцатеричного кода, который получается из цвета первой ячейки. В данный момент существует четыре возможных шестнадцатеричных значения, поэтому я пытался поместить четыре разных оператора IF в одну и ту же ячейку, поэтому его значение изменяется в зависимости от этого.

Моя первая попытка привела к ошибке разбора формулы:

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

Понятно, что нельзя просто разделять операторы запятыми. Основываясь на этом вопросе переполнения стека, я попробовал этот код с вложенными операторами IF:

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

Это также приводит к ошибке разбора формулы.

Можно ли как-то просто включить несколько операторов IF в одну ячейку, что будет работать для моего кода?


Можете ли вы объединить их в = ИЛИ или что-то подобное?
AccioBooks

Ответы:


19

Используйте lookupвместо if:

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

Обратите внимание, что второй параметр должен быть отсортированным списком.


1
Обратите внимание, что это не работает, если элементы в 3-м аргументе являются выражением
Christiaan Westerbeek

1
Обратите внимание, что первый массив (массив «ключ») должен быть отсортирован (он работал, когда мой был отсортирован по алфавиту в порядке возрастания), чтобы он работал как задумано.
fgblomqvist

@ChristiaanWesterbeek, есть ли способ обойти это, или вам просто нужно использовать вложенные ifs?
Андрей

23

Короткий ответ

Проблема в приведенных примерах заключается в скобках. Примените их правильно.

объяснение

IF() Функция должна иметь два параметра и, необязательно, третий.

IF(logical_expression, value_if_true, value_if_false)

Конкретная проблема с

  • первый приведенный пример - внешнее IF()имеет слишком много параметров.
  • Второй пример: logical_expressionвнешние IF()не возвращают TRUEилиFALSE

В Google Sheets параметры функций разделяются запятыми (или точками с запятой, если ваша таблица использует запятую в качестве десятичного разделителя). Когда круглые скобки используются для включения нескольких операций и функций в функцию, они рассматриваются как параметр функции, которая их содержит.

Обычная практика - это ставить внутреннее IF()как value_if_false, но это можно сделать разными способами. Добавление IF()внутри другого другого как value_if_trueи value_if_falseназывается IF() logical test nestingили просто IF() nesting.

Ниже приведен пример формулы, в которой три IF(), два из них используются для определения value_if_falseродительского элемента IF(). Для удобства чтения применяется многострочное и вертикальное выравнивание стиля скобок.

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

Вышеупомянутый стиль может быть использован при написании формулы Google Sheets. Я нашел это полезным для отладки формул.

Ссылка


1
Очень полезный, особенно отформатированный многострочный пример - он намного облегчил понимание и реализацию.
Лука

4

Я только что узнал, как объединить, если и или.

Пример:

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

Итак, для вашего примера:

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

Источник: Совместное использование логических функций IF, AND, OR в электронной таблице Google Doc .


1

Например, вы можете вкладывать операторы IF

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

Должно сработать

ИЛИ

вы можете использовать вложенный IFAND, например,

IF(AND(AND()))

Также будет работать.


Функция IF () требует как минимум двух параметров. См. Webapps.stackexchange.com/a/89068/88163
Рубен

1

Вам предложили теорию и лучшие подходы, но вы должны ответить конкретно:

Можно ли как-то просто включить несколько операторов IF в одну ячейку, что будет работать для моего кода?

Пожалуйста попробуйте:

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

То есть ваша вторая попытка без первой открывающей скобки и без последней закрывающей скобки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.