Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!

[通知] 统计VBA学习小组正式组第六课(第七讲)的积分帖之作业上交贴(第8周)

  [复制链接]
发表于 2012-2-16 13:49 | 显示全部楼层
第1题

  1. Sub 单元格填充()
  2.     With
  3. Sheets("sheet3")
  4.         .Range("A1") =
  5. 100
  6.         .Range("A3") =
  7. 900
  8.         .Range("A5") =
  9. 100
  10.         .Range("A8") =
  11. 4500
  12.     End With
  13. End Sub
复制代码

第2题

  1. Function geshui(gz As Range)
  2.     Select Case gz.Value -
  3. 3500
  4.         Case Is <
  5. 1500
  6.             
  7. geshui = (gz.Value - 3500) * 0.03
  8.         
  9. Case Is <=
  10. 4500
  11.             
  12. geshui = (gz.Value - 3500) * 0.1 -
  13. 105
  14.         Case Is <=
  15. 9000
  16.             
  17. geshui = (gz.Value - 3500) * 0.2 -
  18. 555
  19.         Case Is <=
  20. 35000
  21.             
  22. geshui = (gz.Value - 3500) * 0.25 -
  23. 1005
  24.         Case Is <=
  25. 55000
  26.             
  27. geshui = (gz.Value - 3500) * 0.3 -
  28. 2755
  29.         Case Is <=
  30. 80000
  31.             
  32. geshui = (gz.Value - 3500) * 0.35 -
  33. 5505
  34.         Case
  35. Else
  36.             
  37. geshui = (gz.Value - 3500) * 0.45 - 13505
  38.     End
  39. Select
  40. End Function
复制代码


评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确,very good~

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2012-2-16 13:52 | 显示全部楼层
第一题:
Sub 单元格填充()
With Sheets("sheet3")
    .Range("A1") = 100
    .Range("A3") = 900
    .Range("A5") = 100
    .Range("A8") = 4500
    End With
End Sub
第二题:
Function Gehui(rg As Range)
    If rg - 3500 <= 1500 Then
        Gehui = (rg - 3500) * 0.03
    ElseIf rg - 3500 <= 4500 Then
        Gehui = (rg - 3500) * 0.1 - 105
    ElseIf rg - 3500 <= 9000 Then
        Gehui = (rg - 3500) * 0.2 - 555
    ElseIf rg - 3500 <= 35000 Then
        Gehui = (rg - 3500) * 0.25 - 1005
    ElseIf rg - 3500 <= 55000 Then
        Gehui = (rg - 3500) * 0.3 - 2755
    ElseIf rg - 3500 <= 80000 Then
        Gehui = (rg - 3500) * 0.35 - 5505
    ElseIf rg - 3500 > 80000 Then
        Gehui = (rg - 3500) * 0.45 - 13505
    End If
End Function

点评

工资300时,税为负  发表于 2012-2-20 21:22
回复

使用道具 举报

发表于 2012-2-16 14:08 | 显示全部楼层
C组 sliang28
第一题:
Sub 单元格填充()
with Sheets("sheet3")
    .Range("A1") = 100
    .Range("A3") = 900
    .Range("A5") = 100
    .Range("A8") = 4500
end with
End Sub
第二题:
Function GeShui(gz As Double) As Double

Dim NaShui As Double
Dim ns(10) As Double

NaShui = gz - 3500

ns(1) = 0
ns(2) = NaShui * 0.03 - 0
ns(3) = NaShui * 0.1 - 105
ns(4) = NaShui * 0.2 - 555
ns(5) = NaShui * 0.25 - 1005
ns(6) = NaShui * 0.3 - 2755
ns(7) = NaShui * 0.35 - 5505
ns(8) = NaShui * 0.45 - 13505

GeShui = WorksheetFunction.Max(ns(1), ns(2), ns(3), ns(4), ns(5), ns(6), ns(7), ns(8))


End Function

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确,very good~

查看全部评分

回复

使用道具 举报

发表于 2012-2-16 14:36 | 显示全部楼层
本帖最后由 禾火亦 于 2012-2-16 14:37 编辑

C07 禾火亦
  1. Sub 单元格填充1()
  2.     With Sheets("sheet3")
  3.         .Range("a1") = 100
  4.         .Range("a3") = 900
  5.         .Range("a5") = 100
  6.         .Range("a8") = 4500
  7.     End With
  8. End Sub
