12月19/20日 财务会计玩转Excel 300集Office 2010微视频教程
12月22/23日 7天Excel脱白 高效办公必会的Office实战技巧
11月28日 Excel图表之美 网易云课堂-Excel数据透视表应用大全
Excel数据处理与分析实战技巧第1季
查看: 210|回复: 59

零基础12期-第八课作业贴

[复制链接]
发表于 2017-12-6 20:13:09 | 显示全部楼层 |阅读模式
本帖最后由 开心妙妙 于 2017-12-11 18:30 编辑

交作业之前先看群文件作业提交说明

第三题可以到二十楼去参看思路
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
第一题

  1. Sub 水浒()
  2.     Dim i As Long, j As Long, 不及格 As Long, 优秀 As Long, 通过 As Long
  3.     Dim area As Range
  4.     Set area = Range("a1").CurrentRegion
  5.     Debug.Print area.Rows.Count, area.Columns.Count
  6.     For i = 2 To area.Rows.Count
  7.         优秀 = 0
  8.         通过 = 0
  9.         不及格 = 0
  10.         For j = 4 To (area.Columns.Count - 2)
  11.         If Cells(i, j) >= 85 Then
  12.             优秀 = 优秀 + 1
  13.         ElseIf Cells(i, j) > 59 Then
  14.             通过 = 通过 + 1
  15.         Else
  16.             不及格 = 不及格 + 1
  17.         End If
  18.             If 优秀 >= 6 Then
  19.                 Cells(i, "k") = "奖学金"
  20.             ElseIf 通过 > 6 Then
  21.                 Cells(i, "k") = "通过"
  22.             ElseIf 不及格 >= 3 Then
  23.                 Cells(i, "k") = "勒令退学"
  24.             ElseIf 不及格 = 2 Then
  25.                 Cells(i, "k") = "留级"
  26.             ElseIf 不及格 = 1 Then
  27.                 Cells(i, "k") = "补考"
  28.             End If
  29.         Next
  30.     Next
  31. End Sub
复制代码




第二题:
  1. Sub 不合格的人()
  2.     Dim i As Long, j As Long, k As Long

  3.     For j = 4 To 8
  4.         k = 2
  5.         For i = 3 To 152
  6.             If Cells(i, j) < 60 Then
  7.             k = k + 1
  8.             Cells(k, j * 3 - 1) = Cells(i, "a")
  9.             Cells(k, j * 3) = Cells(i, "c")
  10.             Cells(k, j * 3 + 1) = Cells(i, j)
  11.             
  12.             End If
  13.         Next
  14.     Next
  15.                
  16. End Sub
复制代码




第三题

  1. Sub 吃太饱公司发奖金()
  2.     Dim i As Long, 毛利 As Double, 奖金 As Double, 奖金和 As Double
  3.     For i = 2 To 11
  4.     奖金和 = 0
  5.     毛利 = Cells(i, "b")
  6.     Do
  7.         If 毛利 > 100 Then
  8.             奖金 = (毛利 - 100) * 0.8
  9.             毛利 = 100
  10.         ElseIf 毛利 > 60 Then
  11.             奖金 = (毛利 - 60) * 0.5
  12.             毛利 = 60
  13.         ElseIf 毛利 > 40 Then
  14.             奖金 = (毛利 - 40) * 0.3
  15.             毛利 = 40
  16.         ElseIf 毛利 > 20 Then
  17.             奖金 = (毛利 - 20) * 0.2
  18.             毛利 = 20
  19.         ElseIf 毛利 > 10 Then
  20.             奖金 = (毛利 - 10) * 0.1
  21.             毛利 = 10
  22.         Else
  23.             奖金 = 毛利 * 0.05
  24.             毛利 = 0
  25.         End If
  26.         奖金和 = 奖金和 + 奖金
  27.         
  28.     Loop Until 毛利 = 0 And 奖金 < 10
  29.    
  30.     Cells(i, "c") = 奖金和 * 10000
  31.    
  32.     Next
  33.            
  34. End Sub
复制代码

点评

第三题:思路赞  发表于 3 天前
第二题:正确  发表于 3 天前
第一题:结果不正确,判断结构不正确.0132学号,不能显示结果,是因为有三科85分以上,没有计入及格科数,  发表于 3 天前

评分

