Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 兰色幻想

[练习题] 第六讲练习题:正反计算个税和工资(奖励积分3分)

  [复制链接]
发表于 2012-2-16 13:43 | 显示全部楼层
Function Wgeshui(n,x)
     IF x=1 then //由工资算个税的代码
            If n<=80000 Then     
               If n>55000 Then
                  Wgeshui=(n-3500)*0.35-5505
               End If
               If n>35000 Then
                  Wgeshui=(n-3500)*0.3-2755
               End If
               If n>9000 Then
                  Wgeshui=(n-3500)*0.25-1005
               End If
               If n>4500 Then
                  Wgeshui=(n-3500)*0.2-555
               End If
               If n>1500 Then
                  Wgeshui=(n-3500)*0.1-105
               End If
               If n<=1500 Then
                  Wgeshui=(n-3500)*0.03
               End If
            Elseif n>8000 Then
                  Wgeshui=(n-3500)*0.45-13505
            End If
     elseIF x=2 then//由个税倒推工资的代码
            If n<=21270 Then //超过55000元至80000元的个税(80000-3500)*0.35-5505=21270
               If n>12695 Then//超过35000元至55000元的个税(55000-3500)*0.3-2755=12695
                  Wgeshui=(n+5505)/0.35+3500
               End If
               If n>6870  Then//超过9000元至35000元的个税(35000-3500)*0.25-1005=6870
                  Wgeshui=(n+2755)/0.3+3500
               End If
               If n>545   Then//超过4500元至9000元的个税(9000-3500)*0.2-555=545
                  Wgeshui=(n+1005)/0.25+3500
               End If
               If n>205   Then//超过1500元至4500元的个税(4500-3500)*0.1+105=205
                  Wgeshui=(n+555)/0.2+3500
               End If
               If n>45    Then//不超过1500元的个税1500*0.03=45
                  Wgeshui=(n+105)/0.1+3500
               End If
               If n<45    Then
                  Wgeshui=n/0.03
               End If
            ElseIf
               Wgeshui=(n+13505)/0.45+3500
            End If
     End IF
End function

点评

语法错误  发表于 2012-2-21 16:27
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2012-2-16 13:55 | 显示全部楼层
  1. Function Wgeshui(n, x)
  2.     If x = 1 Then
  3.         yj = n - 3500
  4.         Select Case yj
  5.            Case Is < -3500
  6.                 MsgBox ("输入错误")
  7.                 GoTo W_error:
  8.             Case Is <= 0
  9.                 Wgeshui = 0
  10.             Case Is <= 1500
  11.                 Wgeshui = yj * 0.03 - 0
  12.             Case Is <= 4500
  13.                 Wgeshui = yj * 0.1 - 105
  14.             Case Is <= 9000
  15.                 Wgeshui = yj * 0.2 - 555
  16.             Case Is <= 35000
  17.                 Wgeshui = yj * 0.25 - 1005
  18.             Case Is <= 55000
  19.                 Wgeshui = yj * 0.3 - 2755
  20.             Case Is <= 80000
  21.                 Wgeshui = yj * 0.35 - 5505
  22.             Case Else
  23.                Wgeshui = yj * 0.45 - 13505
  24.            End Select
  25.     ElseIf x = 2 Then
  26.         Select Case n
  27.             Case Is < 0
  28.                 MsgBox ("输入错误")
  29.                 GoTo W_error:
  30.             Case Is = 0
  31.                 MsgBox ("未缴税,工资<3500,具体数额未知")
  32.                 GoTo W_error:
  33.             Case Is <= 45
  34.                 yj = (n + 0) / 0.03
  35.             Case Is <= 345
  36.                 yj = (n + 105) / 0.1
  37.             Case Is <= 1245
  38.                 yj = (n + 555) / 0.2
  39.             Case Is <= 7745
  40.                 yj = (n + 1005) / 0.25
  41.             Case Is <= 13745
  42.                 yj = (n + 2755) / 0.3
  43.             Case Is <= 22495
  44.                 yj = (n + 5505) / 0.35
  45.             Case Else
  46.                 yj = (n + 13505) / 0.45
  47.         End Select
  48.         Wgeshui = yj + 3500
  49.     End If
  50. W_error:
  51.     Exit Function
  52. End Function
复制代码


点评

答案正确,加3积分  发表于 2012-2-21 16:32

评分

参与人数 1金币 +10 收起 理由
兰色幻想 + 10

