我正在尝试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)
。