参与人数 1登攀 +1 收起 理由
开心妙妙 + 1 为第三题点赞

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 7 天前 | 显示全部楼层
本帖最后由 huwenjun727 于 2017-12-7 22:10 编辑

  1. '丫头不乖的作业1
  2. Sub 水浒考试成绩处理办法()
  3. Dim score不及格 As Long, score奖学金 As Long, i As Long, j As Long
  4.     score不及格 = 0
  5.     score奖学金 = 0
  6.     i = 2 '行
  7.     j = 4 '列
  8.         For i = 2 To Range("a1").CurrentRegion.Rows.Count '行循环
  9.             For j = 4 To Range("a1").CurrentRegion.Columns.Count - 2  '列循环
  10.                 If Cells(i, j) < 60 Then
  11.                     score不及格 = 1 + score不及格
  12.                 ElseIf Cells(i, j) >= 85 Then
  13.                     score奖学金 = 1 + score奖学金
  14.                 End If
  15.                 If score不及格 >= 3 Then
  16.                     Cells(i, Range("a1").CurrentRegion.Columns.Count) = "勒令退学"
  17.                 ElseIf score不及格 = 2 Then
  18.                     Cells(i, Range("a1").CurrentRegion.Columns.Count) = "留级"
  19.                 ElseIf score不及格 = 1 Then
  20.                     Cells(i, Range("a1").CurrentRegion.Columns.Count) = "补考"
  21.                 ElseIf score奖学金 = 6 Then
  22.                     Cells(i, Range("a1").CurrentRegion.Columns.Count) = "奖学金"
  23.                 ElseIf score奖学金 < 6 And score不及格 = 0 Then
  24.                     Cells(i, Range("a1").CurrentRegion.Columns.Count) = "通过"
  25.                 End If
  26.             Next j
  27.             score不及格 = 0
  28.             score奖学金 = 0
  29.         Next i
  30.     End Sub


  31. '作业2
  32. Sub 成绩检测()
  33. Dim i As Long, j As Long, 不及格行 As Long, n As Long, score As Long
  34.     i = 3 '行
  35.     j = 4 '列
  36.     不及格行 = 3 '定位不及格显示第一行
  37.     n = 3 '检测结果显示缩进行
  38.     score = 4 '成绩缩进行
  39.     For j = 4 To Range("a1").CurrentRegion.Columns.Count  '列循环
  40.         For i = 3 To Range("a1").CurrentRegion.Rows.Count '行循环
  41.             If Cells(i, j) < 60 Then
  42.                 Cells(不及格行, Range("a1").CurrentRegion.Columns.Count + n) = Cells(i, 1)
  43.                 Cells(不及格行, Range("a1").CurrentRegion.Columns.Count + n + 1) = Cells(i, 3)
  44.                 Cells(不及格行, Range("a1").CurrentRegion.Columns.Count + n + 2) = Cells(i, score)
  45.                 不及格行 = 不及格行 + 1
  46.             Else
  47.                 不及格行 = 不及格行
  48.             End If
  49.         Next i
  50.               不及格行 = 3
  51.                n = n + 3 '检测结果显示缩进行,需要每次行循环结束后往后三位
  52.                score = score + 1 '成绩缩进行,需要每次行循环结束后往后一位显示下一次的成绩
  53.     Next j
  54.             
  55.     End Sub


  56. '作业3
  57. Sub 奖金额度()
  58. Dim i As Long, 阶梯1 As Long, 阶梯2 As Long, 阶梯3 As Long, 阶梯4 As Long, 阶梯5 As Long
  59.     阶梯1 = 5000   '10万以内,可以享受 5 的奖金分成比例
  60.     阶梯2 = 15000 '高于10万 到20万之间部分享受10的比例分成
  61.     阶梯3 = 55000 '高于20万到40万部分按 20 比例进行分成
  62.     阶梯4 = 115000  '40 - 60 万之间:高于40万部分按30比例分成
  63.     阶梯5 = 315000 '60-100 万 :高于60万部分 按50 分成
  64. For i = 2 To Range("a1").CurrentRegion.Rows.Count '行循环
  65.         If Cells(i, 2) >= 100 Then
  66.          Cells(i, 3) = 阶梯5 + (Cells(i, 2) - 100) * 8000
  67.        ElseIf Cells(i, 2) >= 60 And Cells(i, 2) < 100 Then
  68.          Cells(i, 3) = 阶梯4 + (Cells(i, 2) - 60) * 5000
  69.         ElseIf Cells(i, 2) >= 40 And Cells(i, 2) < 60 Then
  70.         Cells(i, 3) = 阶梯3 + (Cells(i, 2) - 40) * 3000
  71.         ElseIf Cells(i, 2) >= 20 And Cells(i, 2) < 40 Then
  72.         Cells(i, 3) = 阶梯2 + (Cells(i, 2) - 20) * 2000
  73.         ElseIf Cells(i, 2) >= 10 And Cells(i, 2) < 20 Then
  74.         Cells(i, 3) = 阶梯1 + (Cells(i, 2) - 10) * 1000
  75.         Else
  76.         Cells(i, 3) = Cells(i, 2) * 500
  77.         End If
  78. Next i
  79.     阶梯1 = 5000
  80.     阶梯2 = 15000
  81.     阶梯3 = 55000
  82.     阶梯4 = 115000
  83.     阶梯5 = 315000
  84. End Sub


复制代码

点评

结果正确,不错  发表于 5 天前
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
  1. 'assignment 1
  2. Sub Shuihuheroes()
  3.     Dim i As Long, j As Long, area As Range, failnum As Long, bflag As Boolean
  4.     Set area = Range("a1").CurrentRegion
  5.     For i = 2 To area.Rows.Count
  6.     bflag = True
  7.         For j = 4 To area.Columns.Count
  8.            If Cells(i, j) < 60 Then
  9.              failnum = failnum + 1
  10.            End If
  11.             If failnum >= 3 Then
  12.                     Cells(i, "k") = "Expelled"
  13.                 ElseIf failnum = 2 Then
  14.                     Cells(i, "k") = "Repeat a year"
  15.                 ElseIf failnum = 1 Then
  16.                     Cells(i, "k") = "Take another exam"
  17.                 ElseIf failnum = 0 Then
  18.                     If Cells(i, j) > 85 Then
  19.                         Cells(i, "k") = "Awad"
  20.                         Else
  21.                         Cells(i, "k") = "Pass"
  22.                     End If
  23.                 End If
  24.             If i = i + 1 Then
  25.                 bflag = False
  26.                 Exit For
  27.             End If
  28.         Next
  29.         If bflag = True Then failnum = 0
  30.     Next
  31. End Sub
