Excel公式构造辅助,参数太多

税表

我正在想这个税表的正确的公式。 (见附图)但我不太熟悉Excel Loopy格式。 你能发现我的代码有什么问题吗?

=IF(J2<10000,J2*0.05,IF(J2<30000,(J2-10000)*0.1+500),IF(J2<70000,(J2-30000)*.15+2500),IF(J2<140000,(J2-70000)*.20+8500),IF(J2<250000,(J2-140000)*.25+22500),IF(J2<500000,(J2-250000)*.30+50000),IF(J2>500000,(J2-500000)*.32+125000)) 

更清晰的格式:

 IF(J2<10000, J2*0.05, IF(J2<30000, (J2-10000)*0.1+500), IF(J2<70000, (J2-30000)*.15+2500), IF(J2<140000, (J2-70000)*.20+8500), IF(J2<250000, (J2-140000)*.25+22500), IF(J2<500000, (J2-250000)*.30+50000), IF(J2>500000, (J2-500000)*.32+125000)) 

这是说我input了太多的论据。 恰好有7个IF语句。 有什么办法可以使这项工作? 希望没有使用名称或variables,因为我实际上想将这个公式转换成C#程序,所以这个格式是首选的。

有时候,Excel对“太多争论”的评论应该被解读为“过多的题目”。

试试你的公式的这个版本:

 =IF(J2<10000,J2*0.05,IF J2<30000,(J2-10000)*0.1+500,IF J2<70000,(J2-30000)*.15+2500,IF J2<140000,(J2-70000)*.20+8500,IF J2<250000,(J2-140000)*.25+22500,IF J2<500000,(J2-250000)*.30+50000,IFJ2>500000,(J2-500000)*.32+125000) 

我没有Excel的方便另外2个小时来testing,但看看你closures嵌套的公式。 我有一个印象,你在“其他”参数之前closures每一个。 你在第一个如果做到了正确的方式。 把所有结束')'结束。

你后面的公式是:

 =IF(J2< 10000, J2 *0.05, IF(J2< 30000,(J2- 10000)*0.10+ 500, IF(J2< 70000,(J2- 30000)*0.15+ 2500, IF(J2<140000,(J2- 70000)*0.20+ 8500, IF(J2<250000,(J2-140000)*0.25+ 22500, IF(J2<500000,(J2-250000)*0.30+ 50000, (J2-500000)*0.32+125000)))))) 

如果你想在VBA中做到这一点,它将更具可读性,可维护性和可扩展性:)下面是我的看法:

 Public Function TaxDue(TaxableIncome As Double) As Double Select Case TaxableIncome Case Is < 10000 TaxDue = TaxableIncome * 0.05 Case Is < 30000 TaxDue = TaxableIncome * 0.1 + 500 Case Is < 70000 TaxDue = TaxableIncome * 0.15 + 2500 Case Is < 140000 TaxDue = TaxableIncome * 0.2 + 8500 Case Is < 250000 TaxDue = TaxableIncome * 0.25 + 22500 Case Is < 500000 TaxDue = TaxableIncome * 0.3 + 50000 Case Else TaxDue = TaxableIncome * 0.32 + 125000 End Select End Function 

为了这个工作,你必须把它放在你想使用公式的文件中的一个模块中。 在模块中后,只需在单元格中键入= TaxDue即可。