Excel嵌套If-计算佣金

Excel嵌套If-计算佣金,excel,if-statement,excel-formula,nested,Excel,If Statement,Excel Formula,Nested,我需要根据销售业绩计算销售佣金 AMOUNT PERCENT NOTE 8000-9999 5% achievement*.05 10000-11999 20% difference of achievement-8000*.2+400 12000-13999 25% difference of achievement-8000*.25+400 14000-1599

我需要根据销售业绩计算销售佣金

AMOUNT       PERCENT             NOTE
8000-9999        5%            achievement*.05
10000-11999     20%            difference of achievement-8000*.2+400
12000-13999     25%            difference of achievement-8000*.25+400
14000-15999     30%            difference of achievement-8000*.30+400
16000 & ABOVE   35%            difference of achievement-8000*.35+400
我在excel公式中有这个

=IF(H3>8000,(H3*0.05),IF(H3<9999,H3*0.05,IF(H3>10000,((H3-8000)*0.2+400),IF(H3<11999,((H3-8000)*0.2+400),IF(H3>12000,((H3-8000)*0.25+400),IF(H3<13999,((H3-8000)*0.25+400),IF(H3>14000,((H3-8000)*0.3+400),IF(H3<15999,((H3-8000)*0.3+400),IF(H3>16000,((H3-8000)*0.35+400))))))))))

我认为另一个公式没有读过。

因此,正如我的评论,您需要将其颠倒过来:

=if(H3>16000,H3*0.35,if(H3>14000,H3*0.3,if(H3>12000,H3*0.25,if(h3>10000,H3*0.2,if(H3>8000,H3*0.05,0)))))
未对此进行测试,或输入您显示的恒定量,但结构应能正常工作


你在正确的线路上,你所需要做的就是先做最高点,然后再做下一个最高点,等等。当它是8001时,这是真的,计算停止。因此,如果您测试16001,但它不是真的,那么它将执行下一个etc

根据您的模式,这将执行您想要的操作:

=IF(H3<10000,H3*0.05,(H3-8000)*MIN((INT(H3/2000)-1),7)*0.05+400)

您将值\u if\u false与AND运算符混合。如果您只在每个条件中使用ANDcondition1、condition2,那么您的代码将更易于阅读和调试。如果您在正确的行上,那么您所需要做的就是先执行最高值,然后执行下一个最高值,等等。当它为8001时,则这是真的,并且计算停止。所以,如果你测试16001,但它不是真的,那么它将进行下一个测试,等等。这仍然可以缩短,因为H3*0.05与H3-8000*0.05+400是相同的,这与其他的形式相同。@ImaginaryHuman072889,但按照我的公式,百分比需要是15%,而不是5%,这不符合模式。结果是相同的,在5%,但我仍然需要如果改变从15%到5%我的公式。这是惊人的!谢谢@斯科特克兰纳接触!技术上是正确的,但是巨大的嵌套IF语句让我有点发抖。其他解决方案,如ScottCraner的解决方案,则更短、更易于阅读。@ImaginaryHuman072889是的,如果语句对保持逻辑的完整性是一个挑战,excel过去有一个7层的限制,但他们很快就取消了这一限制。所以,关于我的答案的唯一一件事是,它表明它是可以做到的-在excel中总是有另一种方法。。。
=IF(H3<10000,H3*0.05,(H3-8000)*MIN((INT(H3/2000)-1),7)*0.05+400)