复制代码


点评

正确,不错  发表于 5 天前
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
  1. Sub HomeWork1()
  2.     Dim i As Long, j As Long, n As Long, m As Long, area As Range
  3.     Set area = Range("A1").CurrentRegion
  4.     For i = 2 To area.Rows.Count
  5.         m = 0
  6.         n = 0
  7.         For j = 4 To 9
  8.             If Cells(i, j) >= 60 Then n = n + 1
  9.             If Cells(i, j) >= 85 Then m = m + 1
  10.         Next
  11.         If m = 6 Then
  12.             Cells(i, 11) = "奖学金"
  13.         Else
  14.             Select Case n
  15.                 Case 6
  16.                     Cells(i, 11) = "合格"
  17.                 Case 5
  18.                     Cells(i, 11) = "补考"
  19.                 Case 4
  20.                     Cells(i, 11) = "留级"
  21.                 Case Is <= 3
  22.                     Cells(i, 11) = "勒令退学"
  23.             End Select
  24.         End If
  25.     Next
  26. End Sub
  27. Sub HomeWork2()
  28.     Dim i As Long, m As Long, n As Long, j As Long, co As Long, ares As Range
  29.     Set ares = Range("A1").CurrentRegion
  30.     co = 11
  31.         For n = 4 To 8
  32.         m = 3
  33.             For i = 3 To ares.Rows.Count
  34.                 If Cells(i, n) < 60 Then
  35.                     Cells(m, co) = Cells(i, 1)
  36.                     Cells(m, co + 1) = Cells(i, 3)
  37.                     Cells(m, co + 2) = Cells(i, n)
  38.                     m = m + 1
  39.                 End If
  40.             Next
  41.             co = co + 3
  42.         Next
  43. End Sub
  44. Sub HomeWork3()
  45.     Dim i As Long, j As Long, sumV As Double, n As Long, ares As Range
  46.     Set ares = Range("A1").CurrentRegion
  47.         For i = 2 To ares.Rows.Count
  48.             n = 0
  49.             sumV = 0
  50.             If Cells(i, 2) - 10 <= 0 Then Cells(i, 3) = Cells(i, 2) * 5 / 100 * 10000
  51.             If Cells(i, 2) - 10 > 0 Then sumV = sumV + 10 * 5 / 100: n = n + 1
  52.             If Cells(i, 2) - 20 > 0 Then sumV = sumV + 10 * 10 / 100: n = n + 1
  53.             If Cells(i, 2) - 40 > 0 Then sumV = sumV + 20 * 20 / 100: n = n + 1
  54.             If Cells(i, 2) - 60 > 0 Then sumV = sumV + 20 * 30 / 100: n = n + 1
  55.             If Cells(i, 2) - 100 > 0 Then sumV = sumV + 40 * 50 / 100: n = n + 1
  56.             Select Case n
  57.             Case 1
  58.                 Cells(i, 3) = (sumV + (Cells(i, 2) - 10) * 10 / 100) * 10000
  59.             Case 2
  60.                 Cells(i, 3) = (sumV + (Cells(i, 2) - 20) * 20 / 100) * 10000
  61.             Case 3
  62.                 Cells(i, 3) = (sumV + (Cells(i, 2) - 40) * 30 / 100) * 10000
  63.             Case 4
  64.                 Cells(i, 3) = (sumV + (Cells(i, 2) - 60) * 50 / 100) * 10000
  65.             Case 5
  66.                 Cells(i, 3) = (sumV + (Cells(i, 2) - 100) * 80 / 100) * 10000
  67.             End Select
  68.         Next
  69. End Sub
复制代码

点评

