六合开奖结果现场直播欢迎诸位!收藏本站注 册登 陆
常用三肖中特马:基础知识网络知识操作系统WPS网页制作数据库算法网页成功之路网络安全最新技术古典mid流行midmid背景下载中心
您现在的位置:首页 > 三肖中特马 > 文章页

VBA操作Excel之中学通用成绩管理示例下篇

Admin | 2008-7-14 7:41:19 | ReadNums | 5024 | 标签 六合开奖结果现场直播 | 打印本页
     

        接上篇,以下为VBA代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'以下求各班级各学科平均分
startclass = 1 '在表一检查班级名称的行序号初始值
endclass = 40 '在表一检查班级名称的行序号终止值

Startscan = 2 '在表四扫描学生数据之行号初始值
endscan = 2000 '在表四扫描学生数据之行号终止值

StartSubject = 3 '在表一要查找的科目列序号初始值
EndSubject = 8 '在表一要查找的科目列序号之终止值

total = 0 '总分
stunum = 0 '学生人数

TotalSheetIndex = 1 '汇总表序号
StuScorseSheetIndex = 4 '学生成绩表序号

If Target.Column = 13 And Target.Row = 4 Then
For m = StartSubject To EndSubject '求每个班级每个科目的总平均分
  For k = startclass To endclass
    calssname = Worksheets(TotalSheetIndex).Cells(k, 2).Value
    If Len(calssname) <> 0 And calssname <> "班级" Then '检查班级号是否为空或其他非班级号字符
         For h = Startscan To endscan
        '检查班级相同
           If Worksheets(StuScorseSheetIndex).Cells(h, 3).Value = Worksheets(TotalSheetIndex).Cells(k, 2).Value Then
              total = total + Worksheets(StuScorseSheetIndex).Cells(h, 7 + (m - 3)).Value
             If Len(Worksheets(StuScorseSheetIndex).Cells(h, 5).Value) <> 0 Then '检查学生姓名不为空
              stunum = stunum + 1
           End If
          End If
        Next
    If total <> 0 And stunum <> 0 Then
      Worksheets(TotalSheetIndex).Cells(k, m).Value = total / stunum
    Else
      Worksheets(TotalSheetIndex).Cells(k, m).Value = 0
    End If
    total = 0
    stunum = 0
    End If
  Next
Next

'以下求各班级总平均分
For k = startclass To endclass
    calssname = Worksheets(TotalSheetIndex).Cells(k, 2).Value
    If Len(calssname) <> 0 And calssname <> "班级" Then '检查班级号是否为空或其他非班级号字符
        For h = Startscan To endscan
        '检查班级相同
        If Worksheets(StuScorseSheetIndex).Cells(h, 3).Value = Worksheets(TotalSheetIndex).Cells(k, 2).Value Then
            For m = StartSubject To EndSubject
              total = total + Worksheets(StuScorseSheetIndex).Cells(h, 7 + (m - 3)).Value
            Next
           
            If Len(Worksheets(StuScorseSheetIndex).Cells(h, 5).Value) <> 0 Then '检查学生姓名不为空
            stunum = stunum + 1
           End If
        End If
      Next
      If total <> 0 And stunum <> 0 Then
        Worksheets(TotalSheetIndex).Cells(k, m).Value = total / stunum
      Else
        Worksheets(TotalSheetIndex).Cells(k, m).Value = 0
      End If
      total = 0
      stunum = 0
      End If
Next
End If
End Sub


问题未解决:在线咨询

网友评论

(访客)
内容实用原创,讲得很好。
20xx年x月x日
(站长)
有问题请在线咨询。
20xx年x月x日