打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel之VBA应用篇: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---

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA编程,提取工作表中不重复的年份数据,这里有好方法
我认识的EXCEL、宏、VBA
【VBA】从网上复制到Excel里全是文本框,怎么取值?
VBA查询(筛选)Excel数据代码示例
MS Excel 与 AHK
自学资料(Excel VBA)[收集整理15]
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服