2010-12-15 1 views
2

Прошу прощения, если это не считается реальным программированием, поскольку оно находится в Excel, но мне нужна помощь, и это самое полезное место, которое я знаю!Имея ошибку div/0 в excel 2007, возвращаем 0 с помощью большой формулы

Хорошо так что у меня очень большой, если формула в Excel:

=IF(AND(($EZ16+LF$1139)>$B$1145,($EZ16+LF$1139)<$B$1146),IF(OR(AND($FB16<LF$1141,$FB16>LF$1142),AND($FE16<LF$1141,$FE16>LF$1142),AND($FH16<LF$1141,$FH16>LF$1142),AND($FK16<LF$1141,$FK16>LF$1142),AND($FN16<LF$1141,$FN16>LF$1142),AND($FQ16<LF$1141,$FQ16>LF$1142),AND($FT16<LF$1141,$FT16>LF$1142),AND($FW16<LF$1141,$FW16>LF$1142),AND($FZ16<LF$1141,$FZ16>LF$1142),AND($GC16<LF$1141,$GC16>LF$1142),AND($GF16<LF$1141,$GF16>LF$1142)),FALSE,(EU16/EI16-1)),FALSE) 

Что я могу сделать для него, так что если он возвращает/0 ошибка Div будет передать значение 0 вместо #DIV/0! ошибка?

Будет ли что-то вроде:

=IF(ISERROR(A1/B1),0,A1/B1) 

Если да, то как я могу добавить, что в моей текущей формуле и не сломать его? Будет ли это:

=IF(ISERROR(IF(AND(($EZ16+LF$1139)>$B$1145,($EZ16+LF$1139)<$B$1146),IF(OR(AND($FB16<LF$1141,$FB16>LF$1142),AND($FE16<LF$1141,$FE16>LF$1142),AND($FH16<LF$1141,$FH16>LF$1142),AND($FK16<LF$1141,$FK16>LF$1142),AND($FN16<LF$1141,$FN16>LF$1142),AND($FQ16<LF$1141,$FQ16>LF$1142),AND($FT16<LF$1141,$FT16>LF$1142),AND($FW16<LF$1141,$FW16>LF$1142),AND($FZ16<LF$1141,$FZ16>LF$1142),AND($GC16<LF$1141,$GC16>LF$1142),AND($GF16<LF$1141,$GF16>LF$1142)),FALSE,(EU16/EI16-1)),FALSE))**),0,IF**(AND(($EZ16+LF$1139)>$B$1145,($EZ16+LF$1139)<$B$1146),IF(OR(AND($FB16<LF$1141,$FB16>LF$1142),AND($FE16<LF$1141,$FE16>LF$1142),AND($FH16<LF$1141,$FH16>LF$1142),AND($FK16<LF$1141,$FK16>LF$1142),AND($FN16<LF$1141,$FN16>LF$1142),AND($FQ16<LF$1141,$FQ16>LF$1142),AND($FT16<LF$1141,$FT16>LF$1142),AND($FW16<LF$1141,$FW16>LF$1142),AND($FZ16<LF$1141,$FZ16>LF$1142),AND($GC16<LF$1141,$GC16>LF$1142),AND($GF16<LF$1141,$GF16>LF$1142)),FALSE,(EU16/EI16-1)),FALSE)) 

Благодарим за помощь!

EDIT: Тим испытанный Ваше предложение:

=IF(AND(($EZ16+LF$1139)>$B$1145,($EZ16+LF$1139)<$B$1146),IF(OR(AND($FB16<LF$1141,$FB16>LF$1142),AND($FE16<LF$1141,$FE16>LF$1142),AND($FH16<LF$1141,$FH16>LF$1142),AND($FK16<LF$1141,$FK16>LF$1142),AND($FN16<LF$1141,$FN16>LF$1142),AND($FQ16<LF$1141,$FQ16>LF$1142),AND($FT16<LF$1141,$FT16>LF$1142),AND($FW16<LF$1141,$FW16>LF$1142),AND($FZ16<LF$1141,$FZ16>LF$1142),AND($GC16<LF$1141,$GC16>LF$1142),AND($GF16<LF$1141,$GF16>LF$1142)),FALSE,IF(EI16=1,0,EU16/EI16-1)),FALSE) 

Все еще получаю ошибку #DIV/0, любая идея, почему?

+1

Это не похоже на синтаксис синтаксиса Excel. Что такое коды LF? – 2010-12-15 17:25:54

+0

LF $ 1139 имеет число в нем и формулу. – Furlong 2010-12-15 17:45:46

ответ

2

=IsError(100/0) вернется TRUE, так что условное, прежде чем выводить 0, =IF(IsError(*),0,...)

1

Я бы не рекомендовал дублировать всю формулу следующим образом: сложная формула только что получила в два раза сложнее.

Поскольку деление происходит только в одном месте, я бы рекомендовал поставить чек там. Это:

...(EU16/EI16-1)... 

становится этим:

...IF(EI16=1, 0, EU16/EI16-1)... 
+0

Пробовал это и все еще получал ошибку div/0. – Furlong 2010-12-15 17:32:02

4

Excel 2007 имеет новую функцию ЕСЛИОШИБКА, которую можно использовать как

=IFERROR(MyLongFormula,0)