vba编程,学生成绩自动提取前几名
本文介绍一下,如何进行成绩提取,也就是提取出前几名学生,并且一次性对所有班级进行提取。
成绩表如下图所示,关键是成绩表要完整,不然不能进行数据提取。
所以,首先要把成绩表录入完成。
一键提取的结果如下图所示:
分别以班进行排序,这样就把每个班的前几名学生提取出来了,显然这方面方便对于某些学生进行管理。
当然了,并不希望这种对学分为主的教学方法,唯学分制把一些有创造性的思想扼杀在学生时期,并不是好事。
提取出成绩之后,可以进行排序,这里多做了一个按钮以便进行排序。当然也可以实现自动排序,这里就不做分析了。
Private Sub CommandButton1_Click()
"提取成绩
On Error Resume Next
Dim xNumber As Integer
xNumber = Me.TextBox1.Value
If Not VBA.IsNumeric(xNumber) Then Exit Sub
If xNumber <= 0 Then Exit Sub
Dim s As Worksheet, ir As Long, er As Long
Set s = ThisWorkbook.Worksheets("提取成绩")
s.UsedRange.ClearContents
s.UsedRange.ClearFormats
s.Range("A1").Value = Me.TextBox1.Value
s.Range("B1:K1").Value = Me.Range("B1:K1").Value
Dim sArr, si As Integer
Dim xi As Integer
For xi = 1 To 30 "30个班级
ir = s.Range("A" & s.Rows.Count).End(xlUp).Row + 1
s.Range("A" & ir).Value = "班级 _ " & VBA.Format(xi, "00")
sArr = GetStudent(xi, Me.TextBox1.Value)
For si = LBound(sArr) To UBound(sArr)
If sArr(si) <> "" Then
ir = s.Range("A" & s.Rows.Count).End(xlUp).Row + 1
s.Range("A" & ir).Value = si
s.Range("B" & ir & ":L" & ir).Value = ActiveSheet.Range("B" & sArr(si) & ":L" & sArr(si)).Value
End If
Next si
Next xi
"s.Range("A" & ir).Value = "班级"
Set s = Nothing
MsgBox "成绩提取成功!"
ThisWorkbook.Worksheets("提取成绩").Select
End Sub
Excel用在学生成绩管理方面有很强的优势,通过一些简单的函数就可以实现计算、排序等功能。
欢迎关注、收藏
---END---