Какой способ будет лучше (проще для чтения и поддержки, менее ресурсоемкий) для выполнения моих задач вместо вложенных операторов 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, которая выглядит так:
Цель формулы:
- Если в этой строке отправлено первоначальное электронное письмонепригодныйэта ячейка должна сказатьнепригодный.
- Если первоначально отправленное электронное письмона удерживанииэта ячейка должна сказатьна удерживании
Все остальные функции относятся к тому, что находится на целевом рабочем листе, а не к обзорному рабочему листу:
- Если все элементы отмеченыне начался, ячейка A414 в обзоре должна содержатьне начался
- Если все элементы отмеченызавершенный, в ячейке обзора должно быть указанозавершенный.
- В любой другой комбинации (например, всев ходе выполнения, половиназавершенный& половинане начался) в ячейке обзора должно быть указанов ходе выполнения.
решение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 вхождений, где ячейка не «не начата».