复制代码
  1. Function geshui(gz)
  2.     Dim k As Long
  3.     k = gz - 3500
  4.         If k < 0 Then
  5.             geshui = 0
  6.         If k <= 1500 Then
  7.             geshui = k * 0.03
  8.         ElseIf k <= 4500 Then
  9.             geshui = k * 0.1 - 105
  10.         ElseIf k <= 9000 Then
  11.             geshui = k * 0.2 - 555
  12.         ElseIf k <= 35000 Then
  13.             geshui = k * 0.25 - 1005
  14.         ElseIf k <= 55000 Then
  15.             geshui = k * 0.3 - 2755
  16.         ElseIf k <= 80000 Then
  17.             geshui = k * 0.35 - 5505
  18.         ElseIf k > 80000 Then
  19.             geshui = k * 0.45 - 13505
  20.     End If
  21. End Function
复制代码

点评

秋,你没测试么,代码明显会出错的,因为你第二个怎么用了IF呢?  发表于 2012-2-20 21:24
回复

使用道具 举报

发表于 2012-2-16 14:42 | 显示全部楼层
B12:汉娜
一、
Sub 单元格填充()
With Sheets("sheet3")
    .Range("a1") = 100
    .Range("a3") = 900
    .Range("a5") = 100
    .Range("a8") = 4500
End With
End Sub
二、
Function geshui(gz As Range)
Const A As Integer = 3500
    Select Case (gz - A)
        Case Is <= 1500
            geshui = (gz - A) * 0.03
        Case Is <= 4500
            geshui = (gz - A) * 0.1 - 105
        Case Is <= 9000
            geshui = (gz - A) * 0.2 - 555
        Case Is <= 35000
            geshui = (gz - A) * 0.25 - 1005
        Case Is <= 55000
            geshui = (gz - A) * 0.3 - 2755
        Case Is <= 80000
            geshui = (gz - A) * 0.35 - 5505
        Case Else
            geshui = (gz - A) * 0.45 - 13505
    End Select
End Function

点评

结果不正确,工资为300时税成了负数  发表于 2012-2-20 21:25
回复

使用道具 举报

发表于 2012-2-16 14:26 | 显示全部楼层
D13:tytytty
1
  1. Sub test()
  2. With Sheets("sheet3")
  3. .Range("A1") = 100
  4. .Range("A3") = 900
  5. .Range("A5") = 100
  6. .Range("A8") = 4500
  7. End With
  8. 2  
  9. (1)[code]Function Geshui(gz As Long)
  10.     If (gz - 3500) <= 0 Then
  11.         Geshui = (gz - 3500) * 0 - 0
  12.     ElseIf (gz - 3500) <= 1500 Then
  13.         Geshui = (gz - 3500) * 0.03 - 0
  14.     ElseIf (gz - 3500) <= 4500 Then
  15.         Geshui = (gz - 3500) * 0.1 - 105
  16.     ElseIf (gz - 3500) <= 9000 Then
  17.         Geshui = (gz - 3500) * 0.2 - 555
  18.     ElseIf (gz - 3500) <= 35000 Then
  19.         Geshui = (gz - 3500) * 0.25 - 1055
  20.     ElseIf (gz - 3500) <= 55000 Then
  21.         Geshui = (gz - 3500) * 0.3 - 2755
  22.     ElseIf (gz - 3500) <= 80000 Then
  23.         Geshui = (gz - 3500) * 0.35 - 5505
  24.     ElseIf (gz - 3500) > 80000 Then
  25.         Geshui = (gz - 3500) * 0.45 - 13505
  26.     End If
  27. End Function
复制代码
(2)
  1. Function Geshuis(gz As Variant)
  2.     Select Case (gz - 3500)
  3.     Case 0 To 1500
  4.          Geshuis = (gz - 3500) * 0.03 - 0
  5.     Case 1501 To 4500
  6.        Geshuis = (gz - 3500) * 0.1 - 105
  7.         Case 4501 To 9000
  8.         Geshuis = (gz - 3500) * 0.2 - 555
  9.     Case 9001 To 35000
  10.         Geshuis = (gz - 3500) * 0.25 - 1055
  11.     Case 35001 To 55000
  12.         Geshuis = (gz - 3500) * 0.3 - 2755
  13.     Case 55001 To 8000
  14.         Geshuis = (gz - 3500) * 0.35 - 5505
  15.     Case Else
  16.         Geshuis = (gz - 3500) * 0.45 - 13505
  17.     End Select
  18. End Function
复制代码
End Sub
[/code]

点评

工资300时税成了负数  发表于 2012-2-20 21:23
回复

使用道具 举报

发表于 2012-2-16 14:50 | 显示全部楼层
第一题:
Sub 单元格填充()
With Sheets("sheet3")
    .Range("A1") = 100
    .Range("A3") = 900
    .Range("A5") = 100
    .Range("A8") = 4500
