两个数字之间的增量公式


9

我试图找到两组数字之间的差值。一些数字是正数,一些数字是负数。

使用以下公式可以在大约99%的时间内工作:

=IF(I18<0,I18+R18,IF(I18>0,I18-R18))

但是,当I18R18为负数时,我需要I18-R18。我已经尝试了多个IF AND语句,但是似乎无法正确地做到这一点。希望有人可以指引我正确的方向。


3
您忘记说如果I18为零会发生什么。
布莱克伍德

3
“当I18R18为负数时,我需要I18-R18”您确定是这个意思吗?我以为您希望增量是绝对的差异。如果I18-2R18-1,您的结果将会是-1。您不是在所有情况下都想要一个正数吗?
JoL

是否=ABS(I18)-ABS(R18)产生所需的输出?
萨尔曼A

3
您的问题确实不清楚。当我看到答案时,我只能理解你的想法(但我仍然不确定那是想要的)。同样,只有A+B当A和B都为零时,A和B之间的增量才能为。
德米特里·格里戈里耶夫

3
增量通常意味着两个数字之间,这是永远 AB,除非你想表示该数字越大,你会采取绝对值ABS(AB)
米克,

Answers:


55

听起来您只是想要I18和之间的差异(delta)R18,而您希望它始终为正?

这个公式可以做到:

=ABS(I18-R18)

I18是正数,负数或零将给出正确的答案。


3
看看其他答案有多复杂!把事情简单化!
斯图尔特

11
公平地说,该问题询问如何使嵌套IF()工作正确进行。其他答案解决了所提出的问题。但是有时候,走不同的道路会让您更快地到达正确的地方。
史蒂夫·肯尼迪

@Stewart更加公平地说,尚不清楚OP是否需要绝对差异。ToddCurry和PeterH的答案旨在满足OP集不会导致绝对差异的条件。
JoL

@Stewart,大多数其他答案与该答案基本相同,除了它们在更基本的条件块中开发函数ABS()之外。但实际上,没有什么复杂的。
cedbeu

1
@cedbeu确实很复杂。如果仅仅是因为其他答案更难于阅读和解析,就从心理上讲。
斯图尔特


5

让我们简化您的原始代码:

If X < 0:
    Z = X + Y

Else X > 0:
    Z = X - Y

现在,您说当X <0且Y <0时,您实际上希望结果为X-Y,而不是X +Y。

If Y < 0:
   If X < 0:
      Z = X - Y
   Else:
      Z = X + Y
Else:
   If X < 0:
      Z = X - Y
   Else:
      Z = X + Y

那是书面的。

=IF(R18<0,IF(I18<0,I18-R18,I18+R18),IF(I18<0,I18-R18,I18+R18))

如上所述,大小写不为零。您可以通过简单地添加等号将LT / GT比较器之一更改为LE / GE,具体取决于您的数据和逻辑。


除非我读错了什么,否则在较大的伪代码中,If Y<0 {A} Else {B}但A和B相同。有错字吗?
卡米尔·德拉卡里

3

您可以使用以下内容:

=IF(AND(I18<0,R18<0),I18-R18,IF(I18<0,I18+R18,IF(I18>0,I18-R18)))

我唯一可以看到的缺陷是,在的情况下I18 = 0,您没有做什么设置。

无论如何,如果您想为该实例添加某些内容,请参见下文:

=IF(AND(I18<0,R18<0),I18-R18,IF(I18<0,I18+R18,IF(I18>0,I18-R18,"IF I18 = zero goes here")))

1

我不知道ABS。我本来建议

= SQRT((I18-R18)^ 2)


2
考虑到平方根的计算很重要并且容易产生舍入误差,这并不是最优的。
大卫·佛斯特

0

这对我有用-> IF(AND(I18 <0,R18 <0),I18-R18,IF(I18 <0,(((R18-I18)*-1),IF(I18> = 0,I18-R18 )))

这涵盖了所有方案:变量A | 变量B + ve | + ve + ve | -ve -ve | + ve -ve | -ve


(1)两个二进制(+ /  -)变量的四个(2²)可能组合的表是微不足道的,并且显示该表无助于澄清您的答案。如果您要发布对这个问题不清楚的答案,则有助于解释您认为正在回答的问题。(2)无论您在做什么,公式似乎都不必要地复杂。解释它在做什么将是有帮助的。…………………………………………………………请不要发表评论;编辑  您的答案,使其更清晰,更完整。
斯科特,

0

我只是遇到一种情况(测量色彩实验室的读数),我不仅需要简单地确定x和y之间的差异,还不需要正向或负向运动。因此,通常-5减-2 = -3,但想要显示增量实际上是在正方向-3上,这并不是我想要的:

= IF(A1> B1,ABS(A1-B1)*-1,ABS(A1-B1))

简单地说,如果第二个(较新的)读数较小,则我知道结果是负向运动(因此* -1),并且已进一步向下移动到轴的负向侧。否则,如果第二读数较大,则纯ABS值会起作用,但要知道差异在正方向上。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.