1 votes

La fonction =if() ne fonctionne pas comme elle le devrait.

J'essaie d'utiliser un IF dans une formule dans MS Excel 2013 mais à chaque fois que le IF ignore la condition que j'ai écrite et va à la valeur vraie. J'ai vérifié mon IF encore et encore, et je ne vois rien de bizarre ou d'anormal.

Voici l'équation que j'ai utilisée :

=IF(F17>0,(ABS(D17)/100*G16)+G16,(G16-((ABS(D17)/100)*G16)))

Tout d'abord, il vérifie la valeur de F pour voir s'il est supérieur ou inférieur à la colonne 0 puis il fait des calculs basés sur le IF être vrai ou faux.

Le problème est qu'il calcule toujours la valeur réelle même si la F17 contient un nombre négatif.

5voto

databyte Points 708

Dépannez la formule étape par étape. Commencez par un simple

\=IF(F1>0,TRUE,FALSE)

et copier vers le bas. Si le résultat indique VRAI pour toutes les lignes, le problème vient de vos données sources. Vous avez peut-être du texte qui ressemble à des chiffres.

enter image description here

2voto

Excellll Points 12428

Vérifiez si vos données sont formatées comme une valeur numérique ou comme du texte. Si elles sont formatées en tant que texte, alors la comparaison F17>0 sera toujours évalué à TRUE .

enter image description here

La solution de contournement consiste à utiliser l'option VALUE() dans votre formule.

enter image description here

Dans votre cas, vous voudrez utiliser la formule suivante :

=IF(VALUE(F17)>0,(ABS(D17)/100*G16)+G16,(G16-((ABS(D17)/100)*G16)))

Bien entendu, n'oubliez pas que certaines des autres cellules auxquelles vous faites référence peuvent également contenir des nombres au format texte, et ajustez-les en conséquence.

1voto

Scott Points 20468

Une complexité inutile tend à rendre les choses plus difficiles.  Pour commencer, vous avez une paire de parenthèses dont vous n'avez pas besoin.  (Et, au passage, les espaces rendent les choses plus faciles à lire).

=IF(F17>0,  (ABS(D17)/100*G16)+G16,  (G16-((ABS(D17)/100)*G16)) )

est équivalent à

=IF(F17>0,  (ABS(D17)/100*G16)+G16,   G16-((ABS(D17)/100)*G16)  )

Un réarrangement trivial permet d'obtenir

=IF(F17>0, G16 + (ABS(D17)/100*G16), G16 - ((ABS(D17)/100)*G16) )

et à ce stade, les termes courants sautent de la page.  Ce qui précède peut être simplifié comme suit

=G16 + IF(F17>0, (ABS(D17)/100*G16), -((ABS(D17)/100)*G16) )

et donc à

=G16 + IF(F17>0, 1, -1) * (ABS(D17)/100)*G16

et maintenant une autre série de parenthèses devient superflue :

=G16 + IF(F17>0,1,-1) * ABS(D17)/100 * G16

Et devinez quoi :

=G16 + SIGN(F17) * ABS(D17)/100 * G16

1voto

Do My EXCEL Points 11

F17 n'est peut-être pas au bon format de numéro, je vous suggère d'écrire =VALUE(F17)>0 quelque part dans votre feuille de calcul. Si le résultat est faux, cela signifie que votre numéro dans F17 a été stocké comme un texte.

1voto

Mathias Points 1

Je viens d'avoir le même problème et il s'avère que dans ma version, Office 365 16.0.13628.20128, le séparateur entre la condition, la déclaration vraie et la déclaration fausse devait être un point-virgule au lieu d'une virgule.

par exemple =IF(SOMETHING ; TRUE ; FALSE) au lieu de =IF(SOMETHING, TRUE, FALSE)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X