End With
End Sub
第二题
Public Function GeShui(gz)
Dim X As Integer
Dim M, N As Integer
X = gz - 3500
Select Case X
Case Is <= 1500
  M = 0.03
  N = 0
Case Is <= 4500
  M = 0.1
  N = 105
Case Is <= 9000
  M = 0.2
  N = 555
Case Is <= 35000
  M = 0.25
  N = 1005
Case Is <= 55000
  M = 0.3
  N = 2755
Case Is <= 80000
  M = 0.35
  N = 5505
Case Is > 80000
  M = 0.45
  N = 13505
End Select
If X < 0 Then
MsgBox "你的工资还达不到起征点"
Else
GeShui = X * M - N
End If
End Function

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确,very good~

查看全部评分

回复

使用道具 举报

发表于 2012-2-16 15:16 | 显示全部楼层
不好意思。上面一楼变量类型设置有误,又不能编辑,现改正如下:

第一题:
Sub 单元格填充()
With Sheets("sheet3")
    .Range("A1") = 100
    .Range("A3") = 900
    .Range("A5") = 100
    .Range("A8") = 4500
End With
End Sub
第二题
Public Function GeShui(gz)
Dim X As Long
Dim M, N
X = gz - 3500
Select Case X
Case Is <= 1500
  M = 0.03
  N = 0
Case Is <= 4500
  M = 0.1
  N = 105
Case Is <= 9000
  M = 0.2
  N = 555
Case Is <= 35000
  M = 0.25
  N = 1005
Case Is <= 55000
  M = 0.3
  N = 2755
Case Is <= 80000
  M = 0.35
  N = 5505
Case Is > 80000
  M = 0.45
  N = 13505
End Select
If X < 0 Then
MsgBox "你的工资还达不到起征点"
Else
GeShui = X * M - N
End If
End Function

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确,very good~

查看全部评分

回复

使用道具 举报

发表于 2012-2-16 15:18 | 显示全部楼层
第一题:
Sub 单元格填充()
    With Sheets("sheet3")
           .Range("A1") = 100
           .Range("A3") = 900
           .Range("A5") = 100
           .Range("A8") = 4500
    End With
End Sub

第二题:
Function GeShui(gz)   ‘注gz为引用单元格中的工资数额
   If gz <= 5000 Then
      GeShui = (gz - 3500) * 0.03
   ElseIf gz > 5000 And gz <= 8000 Then
      GeShui = (gz - 3500) * 0.1 - 105
   ElseIf gz > 8000 And gz <= 12500 Then
      GeShui = (gz - 3500) * 0.2 - 555
   ElseIf gz > 12500 And gz <= 38500 Then
      GeShui = (gz - 3500) * 0.25 - 1005
   ElseIf gz > 38500 And gz <= 58500 Then
      GeShui = (gz - 3500) * 0.3 - 2755
   ElseIf gz > 58500 And gz <= 835000 Then
      GeShui = (gz - 3500) * 0.35 - 5505
  ElseIf gz > 83500 Then
      GeShui = (gz - 3500) * 0.4 - 13505
  End If

End Function


点评

工资等300时,税为负  发表于 2012-2-20 21:26
回复

使用道具 举报

发表于 2012-2-16 15:45 | 显示全部楼层
1答:
Sub 填充()
    With Sheets("sheet3")
        .Range("a1") = 100
        .Range("a3") = 900
        .Range("a5") = 100
        .Range("a8") = 4500
    End With
End Sub


2答:
Function geshui(gz As Range)
    If gz <= 3500 Then
        geshui = 0
   ElseIf (gz - 3500) <= 1500 Then
        geshui = (gz - 3500) * 0.03 - 0
    ElseIf (gz - 3500) <= 4500 Then
        geshui = (gz - 3500) * 0.1 - 105
    ElseIf (gz - 3500) <= 9000 Then
        geshui = (gz - 3500) * 0.2 - 555
    ElseIf (gz - 3500) <= 35000 Then
        geshui = (gz - 3500) * 0.25 - 1005
    ElseIf (gz - 3500) <= 55000 Then
        geshui = (gz - 3500) * 0.3 - 2755
    ElseIf (gz - 3500) <= 80000 Then
        geshui = (gz - 3500) * 0.35 - 5505
    ElseIf (gz - 3500) > 80000 Then
        geshui = (gz - 3500) * 0.45 - 13505
    End If
End Function

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确,very good~

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 05:36 , Processed in 0.362298 second(s), 20 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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