CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Windows专区 >  Office使用

请教在Excel 工作表中用IF函数编辑个调税金公式有更简单的方法吗

楼主lina_p(htwq)2005-08-01 00:27:49 在 Windows专区 / Office使用 提问

各位老师:  
  请教在Excel   工作表中用IF函数编辑个调税金公式有更简单的方法吗?  
  我用以下方法才麻烦了:  
    =IF(AND(($AW:$AW-1200)>=0,($AW:$AW-1200)<500),($AW:$AW-1200)*5%,IF(AND(($AW:$AW-1200)>=500,($AW:$AW-1200)<2000),($AW:$AW-1200)*10%-25,IF(AND(($AW:$AW-1200)>=2000,($AW:$AW-1200)<5000),($AW:$AW-1200)*15%-125,IF(AND(($AW:$AW-1200)>=5000,($AW:$AW-1200)<20000),($AW:$AW-1200)*20%-375,IF(AND(($AW:$AW-1200)>=20000,($AW:$AW-1200)<=40000),($AW:$AW-1200)*25%-1375,0)))))  
  说明:$AW:$AW为税前工资所在的列。  
  以上公式的缺点一是太长,二是有局限性,它最多只能编到七层,即只能使用七个IF。  
   
  问题点数:20、回复次数:6Top

1 楼zara(Kyrie eleison)回复于 2005-08-01 09:10:51 得分 5

两个方法吧:   一个是写自定义函数来计算税率;   再就是建立一个列表,   表明各上限对应的税百分率和扣除值,   然后在格式中通过查找的方法来进行计算.    
   
  另外,   虽然   IF   公式可以嵌套到   7   层,   但是,   通过二分法可以表达的情形远不止   7   个的.   当然了,   这时公式的复杂程度也是比较可观的.Top

2 楼Yiqun_Zhao(蓝帆·雨轩 MS MVP)回复于 2005-08-01 13:01:41 得分 10

您可以设置一个税率表,比如下:  
   
          A                             B                 C  
  1     500                         0.05             0  
  2     2,000                     0.10             25  
  3     5,000                     0.15             125      
  4     20,000                   0.20             375      
  5     40,000                   0.25             1375      
  6     60,000                   0.30             ......  
  7     80,000                   0.35             ......    
  8     100,000                 0.40             ......    
  9     >100,000               0.45             ......  
   
  其中A列为缴交基数-1200,B列为税率,C列为个税速算数。。  
   
  使用函数查找到最接近的数据。判断大小,确定区间。[用Vlookup和一个If即可]  
  然后使用公式:  
  个税=(基数-1200)×区间上限税率-区间下限速算数  
  [本人对该公式不是很清楚,如果描述错误,请自己修正]Top

3 楼DawnPine(拂晓的松)回复于 2005-08-03 14:22:31 得分 0

版主果然厉害!  
  偶只会用VBA解决此类问题:  
   
  Function   IncomeTax(Income   As   Currency)   As   Currency  
          Dim   curTemp   As   Currency  
          curTemp   =   Income   -   1200  
          If   curTemp   <   0   Then  
                  IncomeTax   =   0  
          ElseIf   curTemp   <   500   Then  
                  IncomeTax   =   curTemp   *   0.05  
          ElseIf   curTemp   <   2000   Then  
                  IncomeTax   =   curTemp   *   0.1   -   25  
          ElseIf   curTemp   <   5000   Then  
                  IncomeTax   =   curTemp   *   0.15   -   125  
          ElseIf   curTemp   <   20000   Then  
                  IncomeTax   =   curTemp   *   0.2   -   375  
          Else  
                  IncomeTax   =   curTemp   *   0.25   -   1375  
          End   If  
          IncomeTax   =   Round(IncomeTax,   2)  
  End   Function  
   
  把这段代码放在该EXCEL文件的模块里(或ThisWorkBook)里,就可以在该文件任意一个sheet里调用了,公式很简单:    
  =IncomeTax(12345.67)  
  即可.而且结果已经舍入到分,   楼主可根据自己的情况改为舍入到元或不舍入.  
  目前把参数写死在程序中,   如果需要也可改为参数化配置.Top

