Я думаю, что переформулировка ваших условий может помочь вам понять, где вы ошиблись. Вместо этого подумайте об этом:
If `a>0`, then `a`. Otherwise, check if `b=#N/A`.
If `b=#N/A`, then check if `c=0`. Otherwise, `b`.
If `c=0`, then `d/61`. Otherwise, `c`.
Обратите внимание на разницу между первой строкой и тем, что вы описали. Вы прыгнули прямо на «использовать b
», а затем проверили, что b
соответствует условию после того, как вы уже сказали использовать его. Это не будет работать во вложенном условном выражении. Если вы что-то заключаете, то это сделано; другие условия не проверяются.
Чтобы проиллюстрировать это, рассмотрим случай, когда a=0
, b=#N/A
, c=0
и d=61
. Вы ожидаете, что это приведет к 1
. Оценка вашей формулы будет выглядеть следующим образом:
=IF(0>0,DB11,IF(ISNA(DA11),CZ11,IF(CZ11=0,BE11/61,CZ11)))
=IF(FALSE,DB11,IF(ISNA(DA11),CZ11,IF(CZ11=0,BE11/61,CZ11)))
=IF(ISNA(DA11),CZ11,IF(CZ11=0,BE11/61,CZ11))
=IF(ISNA(#N/A),CZ11,IF(CZ11=0,BE11/61,CZ11))
=IF(TRUE,CZ11,IF(CZ11=0,BE11/61,CZ11))
=CZ11
=0
Поскольку проверка условия на b
заканчивается на c
, условие на c
никогда даже не проверяется. Это источник вашей ошибки.
Вот как ваша формула должна быть построена.
=IF(DB11>0,DB11,IF(ISNA(DA11),IF(CZ11=0,BE11/61,CZ11),DA11))
Чтобы проиллюстрировать, как это работает, посмотрите на тот же пример, что и выше.
=IF(0>0,DB11,IF(ISNA(DA11),IF(CZ11=0,BE11/61,CZ11),DA11))
=IF(FALSE,DB11,IF(ISNA(DA11),IF(CZ11=0,BE11/61,CZ11),DA11))
=IF(ISNA(DA11),IF(CZ11=0,BE11/61,CZ11),DA11)
=IF(ISNA(#N/A),IF(CZ11=0,BE11/61,CZ11),DA11)
=IF(TRUE,IF(CZ11=0,BE11/61,CZ11),DA11)
=IF(CZ11=0,BE11/61,CZ11)
=IF(0=0,BE11/61,CZ11)
=IF(TRUE,BE11/61,CZ11)
=BE11/61
=61/61
=1