Excel精英培训网

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

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

  [复制链接]
发表于 2012-2-20 08:11 | 显示全部楼层
本帖最后由 wenchduan 于 2012-2-21 11:25 编辑
  1. Function Wgeshui(n, x)
  2. Dim yl
  3. If x = 1 Then
  4. yl = n - 3500
  5. Select Case yl
  6. Case Is <= 0
  7. Wgeshui = 0
  8. Case Is < 1500
  9. Wgeshui = yl * 3 / 100
  10. Case Is < 4500
  11. Wgeshui = yl * 10 / 100 - 105
  12. Case Is < 9000
  13. weshui = yl * 20 / 100 - 555
  14. Case Is < 35000
  15. Wgeshui = yl * 25 / 100 - 1005
  16. Case Is < 55000
  17. Wgeshui = yl * 30 / 100 - 2755
  18. Case Is < 80000
  19. Wgeshui = yl * 35 / 100 - 5505
  20. Case Is >= 80000
  21. Wgeshui = yl * 45 / 100 - 13505
  22. End Select
  23. ElseIf x = 2 Then
  24. Select Case n
  25. Case Is >= 22495
  26. Wgeshui = (n + 13505) * 100 / 45 + 3500
  27. Case Is < 13745
  28. Wgeshui = (n + 5505) * 100 / 35 + 3500
  29. Case Is < 7845
  30. Wgeshui = (n + 2755) * 100 / 30 + 3500
  31. Case Is < 1245
  32. weshui = (n + 1005) * 100 / 25 + 3500
  33. Case Is > 450
  34. Wgeshui = (n + 555) * 100 / 20 + 3500
  35. Case Is < 345
  36. Wgeshui = (n + 105) * 100 / 10 + 3500
  37. Case Is <= 45
  38. Wgeshui = n * 100 / 3 + 3500
  39. Case Is < 0
  40. Wgeshui = "工资低于3500"
  41. End Select
  42. End If
  43. End Function
复制代码

点评

正算没问题,反算错了  发表于 2012-2-21 18:15
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2012-2-20 13:34 | 显示全部楼层
Function WGeShui(N, X)
If X = 1 Then
Select Case N - 3500
Case Is <= 0
WGeShui = 0
Case Is <= 1500
WGeShui = (N - 3500) * 0.03
Case Is <= 4500
WGeShui = (N - 3500) * 0.1 - 105
Case Is <= 9000
WGeShui = (N - 3500) * 0.2 - 555
Case Is <= 35000
WGeShui = (N - 3500) * 0.25 - 1005
Case Is <= 55000
WGeShui = (N - 3500) * 0.3 - 2755
Case Is <= 80000
WGeShui = (N - 3500) * 0.35 - 5505
Case Else
WGeShui = (N - 3500) * 0.45 - 13505
End Select
ElseIf X = 2 Then
Select Case N
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 Else
WGeShui = (N + 13505) / 0.45 + 3500
End Select
End If
End Function

点评

答案正确,奖励3积分  发表于 2012-2-21 18:24

评分

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

查看全部评分

回复

使用道具 举报

发表于 2012-2-20 13:39 | 显示全部楼层
  1. Function geshui(a!, x As Byte)
  2.     Dim b!, w
  3.     If x = 1 Then
  4.         b = a - 3500
  5.         Select Case b
  6.         Case Is <= 0
  7.             w = 0
  8.         Case Is <= 1500
  9.             w = b * 0.03
  10.         Case Is <= 4500
  11.             w = b * 0.1 - 105
  12.         Case Is <= 9000
  13.             w = b * 0.2 - 555
  14.         Case Is <= 35000
  15.             w = b * 0.25 - 1005
  16.         Case Is <= 55000
  17.             w = b * 0.3 - 2755
  18.         Case Is <= 80000
  19.             w = b * 0.35 - 5505
  20.         Case Else
  21.             w = b * 0.45 - 13505
  22.         End Select
  23.     ElseIf x = 2 Then
  24.         Select Case a
  25.         Case 0
  26.             w = "<3500"
  27.         Case Is <= 15 * 3
  28.             w = a / 0.03 + 3500
  29.         Case Is <= 45 * 10 - 105
  30.             w = (a + 105) / 0.1 + 3500
  31.         Case Is <= 90 * 20 - 555
  32.             w = (a + 555) / 0.2 + 3500
  33.         Case Is <= 350 * 25 - 1005
  34.             w = (a + 1005) / 0.25 + 3500
  35.         Case Is <= 550 * 30 - 2755
  36.             w = (a + 2755) / 0.3 + 3500
  37.         Case Is <= 800 * 35 - 5505
  38.             w = (a + 5505) / 0.35 + 3500
  39.         Case Else
  40.             w = (a + 13505) / 0.45 + 3500
  41.         End Select
  42.     End If
  43.     If w <> "<3500" Then
  44.         geshui = Format(w, "###.00")
  45.     Else
  46.         geshui = w
  47.     End If
  48. End Function