4 楼lina_p(htwq)回复于 2005-09-04 02:40:54 得分 0

各位老师好!  
  谢谢各位老师,按你们给的方法,我按下列公式设置后测试成功,只是又增加一个税率表,但比原来的好多了:  
    税前工资方法2=IF(AND(D:D="china",E:E>1200),(I:I*IF(I:I=0,0,LOOKUP(I:I,税率表!$A$1:$A$9,税率表!$B$1:$B$9))-INDEX(税率表!$C$2:$C$10,MATCH(I:I,税率表!$A$2:$A$10))),IF(AND(D:D<>"china",E:E>4000),(I:I*IF(I:I=0,0,LOOKUP(I:I,税率表!$A$1:$A$9,税率表!$B$1:$B$9))-INDEX(税率表!$C$2:$C$10,MATCH(I:I,税率表!$A$2:$A$10))),0))  
   
  zara老师,能抽时间教我你在8月1号说的"通过二分法可以表达的情形远不止   7   个的"方法吗?我有别的用途.谢谢!  
  早想上来找你们,但忙了一个月来不了.很想得到你们的赐教!在此先谢谢了,没想到有这么好的论坛,这么多的高手,太棒了,我真幸运.晚安!Top

5 楼zara(Kyrie eleison)回复于 2005-09-04 09:19:56 得分 5

一级   if   条件可以区分两种情况;   两级   if   条件可以区分四种情况   (三个   if),   即通过   if   从中间分隔条件区间:   =if(条件2,   if(条件1,   结果1,   结果2),if(条件3,   结果3,   结果4))   这个公式有   3   个   if   函数,   但只嵌套了   2   级,   表示了   4   种可能.   通过同样的方法,   使用   n   级嵌套的话,   就可以表示   2^n   种条件.   这样的方法,   理解起来可能算还可以,   但真要写出公式来,   是非常郁闷的.   比如,   根据   A   列的数值在   B   列   分别列出对应的字符:   1->"A",   2->"B",   3->"C",   ...,   则   B1   单元格的格式可以是:    
  =IF(A1<=8,IF(A1<=4,IF(A1<=2,IF(A1<2,"A","B"),IF(A1<4,"C","D")),IF(A1<=6,IF(A1<6,"E","F"),IF(A1<8,"G","H"))),IF(A1<=12,IF(A1<=10,IF(A1<10,"I","J"),IF(A1<12,"K","L")),IF(A1<=14,IF(A1<14,"M","N"),IF(A1<16,"O","P"))))  
  这里只使用了   4   级嵌套,   表示了   16   种情况:   (当然了,   这个公式只是个示例,   没有实际使用价值的)  
  =IF(A1<=8,  
        IF(A1<=4,  
            IF(A1<=2,  
                IF(A1<2,"A","B"),  
                IF(A1<4,"C","D")),  
            IF(A1<=6,  
                IF(A1<6,"E","F"),  
                IF(A1<8,"G","H"))),  
      IF(A1<=12,  
          IF(A1<=10,  
              IF(A1<10,"I","J"),  
              IF(A1<12,"K","L")),  
          IF(A1<=14,  
              IF(A1<14,"M","N"),  
              IF(A1<16,"O","P"))))Top

6 楼lina_p(htwq)回复于 2005-09-08 13:16:06 得分 0

太好了,谢谢zara老师!  
   
    对不起大家,我在9月4日发的贴子中的第四行:"税前工资方法2"写错了,应改为"个调税核算方法2"  
    特此说明.Top

相关问题

  • 求Excel关于函数和公式方面的电子书下载地址???
  • excel函数
  • Excel 公式
  • excel 公式.
  • Excel使用函数求助
  • 求教excel函数?????急!!!!!!!!!!!!!!!
  • excel数字函数问题
  • EXCEL公式设定
  • 请教Excel公式
  • EXCEL公式问题

关键词

  • 函数
  • 公式
  • curtemp
  • aw
  • 区间
  • 方法
  • 列为
  • as currency

得分解答快速导航

  • 帖主:lina_p
  • zara
  • Yiqun_Zhao
  • zara

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo