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---

展开阅读全文

页面更新:2024-04-09

标签:成绩   学分制   学生   教学方法   学分   创造性   函数   班级   按钮   成绩表

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top