结果正确,不错  发表于 5 天前
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
本帖最后由 alexzhang921 于 2017-12-8 21:30 编辑
  1. Option Explicit

  2. Sub lesson0801()
  3.     Dim area As Range, i As Long, j As Long, K As Long
  4.    
  5.     Set area = Range("a1").CurrentRegion
  6.     For i = 2 To area.Rows.Count
  7.         For j = 4 To 9
  8.             If Cells(i, j) < 60 Then
  9.             Range("k" & i) = Range("k" & i) + 1
  10.             End If
  11.          Next
  12.         
  13.     Next
  14.    
  15.     For i = 2 To area.Rows.Count
  16.         
  17.         If Range("k" & i) >= 3 Then
  18.         Range("k" & i) = "勒令退学"
  19.         
  20.         ElseIf Range("k" & i) = 2 Then
  21.         Range("k" & i) = "留级"
  22.         
  23.         ElseIf Range("k" & i) = 1 Then
  24.         Range("k" & i) = "补考"
  25.         
  26.         ElseIf Range("k" & i) = 0 Then
  27.         Range("k" & i) = "通过"

  28.         End If
  29.             If Range("k" & i) = "通过" Then
  30.                 For K = 4 To 9
  31.                     If Cells(i, K) >= 85 Then
  32.                     Range("k" & i) = "奖学金"
  33.                     Else
  34.                     Range("k" & i) = "通过"
  35.                     End If
  36.                 Next
  37.             End If
  38.    
  39.     Next

  40. End Sub



  41. '==================================================


  42. Sub lesson0802()
  43.     Dim area As Range, i As Long, j1 As Long, j2 As Long, j3 As Long, j4 As Long, j5 As Long
  44.     Set area = [a1].CurrentRegion
  45.     j1 = 3
  46.     'area.Select
  47.     For i = 3 To area.Rows.Count
  48.         If Range("d" & i) < 60 Then
  49.             Range("m" & j1) = Range("d" & i)   '1st
  50.             Range("l" & j1) = Range("c" & i)
  51.             Range("k" & j1) = Range("a" & i)
  52.            
  53.             j1 = j1 + 1
  54.         End If
  55.     Next
  56.    
  57.     j2 = 3
  58.     For i = 3 To area.Rows.Count

  59.         If Range("e" & i) < 60 Then
  60.             Range("p" & j2) = Range("e" & i)   '2nd
  61.             Range("o" & j2) = Range("c" & i)
  62.             Range("n" & j2) = Range("a" & i)
  63.             
  64.             j2 = j2 + 1
  65.         End If
  66.     Next


  67.     j3 = 3
  68.     For i = 3 To area.Rows.Count
  69.         
  70.         If Range("f" & i) < 60 Then
  71.             Range("s" & j3) = Range("f" & i)   '3rd
  72.             Range("r" & j3) = Range("c" & i)
  73.             Range("q" & j3) = Range("a" & i)

  74.             j3 = j3 + 1
  75.         End If
  76.     Next
  77.         
  78.     j4 = 3
  79.     For i = 3 To area.Rows.Count
  80.    
  81.         If Range("g" & i) < 60 Then
  82.             Range("v" & j4) = Range("g" & i)    '4th
  83.             Range("u" & j4) = Range("c" & i)
  84.             Range("t" & j4) = Range("a" & i)

  85.             j4 = j4 + 1
  86.         End If
  87.     Next
  88.    
  89.     j5 = 3
  90.     For i = 3 To area.Rows.Count
  91.    
  92.         If Range("h" & i) < 60 Then
  93.             Range("y" & j5) = Range("h" & i)    '5th
  94.             Range("x" & j5) = Range("c" & i)
  95.             Range("w" & j5) = Range("a" & i)

  96.             j5 = j5 + 1
  97.         End If
  98.     Next
  99.    
  100. End Sub


  101. '=============================================
  102. Sub lesson0803()
  103.     Dim area As Range, i As Long
  104.     Set area = [a1].CurrentRegion
  105.    
  106.     For i = 2 To area.Rows.Count
  107.         If Range("b" & i) < 10 Then
  108.             Range("c" & i) = Range("b" & i) * 0.05 * 10000
  109.             
  110.         ElseIf Range("b" & i) < 20 Then
  111.             Range("c" & i) = 100000 * 0.05 + (Range("b" & i) * 10000 - 100000) * 0.1
  112.         
  113.         ElseIf Range("b" & i) < 40 Then
  114.             Range("c" & i) = 100000 * 0.05 + 100000 * 0.1 + (Range("b" & i) * 10000 - 200000) * 0.2
  115.             
  116.         ElseIf Range("b" & i) < 60 Then
  117.             Range("c" & i) = 100000 * 0.05 + 100000 * 0.1 + 200000 * 0.2 + (Range("b" & i) * 10000 - 400000) * 0.3
  118.         
  119.         ElseIf Range("b" & i) < 100 Then
  120.             Range("c" & i) = 100000 * 0.05 + 100000 * 0.1 + 200000 * 0.2 + 200000 * 0.3 + (Range("b" & i) * 10000 - 600000) * 0.5
  121.             
  122.         ElseIf Range("b" & i) > 100 Then
  123.             Range("c" & i) = 100000 * 0.05 + 100000 * 0.1 + 200000 * 0.2 + 200000 * 0.3 + 400000 * 0.5 + (Range("b" & i) * 10000 - 1000000) * 0.8
  124.         End If
  125.         
  126.     Next
  127.    
  128.    
  129. End Sub


复制代码

点评

结果正确  发表于 5 天前
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
我是民航骄子,我是好学生
  1. Option Explicit

  2. Sub 考试结果()

  3.     'i,j 表示位置
  4.     Dim i As Long, j As Long
  5.     'sum 代表不及格门数
  6.     Dim sum As Long
  7.     'flag_85表示85分以上
  8.     Dim flag_85 As Long
  9.    
  10.    
  11.     For i = 2 To Range("a2").CurrentRegion.Rows.Count
  12.         sum = 0
  13.         flag_85 = 1
  14.         For j = 4 To 9
  15.             If Cells(i, j) < 60 Then sum = sum + 1
  16.             If Cells(i, j) < 85 Then flag_85 = 0
  17.         Next
  18.         
  19.         If flag_85 = 1 Then
  20.             
  21.             Cells(i, 11).Value = "奖学金"
  22.         
  23.         Else
  24.         
  25.             Select Case sum
  26.             Case 0
  27.                 Cells(i, 11).Value = "通过"
  28.             Case 1
  29.                 Cells(i, 11).Value = "补考"
  30.             Case 2
  31.                 Cells(i, 11).Value = "留级"
  32.             Case Else
  33.                 Cells(i, 11).Value = "勒令退学"
  34.             End Select
  35.         
  36.         End If
  37.    
  38.     Next
  39.         

  40. End Sub
