2010-12-15 79 views
2

Je m'excuse si cela n'est pas considéré comme une vraie programmation car c'est dans Excel mais j'ai besoin d'aide et c'est l'endroit le plus utile que je connaisse!Avoir une erreur div/0 dans Excel 2007 retourner un 0 avec dans une grande formule

Bon j'ai donc un très grand si la formule dans 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) 

Que puis-je faire pour en sorte que si elle renvoie une erreur div/0, il passera une valeur de 0 au lieu de la #DIV/0! Erreur?

Serait-il quelque chose comme:

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

Si oui, comment puis-je ajouter que ma formule actuelle et non le casser? Serait-ce:

=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)) 

Merci pour votre aide!

EDIT: Tim a essayé votre suggestion:

=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) 

encore en train d'une erreur #DIV/0, toute idée pourquoi?

+1

Cela ne ressemble pas vraiment à une syntaxe Excel valide. Quels sont les codes 'LF'? –

+0

LF $ 1139 a un nombre et pas de formule. – Furlong

Répondre

2

=IsError(100/0) retournera TRUE, alors assurez la condition avant la sortie 0, =IF(IsError(*),0,...)

1

Je ne recommanderais pas de dupliquer toute la formule comme ça: une formule compliquée est deux fois plus compliquée.

Puisque la division ne se produit que dans un seul endroit, je vous recommande de mettre la vérification là. Ce:

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

devient ceci:

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

J'ai essayé cela et toujours obtenir une erreur div/0. – Furlong

4

Excel 2007 a une nouvelle fonction IFERROR que vous pouvez utiliser comme

=IFERROR(MyLongFormula,0) 
+0

Cela a l'avantage supplémentaire que la formule est entrée une seule fois. –