J'essaie de trouver le delta entre deux ensembles de nombres. Certains chiffres sont positifs, certains négatifs.
L'utilisation de la formule suivante fonctionne environ 99% du temps:
=IF(I18<0,I18+R18,IF(I18>0,I18-R18))
Cependant, lorsque I18
et R18
sont des nombres négatifs, j'ai besoin I18-R18
. J'ai essayé plusieurs IF
AND
déclarations, mais je n'arrive tout simplement pas à comprendre cela. J'espère que quelqu'un pourra me guider dans la bonne direction.
microsoft-excel
Dave
la source
la source
I18
zéro.I18
etR18
sont des nombres négatifs, j'ai besoinI18-R18
" Êtes-vous sûr de vouloir dire cela? Je pensais que tu voulais le delta comme une différence absolue. SiI18
est-2
etR18
est-1
, votre résultat sera-1
. Vous ne voulez pas un nombre positif dans tous les cas?=ABS(I18)-ABS(R18)
la sortie souhaitée?A+B
si A et B sont tous deux nuls.Réponses:
On dirait que vous voulez juste la différence (delta) entre
I18
etR18
, et vous voulez qu'elle soit toujours positive?Cette formule fera cela:
=ABS(I18-R18)
Il donnera la bonne réponse, qu'elle
I18
soit positive, négative ou nulle.la source
IF()
correctement le travail imbriqué . Les autres réponses répondaient à la question posée. Mais parfois, prendre un chemin différent vous mènera plus rapidement au bon endroit.Au lieu de vérifier la négativité des opérandes, vérifiez le résultat.
la source
I18>R18
Simplifions votre code d'origine:
Maintenant, vous dites que lorsque X <0 et Y <0, vous voulez réellement que le résultat soit X - Y et non X + Y. OK.
C'est écrit.
Comme indiqué ci-dessus, vous n'avez pas de cas zéro. Vous pouvez peut-être remplacer l'un des comparateurs LT / GT par LE / GE en ajoutant simplement un signe égal - en fonction de vos données et de votre logique.
la source
If Y<0 {A} Else {B}
mais A et B sont identiques. Y a-t-il une faute de frappe?Vous pouvez utiliser ce qui suit:
Le seul défaut que je peux voir avec ceci est, que faites-vous dans un cas où
I18 = 0
, vous n'avez rien de prévu pour cela.Quoi qu'il en soit, si vous souhaitez ajouter quelque chose pour cette instance, voir ci-dessous:
la source
Je ne connaissais pas l'ABS. J'allais suggérer
la source
Cela a fonctionné pour moi -> IF (AND (I18 <0, R18 <0), I18-R18, IF (I18 <0, ((R18-I18) * - 1), IF (I18> = 0, I18-R18 )))
Cela couvre tous les scénarios: Variable A | Variable B + ve | + ve + ve | -ve -ve | + ve -ve | -ve
la source
+
/-
) est trivial, et montrer qu'il ne fait rien pour clarifier votre réponse. Si vous allez publier une réponse à une question aussi peu claire que celle-ci, il est utile d'expliquer à quelle question vous pensez que vous répondez. (2) Quoi que vous fassiez, votre formule semble inutilement complexe. Il serait utile d'expliquer ce qu'il fait. ………………………………………………… Veuillez ne pas répondre dans les commentaires; modifiez votre réponse pour la rendre plus claire et plus complète.Je suis juste tombé sur une situation (mesure des lectures en laboratoire de couleur) où j'ai besoin non seulement de la différence entre x et y mais du mouvement delta positif ou négatif. Donc normalement -5 moins -2 = -3 mais vouloir montrer que le delta était en fait dans le sens positif -3 n'est pas ce que je recherche donc:
= SI (A1> B1, ABS (A1-B1) * - 1, ABS (A1-B1))
Autrement dit, si la 2ème lecture (plus récente) est plus petite, je sais que le résultat est un mouvement négatif (donc * -1) et s'est déplacé plus loin sur le côté négatif de l'axe. Sinon, si la 2e lecture est plus grande, la valeur ABS pure fonctionne en sachant que la différence est dans le sens positif.
la source