复制代码



  1. Option Explicit

  2. Sub 五个检测()

  3.     'n1,n2,n3,n4,n5代表五次检测
  4.     Dim n1 As Long, n2 As Long, n3 As Long, n4 As Long, n5 As Long
  5.    
  6.     'i,j 表示位置
  7.     Dim i As Long, j As Long
  8.    
  9.     For i = 3 To Range("a1").CurrentRegion.Rows.Count
  10.         For j = 4 To 8
  11.             If Cells(i, j) < 60 Then
  12.                 Select Case j
  13.                 Case 4
  14.                      Cells(3 + n1, 11) = Cells(i, 1)
  15.                      Cells(3 + n1, 12) = Cells(i, 3)
  16.                      Cells(3 + n1, 13) = Cells(i, 4)
  17.                     n1 = n1 + 1
  18.                 Case 5
  19.                      Cells(3 + n2, 14) = Cells(i, 1)
  20.                      Cells(3 + n2, 15) = Cells(i, 3)
  21.                      Cells(3 + n2, 16) = Cells(i, 4)
  22.                     n2 = n2 + 1
  23.                 Case 6
  24.                      Cells(3 + n3, 17) = Cells(i, 1)
  25.                      Cells(3 + n3, 18) = Cells(i, 3)
  26.                      Cells(3 + n3, 19) = Cells(i, 4)
  27.                     n3 = n3 + 1
  28.                 Case 7
  29.                      Cells(3 + n4, 20) = Cells(i, 1)
  30.                      Cells(3 + n4, 21) = Cells(i, 3)
  31.                      Cells(3 + n4, 22) = Cells(i, 4)
  32.                     n4 = n4 + 1
  33.                 Case 8
  34.                      Cells(3 + n5, 23) = Cells(i, 1)
  35.                      Cells(3 + n5, 24) = Cells(i, 3)
  36.                      Cells(3 + n5, 25) = Cells(i, 4)
  37.                     n5 = n5 + 1
  38.                 End Select
  39.             End If
  40.         Next
  41.     Next
  42.    


  43. End Sub
复制代码



  1. Option Explicit

  2. '我是民航骄子
  3. '我并没有很明白胡老师说的用循环做的意思
  4. '为这个题目,特意想个循环,好像也没有啥意义

  5. Sub 吃太饱()

  6. 'i代表位置
  7. Dim i As Long
  8. 'j 代表到低级阶段,Maoli代表毛利,Jiangjin代表应发奖金
  9. Dim j As Long, Maoli As Double, Jiangjin As Double

  10. For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
  11.     j = 0
  12.     Jiangjin = 0
  13.     Maoli = Cells(i, 2).Value
  14.     Do While Maoli > 0
  15.         Select Case j
  16.         Case 0
  17.             If Maoli <= 10 Then
  18.                 Jiangjin = Maoli * 0.05
  19.                 Maoli = Maoli - 10
  20.             Else
  21.                 Jiangjin = 10 * 0.05
  22.                 Maoli = Maoli - 10
  23.             End If
  24.             j = j + 1
  25.         Case 1
  26.             If Maoli <= 10 Then
  27.                 Jiangjin = Jiangjin + Maoli * 0.1
  28.                 Maoli = Maoli - 10
  29.             Else
  30.                 Jiangjin = Jiangjin + 10 * 0.1
  31.                 Maoli = Maoli - 10
  32.             End If
  33.             j = j + 1
  34.         Case 2
  35.             If Maoli <= 20 Then
  36.                 Jiangjin = Jiangjin + Maoli * 0.2
  37.                 Maoli = Maoli - 20
  38.             Else
  39.                 Jiangjin = Jiangjin + 20 * 0.2
  40.                 Maoli = Maoli - 20
  41.             End If
  42.             j = j + 1
  43.         Case 3
  44.             If Maoli <= 20 Then
  45.                 Jiangjin = Jiangjin + Maoli * 0.3
  46.                 Maoli = Maoli - 20
  47.             Else
  48.                 Jiangjin = Jiangjin + 20 * 0.3
  49.                 Maoli = Maoli - 20
  50.             End If
  51.             j = j + 1
  52.         Case 4
  53.             If Maoli <= 40 Then
  54.                 Jiangjin = Jiangjin + Maoli * 0.5
  55.                 Maoli = Maoli - 40
  56.             Else
  57.                 Jiangjin = Jiangjin + 40 * 0.5
  58.                 Maoli = Maoli - 40
  59.             End If
  60.             j = j + 1
  61.         Case Else
  62.             Jiangjin = Jiangjin + Maoli * 0.8
  63.             Maoli = 0
  64.         End Select
  65.    
  66.     Loop
  67.    
  68.     Cells(i, 3).Value = Jiangjin
  69.    
  70. Next

  71. End Sub

