Excel 2010: вложенный оператор IF

Я работал над созданием вложенного IF для документа, над которым я работаю, однако мне удалось создать две разные сети состояний IF, которые обе работают, но их нужно объединить.

Информация, по отношению к которой:

      J           K          L          M        N
23  Start        End                           Cloud
24  01/04/2014             cloud                Yes
25  03/03/2014             Overdue      
26  22/05/1992             cloud                Yes
27  03/03/2014             Overdue      
28  01/07/2014             cloud                Yes
29  29/06/2014             On Time      
30  03/03/2014  10/03/2014 Complete              Yes

Два текущих ПЧ:

Этот оператор If сначала проверяет, заполнен ли столбец End, если он заполнен, то проект завершен, и его можно отобразить в столбце L. Затем он берет начало (дату) в столбце J и добавляет 10 рабочих дней, а затем сравнивает это на сегодняшнюю дату, чтобы узнать, является ли проект просроченным или своевременным.

=IF(NOT(ISBLANK(K25)),"Complete",IF(WORKDAY(J25,10)<TODAY(),"Overdue","On Time"))

Этот оператор IF смотрит, есть ли в столбце Cloud (N) ответ «Да», если он есть, то добавляет 20 рабочих дней к дате начала, а затем сравнивает ее с сегодняшней датой, чтобы увидеть, просрочен ли проект или вовремя.

=IF(AND(N26 = "Yes", (WORKDAY(J26,20)<TODAY())),"Overdue", "On Time")

Так что я ищу эти два вместе, но я всегда получаю сообщение об ошибке или сообщение о многих аргументах.

Что ему нужно сделать, так это: 1) посмотреть, есть ли их дата и дата окончания, если есть установленный столбец L для завершения 2) посмотреть, есть ли Да в облачном столбце, если да, добавьте 20 рабочих дней к дате начала, сравните с сегодняшняя дата и установите для столбца L значение «просрочено» или «вовремя». 3) если облачный столбец пуст, добавьте 10 рабочих дней к дате начала, затем сравните с сегодняшней датой и установите для столбца L значение «просрочено» или «вовремя».

Любая помощь будет потрясающей!!!


person Lozza1234    schedule 11.07.2014    source источник
comment
Ваши условия не связаны друг с другом, поэтому первая формула может дать Complete, а вторая, например. On time. Придумайте правила, определяющие приоритет между формулами, а затем поместите их в другой IF оператор в том же порядке.   -  person GSerg    schedule 11.07.2014
comment
=ЕСЛИ(НЕ(НЕПУСТО(K25)),Завершено,ЕСЛИ(И(N26 = Да, (РАБДЕНЬ(J26,20)‹СЕГОДНЯ())),Просрочено, Вовремя,ЕСЛИ(РАБДЕНЬ(J25,10)‹СЕГОДНЯ (),Просрочено,Вовремя)))   -  person Lozza1234    schedule 11.07.2014
comment
Это то, что ты имеешь в виду?   -  person Lozza1234    schedule 11.07.2014
comment
Нет, я не это имел в виду. Я имел в виду еще один внешний IF, в который вошли бы две ваши существующие формулы. Вы продолжаете пытаться предоставить IF четыре аргумента.   -  person GSerg    schedule 11.07.2014


Ответы (1)


Проблема с вашей комбинированной формулой проста. При выполнении сложных операторов IF в Excel я обнаружил, что это может помочь вложить их с помощью вкладок.

=IF(NOT(ISBLANK(K26)),
  "Complete",
IF(AND(N26 = "Yes", (WORKDAY(J26,20)<TODAY())),
  "Overdue",
"On Time",
IF(WORKDAY(J26,10)<TODAY(),"Overdue","On Time")))

В случае операторов Excel IF, чтобы успешно вложить их, они должны быть в шаблоне IF(Condition,Value,Else IF). Вы заметите, что ваш второй оператор IF имеет вид IF(Condition,Value1,Value2,Else IF). Очевидно, это не работает, потому что IF может принимать только 2 аргумента. Похоже, у вас есть два сценария, которые нужно обработать, если Cloud = Yes, поэтому нам нужно проявлять больше осторожности при вложении. Один из способов сделать это — не использовать условное выражение AND и вложить оператор IF в нашу первую позицию значения.

=IF(NOT(ISBLANK(K26)),
   "Complete",
 IF(N26 = "Yes",                    
   IF(WORKDAY(J26,20)<TODAY(),      
     "Overdue",
     "On Time"),
 IF(WORKDAY(J26,10)<TODAY(),
     "Overdue",
     "On Time")))

Во втором основном IF мы сгруппировали всю логику для Cloud = "YES в операторе on IF. Затем, если это не так, мы проводим базовую 10-дневную проверку. Вот завершенная формула в невложенной форме. Дайте мне знать, если я что-то неправильно понял.

=IF(NOT(ISBLANK(K26)),"Complete",IF(N26 = "Yes",IF(WORKDAY(J26,20)<TODAY(),"Overdue","On Time"),IF(WORKDAY(J26,10)<TODAY(),"Overdue","On Time")))

Я переключил даты на М/Д/Г для собственной ясности, и это были мои результаты с формулой, основанной на сегодняшней дате (11 июля 2014 г.).

4/1/2014                Overdue         Yes
3/3/2014                Overdue     
5/22/1992               Overdue         Yes
3/3/2014                Overdue     
7/1/2014                On Time         Yes
6/29/2014               On Time     
3/3/2014    10/3/2014   Complete        Yes

EDIT: формулы таблицы

Вот приведенная выше формула в табличном формате со следующими заголовками/столбцами

Start       End         Status      Cloud
4/1/2014                Overdue     Yes
3/3/2014                Overdue 
5/22/1992               Overdue     Yes
3/3/2014                Overdue 
7/1/2014                On Time     Yes
6/29/2014               On Time 
3/3/2014    10/3/2014   Complete    Yes

Формула

=IF(NOT(ISBLANK([@End])),"Complete",IF([@Cloud] = "Yes",IF(WORKDAY([@Start],20)<TODAY(),"Overdue","On Time"),IF(WORKDAY([@Start],10)<TODAY(),"Overdue","On Time")))
person StephenH    schedule 11.07.2014
comment
Большое спасибо, работает отлично! имеет так много смысла, теперь я видел ответ, просто не мог прийти в себя, м-м-м! - person Lozza1234; 11.07.2014