查看全部评分

回复

使用道具 举报

发表于 2012-2-16 15:45 | 显示全部楼层
Function WgeShui(n, x)
If x = 1 Then
Select Case n
Case Is <= 3500
WgeShui = "不用纳税"
Case Is <= 5000
WgeShui = (n - 3500) * 0.03
Case Is <= 8000
WgeShui = (n - 3500) * 0.1 - 105
Case Is <= 12500
WgeShui = (n - 3500) * 0.2 - 555
Case Is <= 38500
WgeShui = (n - 3500) * 0.25 - 1005
Case Is <= 58500
WgeShui = (n - 3500) * 0.3 - 2755
Case Is <= 83500
WgeShui = (n - 3500) * 0.35 - 5505
Case Is > 83500
WgeShui = (n - 3500) * 0.45 - 13505
End Select
ElseIf x = 2 Then

Select Case n
Case Is = 0
WgeShui = "没超过3500"
Case Is <= 45
WgeShui = n / 0.03 + 3500
Case Is <= 345
WgeShui = (n + 105) / 0.1 + 3500
Case Is <= 1245
WgeShui = (n + 555) / 0.2 + 3500
Case Is <= 7745
WgeShui = (n + 1005) / 0.25 + 3500
Case Is <= 13745
WgeShui = (n + 2755) / 0.3 + 3500
Case Is <= 22495
WgeShui = (n + 5505) / 0.35 + 3500
Case Is > 22495
WgeShui = (n + 13505) / 0.45 + 3500
End Select
End If
End Function

点评

答案正确,加3积分  发表于 2012-2-21 16:32

评分

参与人数 1金币 +10 收起 理由
兰色幻想 + 10

查看全部评分

回复

使用道具 举报

发表于 2012-2-16 15:47 | 显示全部楼层
本帖最后由 Tristone 于 2012-2-21 00:20 编辑



  1. Function Wgeshui(n, x)
  2.     If x = 1 Then '由工资算个税的代码
  3.         If n > 0 And n <= 3500 Then
  4.            Wgeshui = 0
  5.         ElseIf n > 3500 And n <= 5000 Then
  6.             Wgeshui = (n - 3500) * 0.03
  7.         ElseIf n > 5000 And n <= 8000 Then
  8.             Wgeshui = (n - 3500) * 0.1 - 105
  9.         ElseIf n > 8000 And n <= 12500 Then
  10.             Wgeshui = (n - 3500) * 0.2 - 555
  11.         ElseIf n > 12500 And n <= 38500 Then
  12.             Wgeshui = (n - 3500) * 0.25 - 1005
  13.         ElseIf n > 38500 And n <= 58500 Then
  14.             Wgeshui = (n - 3500) * 0.3 - 2755
  15.         ElseIf n > 58500 And n <= 835000 Then
  16.             Wgeshui = (n - 3500) * 0.35 - 5505
  17.         ElseIf n > 83500 Then
  18.             Wgeshui = (n - 3500) * 0.4 - 13505
  19.         End If
  20.     ElseIf x = 2 Then '由个税倒推工资的代码
  21.         If n > 0 And n <= 45 Then
  22.             Wgeshui = n / 0.03 + 3500
  23.         ElseIf n > 45 And n <= 345 Then
  24.             Wgeshui = (n + 105) / 0.1 + 3500
  25.         ElseIf n > 345 And n <= 1245 Then
  26.             Wgeshui = (n + 555) / 0.2 + 3500
  27.         ElseIf n > 1245 And n <= 7745 Then
  28.             Wgeshui = (n + 1005) / 0.25 + 3500
  29.         ElseIf n > 7745 And n <= 13745 Then
  30.             Wgeshui = (n + 2755) / 0.3 + 3500
  31.         ElseIf n > 13745 And n <= 22495 Then
  32.             Wgeshui = (n + 5505) / 0.35 + 3500
  33.         ElseIf n > 22495 Then
  34.                 Wgeshui = (n + 13505) / 0.4 + 3500
  35.         End If
  36.     End If
  37. End Function
复制代码

点评

答案正确,加3积分  发表于 2012-2-21 16:32

评分

参与人数 1金币 +10 收起 理由
兰色幻想 + 10

查看全部评分

回复

使用道具 举报

发表于 2012-2-16 17:20 | 显示全部楼层
E05:linch92413交作业
个税函数(linch92413).rar (8.73 KB, 下载次数: 17)