复制代码

点评

作业3:思路不错,赞一个,不过还可继续优化  发表于 5 天前
作业2:不正确,参看七楼的代码  发表于 5 天前
作业1:正确  发表于 5 天前
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层

  1. Sub 成绩处理()
  2.     Dim 不及格门数 As Long, 优秀门数 As Long, i As Long, j As Long, area As Range
  3.     Set area = Range("a1").CurrentRegion
  4.     For i = 2 To area.Rows.Count
  5.         不及格门数 = 0
  6.         优秀门数 = 0
  7.         For j = 4 To 9
  8.             If Cells(i, j) < 60 Then
  9.                 不及格门数 = 不及格门数 + 1
  10.             ElseIf Cells(i, j) >= 85 Then
  11.                 优秀门数 = 优秀门数 + 1
  12.             End If
  13.         Next
  14.         If 不及格门数 >= 3 Then
  15.             Cells(i, 11) = "勒令退学"
  16.         ElseIf 不及格门数 = 2 Then
  17.             Cells(i, 11) = "留级"
  18.         ElseIf 不及格门数 = 1 Then
  19.             Cells(i, 11) = "补考"
  20.         ElseIf 不及格门数 = 0 And 优秀门数 <= 5 Then
  21.             Cells(i, 11) = "通过"
  22.         Else
  23.             Cells(i, 11) = "奖学金"
  24.         End If
  25.     Next
  26.    
  27. End Sub
  28. Sub 不及格名单()
  29.     Dim i As Long, j As Long, k As Long, m As Long, area As Range
  30.     Set area = Range("a1").CurrentRegion
  31.     m = 0
  32.     For j = 4 To 8
  33.         k = 2
  34.         For i = 3 To area.Rows.Count
  35.             If Cells(i, j) < 60 Then
  36.                 k = k + 1
  37.                 Cells(k, 11 + m) = Cells(i, 1)
  38.                 Cells(k, 12 + m) = Cells(i, 3)
  39.                 Cells(k, 13 + m) = Cells(i, j)
  40.             End If
  41.         Next
  42.         m = m + 3
  43.     Next
  44. End Sub
  45. Sub 吃太饱()
  46.     Dim i As Long, area As Range, 金额 As Double, 奖金 As Double
  47.     Set area = Range("a1").CurrentRegion
  48.     For i = 2 To area.Rows.Count
  49.         金额 = Cells(i, 2)
  50.         奖金 = 0
  51.         If 金额 > 100 Then
  52.             奖金 = 奖金 + (金额 - 100) * 8000
  53.             金额 = 100
  54.         End If
  55.         If 金额 > 60 Then
  56.             奖金 = 奖金 + (金额 - 60) * 5000
  57.             金额 = 60
  58.         End If
  59.         If 金额 > 40 Then
  60.             奖金 = 奖金 + (金额 - 40) * 3000
  61.             金额 = 40
  62.         End If
  63.         If 金额 > 20 Then
  64.             奖金 = 奖金 + (金额 - 20) * 2000
  65.             金额 = 20
  66.         End If
  67.         If 金额 > 10 Then
  68.             奖金 = 奖金 + (金额 - 10) * 1000
  69.             金额 = 10
  70.         End If
  71.         If 金额 >= 0 Then
  72.             奖金 = 奖金 + 金额 * 500
  73.         End If
  74.         Cells(i, 3) = 奖金
  75.     Next
  76. End Sub
复制代码

点评

