分享

Excel报表再处理(二):统计成绩表的总分与平均分

 1013137105 2021-06-19

        先按图示自行建立Excel成绩表格或者直接复制易点成绩统计软件演示文件夹的“2011年高三级第一学期期末考试成绩表.xls”,在打开的Excel表格按《Excel报表再处理(一)》文中所述的方法在VBA编辑器里选择BeforeDoubleClick事件(工作表双击事件之前触发)后输入如下代码:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim studentCount, subjectCount As Integer
    studentCount = 463
    subjectCount = 5
    Sheet1.Cells(2, 9) = "总分"
    Sheet1.Cells(2, 10) = "平均分"
    For i = 1 To studentCount
       Sheet1.Cells(i + 2, 9) = Sheet1.Cells(i + 2, 4) + Sheet1.Cells(i + 2, 5) + Sheet1.Cells(i + 2, 6) + Sheet1.Cells(i + 2, 7) + Sheet1.Cells(i + 2, 8)
       Sheet1.Cells(i + 2, 10) = Sheet1.Cells(i + 2, 9) / subjectCount
    Next
End Sub

        分析一下代码,大家可以参考代码后的注释进行理解。

    Dim studentCount, subjectCount As Integer    '显式定义2个变量为整形,你想偷懒的话也可以不定义直接赋值,作用范围只有函数内部
    studentCount = 463    '学生数
    subjectCount = 5        '学科数
    Sheet1.Cells(2, 9) = "总分"    '标题行在第2行,第9列的单元格赋值“总分”
    Sheet1.Cells(2, 10) = "平均分"    '标题行在第2行,第10列的单元格赋值“平均分”
    For i = 1 To studentCount    '把表格的所有学生做一个循环以计算他们的总分和平均分
       Sheet1.Cells(i + 2, 9) = Sheet1.Cells(i + 2, 4) + Sheet1.Cells(i + 2, 5) + Sheet1.Cells(i + 2, 6) + Sheet1.Cells(i + 2, 7) + Sheet1.Cells(i + 2, 8)    'i+2其中2是因为顶部有2行用于标题,后面是当前行的几个学科分值,学科多的话你也可以加个循环
       Sheet1.Cells(i + 2, 10) = Sheet1.Cells(i + 2, 9) / subjectCount    '算完总分再除以学科数就可以得到平均分了
    Next

        就这几行代码,回来在工作表上双击后所有学生的总分和平均分就统计出来了,以后你就可以把带有宏的工作簿做样本文件进行数据录入,完成后在宏里面改下参数就可以重复相同的统计了。当然在软件设计里就没这么简单了,软件里会生成班级类、学生类等等,然后导入数据的时候会根据类创建一个个班级、学生等对象后再进行统计,这些就要复杂得多了当然只有这样才能灵活地解决各种复杂的需求。

L.Q.R  210403(待继)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多