我有以下IF语句:
=IF(AG3<=7,"1",IF(15<=AG3<=21,"2",IF(22<=AG3<=28,"3",IF(29<=AG3<=35,"4",IF(36<=AG3<=42,"5",IF(43<=AG3<=49,"6",IF(50<=AG3<=56,"7")))))))
但是它给我1或“假”
所有值均在范围内,并应显示各种数字
答案 0 :(得分:3)
Excel不使用50<=AG3<=56
。 Excel读取此内容的方式是它将解析AG3<=56
并将解析为分别具有TRUE
和FALSE
值的1
或0
。而且由于50大于这两个值,它将始终返回FALSE
,并且由于您未指定最终的错误参数,Excel返回FALSE
它必须为AND(50<=AG3, AG3<=56)
也"1"
返回一个数字作为文本,而不是一个真数字,请删除引号。
所以:
=IF(AG3<=7,1,IF(AND(15<=AG3,AG3<=21),2,IF(AND(22<=AG3,AG3<=28),3,IF(AND(29<=AG3,AG3<=35),4,IF(AND(36<=AG3,AG3<=42),5,IF(AND(43<=AG3,AG3<=49),6,IF(AND(50<=AG3,AG3<=56),7,"Value not in specs")))))))
但是根据您的标准,您可以使用:
=IF(OR(AND(AG3>=8,AG3<=14),AG3>56),"Not to Spec",MATCH(AG3,{-1E+99,15,22,29,36,43,40}))
答案 1 :(得分:2)
如果可以避免,请不要使用嵌套IF。相反,请使用带状的VLOOKUP:它的效率要高很多倍,并且故障排除要简单得多。像这样的答案:
Excel IF statement Not returning the appropriate Value
在您的情况下,这是您的查找列表:
请注意,由于您尚未指定在8到14或超过57之间应该发生什么,所以我只在这些区域中放入= NA()。
这是一系列数字的结果:
...这是第二个表的第二列中使用的公式(使用表符号):
=VLOOKUP([@Value],Table3,2,TRUE)