结果正确,思路不错,赞  发表于 5 天前
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
  1. '作业1
  2. Sub Chuli()
  3.     Dim i As Long, j As Long, BuJige As Long, Fen85 As Long, area As Range
  4.     Set area = Range("a1").CurrentRegion
  5.     For i = 2 To area.Rows.Count
  6.         BuJige = 0
  7.         Fen85 = 0
  8.         For j = 4 To 9
  9.             If Cells(i, j) < 60 Then
  10.                 BuJige = BuJige + 1
  11.             End If
  12.             If Cells(i, j) >= 85 Then
  13.                 Fen85 = Fen85 + 1
  14.             End If
  15.         Next
  16.         If BuJige >= 3 Then
  17.             Cells(i, 11) = "勒令退学"
  18.         ElseIf BuJige = 2 Then
  19.             Cells(i, 11) = "留级"
  20.         ElseIf BuJige = 1 Then
  21.             Cells(i, 11) = "补考"
  22.         Else
  23.             If Fen85 = 6 Then
  24.                 Cells(i, 11) = "奖学金"
  25.             Else
  26.                 Cells(i, 11) = "通过"
  27.             End If
  28.         End If
  29.     Next
  30. End Sub

  31. '作业2
  32. Sub BuJige()
  33.     Dim i As Long, j As Long, k As Long, l As Long, m As Long, n As Long, area As Range
  34.      l = 8
  35.     m = 9
  36.     n = 10
  37.     Set area = Range("a1").CurrentRegion
  38.         For k = 4 To 8
  39.         j = 2
  40.         l = l + 3
  41.         m = m + 3
  42.         n = n + 3
  43.         For i = 3 To area.Rows.Count
  44.         
  45.             If Cells(i, k) < 60 Then
  46.                 j = j + 1
  47.                 Cells(j, l) = Cells(i, 1)
  48.                 Cells(j, m) = Cells(i, 3)
  49.                 Cells(j, n) = Cells(i, k)
  50.             End If
  51.         Next
  52.         Next
  53. End Sub

  54. '作业3
  55. Sub JiangJin()
  56.     Dim i As Long, j As Long, k1 As Long, k2 As Long, k3 As Long, k4 As Long, k5 As Long, area As Range
  57.     Set area = Range("a1").CurrentRegion
  58.     k1 = 100000 * 0.05
  59.     k2 = k1 + 100000 * 0.1
  60.     k3 = k2 + 200000 * 0.2
  61.     k4 = k3 + 200000 * 0.3
  62.     k5 = k4 + 400000 * 0.5
  63.    
  64.    
  65.     For i = 2 To area.Rows.Count
  66.         If Cells(i, 2) <= 10 Then
  67.            Cells(i, 3) = Cells(i, 2) * 0.05 * 10000
  68.         ElseIf Cells(i, 2) <= 20 Then
  69.             Cells(i, 3) = k1 + (Cells(i, 2) * 10000 - 100000) * 0.1
  70.         ElseIf Cells(i, 2) <= 40 Then
  71.             Cells(i, 3) = k2 + (Cells(i, 2) * 10000 - 200000) * 0.2
  72.         ElseIf Cells(i, 2) <= 60 Then
  73.             Cells(i, 3) = k3 + (Cells(i, 2) * 10000 - 400000) * 0.3
  74.         ElseIf Cells(i, 2) <= 100 Then
  75.             Cells(i, 3) = k4 + (Cells(i, 2) * 10000 - 600000) * 0.5
  76.         Else
  77.             Cells(i, 3) = k5 + (Cells(i, 2) * 10000 - 1000000) * 0.8
  78.         End If
  79.     Next

  80. End Sub
复制代码

点评

结果正确,不错  发表于 5 天前
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
  1. 1、作业1
  2. Sub 成绩判断()
  3. Dim area As Range, i As Long, j As Long, n As Long

  4. Set area = Range("a1").CurrentRegion
  5.   
  6.    Debug.Print area.Rows.Count
  7.    
  8.      For i = 2 To area.Rows.Count
  9.          For j = 4 To 9
  10.             If Cells(i, j) > 85 Then
  11.                 Cells(i, 11) = "奖学金"
  12.                 ElseIf Cells(i, j) >= 60 And Cells(i, j) <= 85 Then
  13.                      Cells(i, 11) = "通过"
  14.                     Else: n = n + 1
  15.                     End If
  16.                 Select Case n
  17.               Case 1
  18.                    Cells(i, 11) = "补考"
  19.               Case 2
  20.                    Cells(i, 11) = "留级"
  21.               Case Is >= 3
  22.                    Cells(i, 11) = "勒令退学"
  23.               End Select
  24.           Next
  25.           n = 0
  26.     Next
  27.       

  28. End Sub
  29. 2、作业2

  30. Sub 求不及格学生的成绩()
  31. Dim area As Range, i As Long, j As Long, n As Long, m As Long
  32.       
  33.       Set area = Range("a2").CurrentRegion
  34.      
  35.        For j = 4 To 8
  36.            m = m + 3
  37.              For i = 3 To area.Rows.Count
  38.                 If Cells(i, j) < 60 Then
  39.                   n = n + 1
  40.                   Cells(n + 2, m + 10) = Cells(i, j)
  41.                   Cells(n + 2, m + 9) = Cells(i, 3)
  42.                   Cells(n + 2, m + 8) = Cells(i, 1)
  43.                   End If
  44.              Next
  45.            n = 0
  46.        Next
  47. End Sub
  48. 作业3
  49. Sub 吃太饱()
  50. Dim i As Long, j As Long, a As Long, b As Long, c As Long, area As Range, n As Long
  51. Set area = Range("A2").CurrentRegion
  52.      Debug.Print area.Rows.Count

  53.      
  54.      For i = 2 To area.Rows.Count
  55.          
  56.           Select Case Cells(i, 2)
  57.             Case Is <= 10
  58.                     Cells(i, 3) = Cells(i, 2) * 0.05 * 10000
  59.             Case 10 To 20
  60.                     Cells(i, 3) = ((Cells(i, 2) - 10) * 0.1 + 10 * 0.05) * 10000
  61.              Case 20 To 40
  62.                     Cells(i, 3) = ((Cells(i, 2) - 20) * 0.2 + 10 * 0.1 + 10 * 0.05) * 10000
  63.              Case 40 To 60
  64.                     Cells(i, 3) = ((Cells(i, 2) - 40) * 0.3 + 20 * 0.2 + 10 * 0.1 + 10 * 0.05) * 10000
  65.              Case 60 To 100
  66.                     Cells(i, 3) = ((Cells(i, 2) - 60) * 0.5 + 20 * 0.3 + 20 * 0.2 + 10 * 0.1 + 10 * 0.05) * 10000
  67.              Case Is > 100
  68.                     Cells(i, 3) = ((Cells(i, 2) - 100) * 0.8 + 40 * 0.5 + 20 * 0.3 + 20 * 0.2 + 10 * 0.1 + 10 * 0.05) * 10000
  69.           End Select
  70.           Debug.Print Cells(i, 3)
  71.     Next


  72. End Sub
