在这篇文章中,我们将探讨如何使用VBA(Visual Basic for Applications)编写一个用于计算和显示成绩统计信息的程序。这个程序将帮助我们分析一组学生的成绩,并计算各个分数段的人数以及平均分、最高分和最低分。
首先,我们需要定义一些变量来存储我们的计算结果。这些变量包括:
- i:用于循环的计数器
- rowt:数据表中的行数
- a, a1, a2, a3, a4, a5, a6, a7, a8:用于存储不同分数段的人数和总分
接下来,我们使用On Error Resume Next语句来确保在遇到错误时程序不会中断。然后,我们获取数据表中的最后一行,以便我们可以遍历所有的成绩。
在For循环中,我们检查每一行的第二列(即成绩)是否为空。如果不为空,我们将根据成绩所在的分数段更新相应的变量。例如,如果成绩大于等于90分,我们将a1加1,并将成绩添加到总分a中。类似地,我们可以根据不同的分数段更新其他变量。
在循环结束后,我们将各个分数段的人数和总分分别显示在工作表的相应位置。此外,我们还计算了平均分、最高分和最低分,并将这些信息显示在工作表上。
最后,我们对数据表进行排序,以便我们可以快速地查看最高分和最低分。
总之,这个VBA程序可以帮助我们轻松地分析和展示学生的成绩统计信息。通过学习和实践这些代码,我们可以更好地理解如何使用VBA来解决实际问题。
Sub Score()
Dim i As Long
Dim rowt As Long
Dim a, a1, a2, a3, a4, a5, a6, a7, a8 As Long
On Error Resume Next
rowt = Cells(1048576, 1).End(3).Row
For i = 2 To rowt
If Cells(i, 2) <> "" Then
If Cells(i, 2) >= 90 Then
a1 = a1 1
a = a Cells(i, 2)
ElseIf Cells(i, 2) >= 80 Then
a2 = a2 1
a = a Cells(i, 2)
ElseIf Cells(i, 2) >= 70 Then
a3 = a3 1
a = a Cells(i, 2)
ElseIf Cells(i, 2) >= 60 Then
a4 = a4 1
a = a Cells(i, 2)
ElseIf Cells(i, 2) >= 50 Then
a5 = a5 1
a = a Cells(i, 2)
ElseIf Cells(i, 2) >= 40 Then
a6 = a6 1
a = a Cells(i, 2)
ElseIf Cells(i, 2) < 40 Then
a7 = a7 1
a = a Cells(i, 2)
End If
Else
a8 = a8 1
End If
Next i
Cells(2, 7) = a1 & "人"
Cells(3, 7) = a2 & "人"
Cells(4, 7) = a3 & "人"
Cells(5, 7) = a4 & "人"
Cells(6, 7) = a5 & "人"
Cells(7, 7) = a6 & "人"
Cells(8, 7) = a7 & "人"
Cells(9, 7) = a8 & "人"
Cells(2, 8) = "平均分: " & Round(a / (rowt - 1 - a8), 1) & vbCrLf & "最高分: " & WorksheetFunction.Max(Range("B2:B" & rowt)) & vbCrLf & "最低分: " & WorksheetFunction.Min(Range("B2:B" & rowt))
Range("A1:B" & rowt).Sort Key1:=Range("B1:B" & rowt), _
Order1:=xlDescending, Header:=xlNo
Range("A1:B" & rowt).Select
End Sub