复制代码

点评

答案正确,奖励3积分  发表于 2012-2-21 18:23

评分

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

查看全部评分

回复

使用道具 举报

发表于 2012-2-20 14:51 | 显示全部楼层
Function WGeShui(rg1 As Range, x)
  If x = 1 Then
  z = rg1 - 3500
    Select Case z
        Case Is < 0
    WGeShui = 0
        Case Is <= 1500
    WGeShui = (rg1 - 3500) * 0.03 - 0
        Case Is <= 4500
    WGeShui = (rg1 - 3500) * 0.1 - 105
        Case Is <= 9000
    WGeShui = (rg1 - 3500) * 0.2 - 555
        Case Is <= 35000
    WGeShui = (rg1 - 3500) * 0.25 - 1005
        Case Is <= 55000
    WGeShui = (rg1 - 3500) * 0.3 - 2755
        Case Is <= 80000
    WGeShui = (rg1 - 3500) * 0.35 - 5505
        Case Is > 80000
    WGeShui = (rg1 - 3500) * 0.45 - 13505
    End Select
  Else
    Select Case rg1
        Case 0
    WGeShui = "不足3500元"
        Case Is > 22495
    WGeShui = (rg1 + 13505) / 0.45 + 3500
        Case 13745 To 22495
    WGeShui = (rg1 + 5505) / 0.35 + 3500
        Case 7745 To 13745
    WGeShui = (rg1 + 2755) / 0.3 + 3500
        Case 1245 To 7745
    WGeShui = (rg1 + 1005) / 0.25 + 3500
        Case 345 To 1245
    WGeShui = (rg1 + 555) / 0.2 + 3500
        Case 45 To 345
    WGeShui = (rg1 + 105) / 0.1 + 3500
        Case 0 To 45
    WGeShui = rg1 / 0.03 + 3500
   
    End Select
  End If
   
End Function

点评

答案正确,奖励3积分  发表于 2012-2-21 18:23

评分

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

查看全部评分

回复

使用道具 举报

发表于 2012-2-20 15:23 | 显示全部楼层
反算按练习提示有点问题,先交语句
Function Wgeshui(rg As Range, x As Byte)
    If x = 1 Then
        Select Case rg.Value - 3500
            Case Is < 1500
                Wgeshui = (rg.Value - 3500) * 0.03
            Case Is <= 4500
                Wgeshui = (rg.Value - 3500) * 0.1 - 105
            Case Is <= 9000
                Wgeshui = (rg.Value - 3500) * 0.2 - 555
            Case Is <= 35000
                Wgeshui = (rg.Value - 3500) * 0.25 - 1005
            Case Is <= 55000
                Wgeshui = (rg.Value - 3500) * 0.3 - 2755
            Case Is <= 80000
                Wgeshui = (rg.Value - 3500) * 0.35 - 5505
            Case Else
                Wgeshui = (rg.Value - 3500) * 0.45 - 13505
        End Select
    ElseIf x = 2 Then
        Select Case rg.Value
            Case Is = 0
                Wgeshui = 3500
            Case Is <= 105
                Wgeshui = (rg.Value + 105) / 0.1 + 3500
            Case Is <= 555
                Wgeshui = (rg.Value + 555) / 0.2 + 3500
            Case Is <= 1005
                Wgeshui = (rg.Value + 1005) / 0.25 + 3500
            Case Is <= 2755
                Wgeshui = (rg.Value + 2755) / 0.3 + 3500
            Case Is <= 5505
                Wgeshui = (rg.Value + 5505) / 0.35 + 3500
            Case Else
                Wgeshui = (rg.Value + 13505) / 0.45 + 3500
        End Select
    End If
End Function

点评

答案正确,奖励3积分  发表于 2012-2-21 18:22

评分

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

查看全部评分

回复

使用道具 举报

