Excel报表再处理(二):统计成绩表的总分与平均分
先按图示自行建立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(待继)