Excel IF(AND)公式部分记录忽略Y值校验问题求助
问题:Excel IF公式未按预期校验"Y"条件,部分记录返回错误折扣值
问题背景
我写了这么一个Excel公式来计算折扣:
=IF(AND([@[Discount (Y/N)]]="Y",[@count]=2),"10%",IF([@count]>2,"15%","0"))
但运行后发现不对劲——比如表格里第4条记录,Discount(Y/N)明明是"Y",count=4,不符合10%的双条件,结果却返回了15%。我感觉公式好像跳过了"Y"的校验,麻烦帮忙排查下原因。
我的表格结果是这样的:
| Discount (Y/N) | Amount | count | Discount |
|---|---|---|---|
| N | £160.00 | 2 | 0 |
| Y | £160.00 | 2 | 10% |
| N | £200.00 | 4 | 15% |
| Y | £200.00 | 4 | 15% |
| Y | £200.00 | 4 | 15% |
| Y | £200.00 | 4 | 15% |
错误原因拆解
咱们来捋一捋你的公式逻辑:
- 第一个
IF判断:只有当Discount是Y且count等于2时,才返回10%,这部分没问题; - 但第二个
IF直接判断count>2,完全没加"Discount是Y"的限制!也就是说,只要count大于2,不管Discount是Y还是N,都会返回15%——这就是为什么第3条(N,count=4)和第4条(Y,count=4)都返回15%的原因。你应该是希望只有Discount为Y且count>2时才给15%折扣吧?
修正方案
根据你的预期业务规则(Y+count=2→10%;Y+count>2→15%;其他情况→0),咱们把第二个IF的条件补上"Y"的校验就行:
修正后的IF嵌套公式
=IF(AND([@[Discount (Y/N)]]="Y",[@count]=2),"10%",IF(AND([@[Discount (Y/N)]]="Y",[@count]>2),"15%","0"))
更简洁的IFS版本(Excel 2019及以后支持)
如果你的Excel版本支持IFS函数,可以用这个更清晰的写法:
=IFS(AND([@[Discount (Y/N)]]="Y",[@count]=2),"10%",AND([@[Discount (Y/N)]]="Y",[@count]>2),"15%",TRUE,"0")
修改之后,第3条记录(N,count=4)会返回0,第4-6条(Y,count=4)会正确返回15%,完全符合你对"Y"校验的要求啦。
内容的提问来源于stack exchange,提问作者Rac
相关产品推荐
相关产品推荐