点评

这里是上次练习题的地方。上交错了  发表于 2012-2-21 16:29
回复

使用道具 举报

发表于 2012-2-16 21:51 | 显示全部楼层
Function WGeShui(gz As Range, x As Integer)  '注gz为引用单元格中的工资数额
    Dim lShuoDeE As Long
    lShuoDeE = gz - 3500
    If x = 1 Then
        If lShuoDeE <= 0 Then
            WGeShui = 0
        ElseIf lShuoDeE <= 1500 Then
            WGeShui = lShuoDeE * 0.03
        ElseIf lShuoDeE > 1500 And lShuoDeE <= 4500 Then
            WGeShui = lShuoDeE * 0.1 - 105
        ElseIf lShuoDeE > 4500 And lShuoDeE <= 9000 Then
            WGeShui = lShuoDeE * 0.2 - 555
        ElseIf lShuoDeE > 9000 And lShuoDeE <= 35000 Then
            WGeShui = lShuoDeE * 0.25 - 1005
        ElseIf lShuoDeE > 35000 And lShuoDeE <= 55000 Then
            WGeShui = lShuoDeE * 0.3 - 2755
        ElseIf lShuoDeE > 55000 And lShuoDeE <= 80000 Then
            WGeShui = lShuoDeE * 0.35 - 5505
        ElseIf lShuoDeE > 80000 Then
            WGeShui = lShuoDeE * 0.45 - 13505
        End If
    Else
        If gz = 0 Then
            WGeShui = gz / 0.03 + 3500
        ElseIf gz > 0 And gz <= 105 Then
            WGeShui = (gz + 105) / 0.1 + 3500
        ElseIf gz > 105 And gz <= 555 Then
            WGeShui = (gz + 555) / 0.2 + 3500
        ElseIf gz > 555 And gz <= 1005 Then
            WGeShui = (gz + 1005) / 0.25 + 3500
        ElseIf gz > 1005 And gz <= 2755 Then
            WGeShui = (gz + 2755) / 0.3 + 3500
        ElseIf gz > 2755 And gz <= 5505 Then
            WGeShui = (gz + 5505) / 0.35 + 3500
        ElseIf gz > 5505 Then
            WGeShui = (gz + 13505) / 0.45 + 3500
        End If
    End If
End Function

D05:vbamaster

点评

正算没问题,反算是错的  发表于 2012-2-21 16:29
回复

使用道具 举报

发表于 2012-2-17 00:45 | 显示全部楼层
本帖最后由 happym8888 于 2012-2-20 23:33 编辑

游客,如果您要查看本帖隐藏内容请回复

点评

答案正确,加3积分  发表于 2012-2-21 16:32

评分

参与人数 1金币 +10 收起 理由
兰色幻想 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-2-17 09:48 | 显示全部楼层
E学委:sunjing-zxl

Function Wgeshui(x As Double, n As Long)
    If n = 1 Then    '正算
        If x - 3500 <= 0 Then
            Wgeshui = 0
        ElseIf x - 3500 <= 1500 Then
            Wgeshui = (x - 3500) * 3 / 100
        ElseIf x - 3500 <= 4500 Then
            Wgeshui = (x - 3500) * 10 / 100 - 105
        ElseIf x - 3500 <= 9000 Then
            Wgeshui = (x - 3500) * 20 / 100 - 555
        ElseIf x - 3500 <= 35000 Then
            Wgeshui = (x - 3500) * 25 / 100 - 1005
        ElseIf x - 3500 <= 55000 Then
            Wgeshui = (x - 3500) * 30 / 100 - 2755
        ElseIf x - 3500 <= 80000 Then
            Wgeshui = (x - 3500) * 35 / 100 - 5505
        Else
            Wgeshui = (x - 3500) * 45 / 100 - 13505
        End If
    ElseIf n = 2 Then    '反算
        If x = 0 Then
            Wgeshui = "小于3500"
        ElseIf x <= 1500 * 0.03 Then
            Wgeshui = x / 0.03 + 3500
        ElseIf x <= 4500 * 0.1 - 105 Then
            Wgeshui = (x + 105) / 0.1 + 3500
        ElseIf x <= 9000 * 0.2 - 555 Then
            Wgeshui = (x + 555) / 0.2 + 3500
        ElseIf x <= 35000 * 0.25 - 1005 Then
            Wgeshui = (x + 1005) / 0.25 + 3500
        ElseIf x <= 55000 * 0.3 - 2755 Then
            Wgeshui = (x + 2755) / 0.3 + 3500
        ElseIf x <= 80000 * 0.35 - 5505 Then
            Wgeshui = (x + 5505) / 0.35 + 3500
        Else
            Wgeshui = (x + 13505) / 0.45 + 3500
        End If
    End If
