=if() 函数未按预期运行

=if() 函数未按预期运行

我正在尝试IF在公式中使用函数MS Excel 2013,但每次IF函数都会忽略我写的条件并转到真值。我IF反复检查了我的语句,并没有发现任何奇怪或错误的地方。

这是我使用的公式:

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

首先,它检查列的值F以查看它是否大于或小于0,然后根据IF真或假进行一些计算。

问题是,即使F17包含负数,它也总是计算真实值。

答案1

逐步排除公式故障。从一个简单的开始

=如果 (F1 > 0,TRUE,FALSE)

并复制下来。如果结果显示所有行都为 TRUE,则源数据存在问题。您可能有看起来像数字的文本。

在此处输入图片描述

答案2

检查您的数据是数字格式还是文本格式。如果是文本格式,则比较结果F17>0将始终为TRUE

在此处输入图片描述

VALUE()解决方法是在公式中使用该函数。

在此处输入图片描述

对于您的情况,您需要使用以下公式:

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

当然,请注意您引用的其他一些单元格可能也包含文本格式的数字,因此请进行相应调整。

答案3

不必要的复杂性往往会使事情变得更难。首先,你有一对不需要的括号。(顺便说一句,空格使事情更容易阅读。)

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

相当于

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

简单的重新排列可以得到

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

此时,常用术语开始浮出水面。上面的内容可以简化为

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

因此

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

现在另一组括号就变得多余了:

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

你猜怎么着:

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

答案4

我刚刚遇到了同样的问题,事实证明,在我的版本 Office 365 16.0.13628.20128 中,条件、真实语句和错误语句之间的分隔符必须是分号而不是逗号:

例如=IF(SOMETHING; TRUE; FALSE)而不是=IF(SOMETHING, TRUE, FALSE)

相关内容