Excel - 比较两个整数,如果有+ -10%的变化,则返回一个值

时间:2013-12-28 17:42:49

标签: excel if-statement

我有两列A& B与美元金额。如果列A和列之间存在+或 - 10%,我需要在列C中返回值True。 B我还需要C列进行整理。

谢谢

4 个答案:

答案 0 :(得分:2)

这应该这样做:

=IF(((B1-A1)/A1)^2 >= .01, True, False)

答案 1 :(得分:2)

=IF(ABS((B2-A2)/A2)<0.1, "True", "False")

这得到差异的绝对值,然后检查它是否小于.1或10%。如果是,则返回true,否则返回false。我假设您要检查与A列中的值有10%的差异。我不确定您的意思是四舍五入。如果你详细说明这一点,我可以修改我的答案。

答案 2 :(得分:0)

嗯,不确定问题是什么......但如果您正在寻找以下问题的解决方案:“A必须介于B + 10%和B-10%之间” ,以下公式应该对你有所帮助! I f A介于B-10和B + 10%之间,if语句返回true;

=IF(AND(A1>=B1*0,9;A1<=B1*1,1);"True";"False")

另一种方式是B必须在A + -10%之间:

=IF(AND(B1>=A1*0,9;B1<=A1*1,1);"True";"False")

PS:你不能= ROUNDUP()或= ROUNDDOWN()一个布尔值;

答案 3 :(得分:0)

虽然评论中指定的OP“相对于A栏”,但原始问题更有趣并且仍然没有答案,值得回答。

如果数字没有顺序,则应根据 列与另一列的10%不同来衡量10%的差异。不合格的陈述相当于“其中一个数字比另一个大至少10%”,这总是意味着使用较小的数字作为基线。

思考问题:如果周一有12美元,周二有50%的损失,周三有50%的涨幅,你周三会有多少钱?

此外,除了最简单的情况外,其他任何答案都没有处理。逻辑的完整流程图实际上如下所示:

  1. 如果数字之间没有差异,请返回False。
  2. 否则,如果一个数字为零(意味着另一个数字不为零,因为步骤1),则返回True。
  3. 否则,返回abs(b-a)/min(abs(a),abs(b))是否大于或等于0.1的真值(现在除以现在只有现在是安全的,因为除数永远不为零)。
  4. 可以使用ANDOR函数在Excel中有效地实现此逻辑,并且可以使用IF函数来避免除零。

    =AND(B2-A2, OR(NOT(A2*B2), ABS(B2-A2)/IF(A2*B2, MIN(ABS(A2), ABS(B2)), 1) >= 0.1))
    

    如果A列是基线,并且您只希望将A列中的值基于+/- 10%,那么仍然需要大部分逻辑。唯一的变化是

    =AND(B2-A2, OR(NOT(A2*B2), ABS(B2-A2)/IF(A2, ABS(A2), 1) >= 0.1))
    

    注意好奇:为什么在C列的两个值中IF1结尾?这是因为Excel非常愚蠢并且评估条件的每个部分,即使是那些不应该进行逻辑评估的部分。因此,即使通过逻辑AND和OR语句也无法避免除零,因为Excel无论如何都会评估条件的不相关部分(同时逻辑上忽略其结果!)。因此,必须明确地避免除零,否则无论逻辑语句的实际结果是什么,它都会导致单元格显示零除错误。当然,在分母中放置1会导致错误的计算,但这只会在出现除零的情况下发生,并且在这种情况下,逻辑会从AND返回其他一个语句结果OR。

    如果任何数字是正数,负数或零的任何混合,即任何实数,但不是无穷大等非实数,则公式也有效。示例输出:

    enter image description here