发表于 2012-2-20 20:47 | 显示全部楼层
Function Wgeshui(n As Range, 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 = (gz - 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 <= 1500 * 0.03 Then
         Wgeshui = n / 0.03 + 3500
       ElseIf n <= 4500 * 0.1 Then
         Wgeshui = (n + 105) / 0.1 + 3500
       ElseIf n <= 9000 * 0.2 Then
         Wgeshui = (n + 555) / 0.2 + 3500
       ElseIf n <= 35000 * 0.25 Then
         Wgeshui = (n + 1005) / 0.25 + 3500
       ElseIf n <= 55000 * 0.3 Then
         Wgeshui = (n + 2755) / 0.3 + 3500
       ElseIf n <= 80000 * 0.35 Then
         Wgeshui = (n + 5505) / 0.35 + 3500
       ElseIf n > 80000 * 0.45 Then
         Wgeshui = (n + 13505) / 0.45 + 3500
       End If
     End If
End Function

点评

答案正确奖励3积分  发表于 2012-2-21 18:18
回复

使用道具 举报

发表于 2012-2-21 00:10 | 显示全部楼层
老师  您好 不好意思  我现在重新跟帖了 因为之前没有考虑好工资在3500以下的情况
您看一下这个代码是否正确
Function Wgeshui(n, x)    '这里x即是开关
                  If x = 1 Then
                        If n - 3500 <= 1500 Then
                Wgeshui = 0
            ElseIf n - 3500 <= 1500 Then
                            Wgeshui = (n - 3500) * 0.03 - 0
                        ElseIf n - 3500 <= 4500 Then
                            Wgeshui = (n - 3500) * 0.1 - 105
                        ElseIf n - 3500 <= 9000 Then
                            Wgeshui = (n - 3500) * 0.2 - 555
                        ElseIf n - 3500 <= 35000 Then
                            Wgeshui = (n - 3500) * 0.25 - 1005
                        ElseIf n - 3500 <= 55000 Then
                            Wgeshui = (n - 3500) * 0.3 - 2755
                        ElseIf n - 3500 <= 80000 Then
                            Wgeshui = (n - 3500) * 0.35 - 5505
                        ElseIf n - 3500 > 80000 Then
                            Wgeshui = (n - 3500) * 0.45 - 13505
                        End If
                  
                  ElseIf x = 2 Then
                     If n <= 45 Then
                        Wgeshui = (n) / 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

点评

3520时结果为0了  发表于 2012-2-21 18:17
回复

使用道具 举报

发表于 2012-2-21 10:12 | 显示全部楼层
游客,如果您要查看本帖隐藏内容请回复

点评

答案正确,奖励3积分  发表于 2012-2-21 18:18

评分

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

查看全部评分

回复

使用道具 举报

发表于 2012-2-21 18:29 | 显示全部楼层
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 = "不超过3500元"
        ElseIf gz > 0 And gz <= 105 Then
            If (105 - gz) < (105 / 2) Then
                WGeShui = (gz + 105) / 0.1 + 3500
            Else
                WGeShui = (gz + 0) / 0.03 + 3500
            End If
        ElseIf gz > 105 And gz <= 555 Then
            If (555 - gz) < (555 / 2) Then
                WGeShui = (gz + 555) / 0.2 + 3500
            Else
                WGeShui = (gz + 105) / 0.1 + 3500
            End If
        ElseIf gz > 555 And gz <= 1005 Then
            If (1005 - gz) < (1005 / 2) Then
                WGeShui = (gz + 1005) / 0.25 + 3500
            Else
                WGeShui = (gz + 555) / 0.2 + 3500
            End If
        ElseIf gz > 1005 And gz <= 2755 Then
            If (2755 - gz) < (2755 / 2) Then
                WGeShui = (gz + 2755) / 0.3 + 3500
            Else
                WGeShui = (gz + 1005) / 0.25 + 3500
            End If
        ElseIf gz > 2755 And gz <= 5505 Then
            If (5505 - gz) < (5505 / 2) Then
                WGeShui = (gz + 555) / 0.35 + 3500
            Else
                WGeShui = (gz + 2755) / 0.3 + 3500
            End If
        ElseIf gz > 5505 Then
            WGeShui = (gz + 13505) / 0.45 + 3500
        End If
    End If
End Function

这回经测试一切正确,兰版辛苦了。
D05:vbamaster

点评

奖励3积分  发表于 2012-2-21 18:35

评分

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

查看全部评分

回复

使用道具 举报

发表于 2012-2-21 19:04 | 显示全部楼层
本帖最后由 ykymj 于 2012-2-21 19:07 编辑
ykymj 发表于 2012-2-19 13:26
Function wgeshui(n As Range, x As Range)
If x = 1 Then
  If n - 3500 < 0 Then


校长,我再次放到模块里,wgeshui()函数可以出结果的。怪了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 06:59 , Processed in 0.300789 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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