Какая лучшая альтернатива вложенным операторам IF в этом примере?

Какая лучшая альтернатива вложенным операторам IF в этом примере?

Какой способ будет лучше (проще для чтения и поддержки, менее ресурсоемкий) для выполнения моих задач вместо вложенных операторов if? введите описание изображения здесь

Формулы в правых 4 столбцах все одинаковы, они просто ссылаются на разные части разных вкладок, которые работают совершенно одинаково. Столбец Initial Email Sent выбирается пользователем (проверка данных). Выделенная формула:

 =IF(OR([Initial Email Sent]="on hold",[Initial Email Sent]="not applicable"),[@[Initial Email
 Sent]],IF(COUNTIF(a414engagement[Status],"<>Not Applicable")=0,"Not
 Applicable",(IF((COUNTIF(a414engagement[Status],"Not
 Started")+(COUNTIF(a414engagement[Status],"In
 Progress"))=0),"Completed",(IF(COUNTIF(a414engagement[Status],"In
 Progress")+(COUNTIF(a414engagement[Status],"Completed"))>0,"In
 Progress","Not Started"))))))

Немного сложновато. Это относится к части вкладки A414, которая выглядит так: введите описание изображения здесь

Цель формулы:

  1. Если в этой строке отправлено первоначальное электронное письмонепригодныйэта ячейка должна сказатьнепригодный.
  2. Если первоначально отправленное электронное письмона удерживанииэта ячейка должна сказатьна удерживании

Все остальные функции относятся к тому, что находится на целевом рабочем листе, а не к обзорному рабочему листу:

  1. Если все элементы отмеченыне начался, ячейка A414 в обзоре должна содержатьне начался
  2. Если все элементы отмеченызавершенный, в ячейке обзора должно быть указанозавершенный.
  3. В любой другой комбинации (например, всев ходе выполнения, половиназавершенный& половинане начался) в ячейке обзора должно быть указанов ходе выполнения.

решение1

Ваша формула не полностью охватывает ваше описание. Вот формула для сценария, который вы описали:

=IF( OR( [Initial Email Sent]="on hold", [Initial Email Sent]="not applicable" ), [@[Initial Email Sent]], IF( COUNTIF( a414engagement[Status], "<>Not Started" )=0, "Not Started", IF( COUNTIF( a414engagement[Status], "<>Completed" )=0, "Completed", "In progress" ) ) )

Или, может быть, более понятно:

=IF(
    OR(
        [Initial Email Sent]="on hold",
        [Initial Email Sent]="not applicable"
    ),
    [@[Initial Email Sent]],
    IF(
        COUNTIF(
            a414engagement[Status],
            "<>Not Started"
        )=0,
        "Not Started",
        IF(
            COUNTIF(
                a414engagement[Status],
                "<>Completed"
            )=0,
            "Completed",
            "In progress"
        )
    )
)

Хитрость здесь в том, что вместо подсчета всех «не начатых» ячеек вы ищете 0 вхождений, где ячейка не «не начата».

Связанный контент