End Function


点评

答案正确,加3积分  发表于 2012-2-21 16:32

评分

参与人数 1金币 +10 收起 理由
兰色幻想 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-2-17 09:57 | 显示全部楼层
本帖最后由 开心rabbit 于 2012-2-21 12:11 编辑

Function Wgeshui(n, x) '这里x即是开关
    If x = 1 Then             '由工资算个税的代码
        If n<= 3500 Then
              Wgeshui = 0
        ElseIf n<= 5000 Then
              Wgeshui = (n - 3500) * 0.03
        ElseIf n<= 8000 Then
              Wgeshui = (n - 3500) * 0.1 - 105
        ElseIf n<= 12500 Then
              Wgeshui = (n - 3500) * 0.2 - 555
        ElseIf n<= 38500 Then
              Wgeshui = (n - 3500) * 0.25 - 1005
        ElseIf n<= 58500 Then
              Wgeshui = (n - 3500) * 0.3 - 2755
        ElseIf n<= 83500 Then
              Wgeshui = (n - 3500) * 0.35 - 5505
        ElseIf n> 83500 Then
              Wgeshui = (n - 3500) * 0.45 - 13505
        End If
    ElseIf x = 2 Then          '由个税倒推工资的代码
        If n= 0 Then
              Wgeshui = "工资额免征税"
        ElseIf n<= 45 Then
              Wgeshui = (n + 0) / 0.03 + 3500
        ElseIf n<= 345 Then
              Wgeshui = (n + 105) / 0.1 + 3500
        ElseIf n<= 1245 Then
              Wgeshui = (n + 555) / 0.2 + 3500
        ElseIf n<= 7745 Then
              Wgeshui = (n + 1005) / 0.25 + 3500
        ElseIf n<= 13745 Then
              Wgeshui = (n + 2755) / 0.3 + 3500
        ElseIf n<= 22495 Then
              Wgeshui = (n + 5505) / 0.35 + 3500
        ElseIf n> 22495 Then
              Wgeshui = (n + 13505) / 0.45 + 3500
        End If
   End If
End Function

点评

答案正确,加3积分  发表于 2012-2-21 16:32

评分

参与人数 1金币 +10 收起 理由
兰色幻想 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-2-17 10:51 | 显示全部楼层
Function Wgeshui(n, x)
If x = 1 Then
Dim I, S As Long
Dim M, J As Integer
I = n - 3500
Select Case I
Case Is <= 1500
  M = 0.03
  J = 0
Case Is <= 4500
  M = 0.1
  J = 105
Case Is <= 9000
  M = 0.2
  J = 555
Case Is <= 35000
  M = 0.25
  J = 1005
Case Is <= 55000
  M = 0.3
  J = 2755
Case Is <= 80000
  M = 0.35
  J = 5505
Case Is > 80000
  M = 0.45
  J = 13505
End Select
If I < 0 Then
MsgBox "你的工资还达不到起征点"
Else
Wgeshui = I * M - J
End If
ElseIf x = 2 Then
If n < 1500 * 0.03 Then
  S = n / 0.03 + 3500
ElseIf n < 4500 * 0.1 - 105 Then
  S = (n + 105) / 0.1 + 3500
ElseIf n < 9000 * 0.2 - 555 Then
  S = (n + 555) / 0.2 + 3500
ElseIf n < 35000 * 0.25 - 1005 Then
  S = (n + 1005) / 0.25 + 3500
ElseIf n < 55000 * 0.3 - 2755 Then
  S = (n + 2755) / 0.3 + 3500
ElseIf n < 80000 * 0.35 - 5505 Then
  S = (n + 5505) / 0.35 + 3500
Else
  S = (n + 13505) / 0.45 + 3500
End If
If n = 0 Then
MsgBox "你的工资等于或小于起征点"
Else
Wgeshui = S
End If
End If
End Function

点评

答案正确,加3积分  发表于 2012-2-21 16:53

评分

参与人数 1金币 +10 收起 理由
兰色幻想 + 10 赞一个!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 00:41 , Processed in 0.471748 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表