复制代码

点评

结果正确,不错  发表于 5 天前
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
  1. Sub 考试成绩()
  2.     Dim i As Long, j As Long, count As Long, num As Long
  3.     i = 2
  4.     num = Range("a1").End(xlDown).Row
  5.     For i = 2 To num
  6.         j = 3
  7.         count = 0
  8.         For j = 4 To 9
  9.             If Cells(i, j).Value < 60 Then
  10.             count = count + 1
  11.         End If
  12.         Next
  13.             If count >= 3 Then
  14.                 Range("k" & i).Value = "勒令退学"
  15.             ElseIf count = 2 Then
  16.                 Range("k" & i).Value = "留级"
  17.             ElseIf count = 1 Then
  18.                 Range("k" & i).Value = "补考"
  19.             ElseIf Cells(i, 3).Value >= 85 And Cells(i, 4).Value >= 85 And Cells(i, 5).Value >= 85 And Cells(i, 6).Value >= 85 And Cells(i, 7).Value >= 85 And Cells(i, 8) >= 85 Then
  20.                 Range("k" & i).Value = "奖学金"
  21.             Else
  22.                 Range("k" & i).Value = "通过"
  23.             End If
  24.     Next
  25. End Sub
  26. Sub 作业求不及格学生()
  27.     Dim i As Long, j As Long
  28.     i = 3
  29.     j = 2
  30.     For i = 3 To Range("a1").End(xlDown).Row
  31.         If Cells(i, 4).Value < 60 Then
  32.             j = j + 1
  33.             Range("k" & j) = Cells(i, 1)
  34.             Range("l" & j) = Cells(i, 3)
  35.             Range("m" & j) = Cells(i, 4)
  36.         End If
  37.     Next
  38.     i = 3
  39.     j = 2
  40.     For i = 3 To Range("a1").End(xlDown).Row
  41.         If Cells(i, 5).Value < 60 Then
  42.             j = j + 1
  43.             Range("n" & j) = Cells(i, 1)
  44.             Range("o" & j) = Cells(i, 3)
  45.             Range("p" & j) = Cells(i, 5)
  46.         End If
  47.     Next
  48.     i = 3
  49.     j = 2
  50.     For i = 3 To Range("a1").End(xlDown).Row
  51.         If Cells(i, 6).Value < 60 Then
  52.             j = j + 1
  53.             Range("q" & j) = Cells(i, 1)
  54.             Range("r" & j) = Cells(i, 3)
  55.             Range("s" & j) = Cells(i, 6)
  56.         End If
  57.     Next
  58.     i = 3
  59.     j = 2
  60.     For i = 3 To Range("a1").End(xlDown).Row
  61.         If Cells(i, 7).Value < 60 Then
  62.             j = j + 1
  63.             Range("t" & j) = Cells(i, 1)
  64.             Range("u" & j) = Cells(i, 3)
  65.             Range("v" & j) = Cells(i, 7)
  66.         End If
  67.     Next
  68.     i = 3
  69.     j = 2
  70.     For i = 3 To Range("a1").End(xlDown).Row
  71.         If Cells(i, 8).Value < 60 Then
  72.             j = j + 1
  73.             Range("w" & j) = Cells(i, 1)
  74.             Range("x" & j) = Cells(i, 3)
  75.             Range("y" & j) = Cells(i, 8)
  76.         End If
  77.     Next
  78. End Sub
  79. Sub 吃太饱()
  80.     Dim i As Long, bonus As Double
  81.     For i = 2 To Range("a1").End(xlDown).Row
  82.         Select Case Cells(i, 2).Value
  83.             Case Is <= 10
  84.                 bonus = Cells(i, 2).Value * 0.05 * 10000
  85.             Case Is < 20
  86.                 bonus = (((Cells(i, 2).Value - 10) * 0.1) + (10 * 0.05)) * 10000
  87.             Case Is < 40
  88.                 bonus = (((Cells(i, 2).Value - 20) * 0.2) + (10 * 0.1) + (10 * 0.05)) * 10000
  89.             Case Is < 60
  90.                 bonus = ((Cells(i, 2).Value - 40) * 0.3 + 20 * 0.2 + 10 * 0.1 + 10 * 0.05) * 10000
  91.             Case Is < 100
  92.                 bonus = ((Cells(i, 2).Value - 60) * 0.5 + 20 * 0.3 + 20 * 0.2 + 10 * 0.1 + 10 * 0.05) * 10000
  93.             Case Is >= 100
  94.                 bonus = ((Cells(i, 2).Value - 100) * 0.8 + 40 * 0.5 + 20 * 0.3 + 20 * 0.2 + 10 * 0.1 + 10 * 0.05) * 10000
  95.             End Select
  96.     Sheets("奖金-毛利").Cells(i, 3).Value = bonus
  97.     Next
  98. End Sub
复制代码

点评

正确,不错  发表于 5 天前
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 入学

本版积分规则

关闭

站长推荐上一条 /2 下一条

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