bynbyn 发表于 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>6870Then//超过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

jiahua1010 发表于 2012-2-16 13:55

Function Wgeshui(n, x)
    If x = 1 Then
      yj = n - 3500
      Select Case yj
         Case Is < -3500
                MsgBox ("输入错误")
                GoTo W_error:
            Case Is <= 0
                Wgeshui = 0
            Case Is <= 1500
                Wgeshui = yj * 0.03 - 0
            Case Is <= 4500
                Wgeshui = yj * 0.1 - 105
            Case Is <= 9000
                Wgeshui = yj * 0.2 - 555
            Case Is <= 35000
                Wgeshui = yj * 0.25 - 1005
            Case Is <= 55000
                Wgeshui = yj * 0.3 - 2755
            Case Is <= 80000
                Wgeshui = yj * 0.35 - 5505
            Case Else
               Wgeshui = yj * 0.45 - 13505
         End Select
    ElseIf x = 2 Then
      Select Case n
            Case Is < 0
                MsgBox ("输入错误")
                GoTo W_error:
            Case Is = 0
                MsgBox ("未缴税,工资<3500,具体数额未知")
                GoTo W_error:
            Case Is <= 45
                yj = (n + 0) / 0.03
            Case Is <= 345
                yj = (n + 105) / 0.1
            Case Is <= 1245
                yj = (n + 555) / 0.2
            Case Is <= 7745
                yj = (n + 1005) / 0.25
            Case Is <= 13745
                yj = (n + 2755) / 0.3
            Case Is <= 22495
                yj = (n + 5505) / 0.35
            Case Else
                yj = (n + 13505) / 0.45
      End Select
      Wgeshui = yj + 3500
    End If
W_error:
    Exit Function
End Function

liuho1 发表于 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

Tristone 发表于 2012-2-16 15:47

本帖最后由 Tristone 于 2012-2-21 00:20 编辑




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

linch92413 发表于 2012-2-16 17:20

E05:linch92413交作业

vbamaster 发表于 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

happym8888 发表于 2012-2-17 00:45

本帖最后由 happym8888 于 2012-2-20 23:33 编辑

**** Hidden Message *****

sunjing-zxl 发表于 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


开心rabbit 发表于 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

从从容容 发表于 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
页: 1 [2] 3 4 5 6 7
查看完整版本: 第六讲练习题:正反计算个税和工资(奖励积分3分)