本文介紹一下,如何進行成績提取,也就是提取出前幾名學生,并且一次性對所有班級進行提取。
成績表如下圖所示,關鍵是成績表要完整,不然不能進行數據提取。
所以,首先要把成績表錄入完成。
一鍵提取的結果如下圖所示:
分别以班進行排序,這樣就把每個班的前幾名學生提取出來了,顯然這方面方便對于某些學生進行管理。
當然了,并不希望這種對學分為主的教學方法,唯學分制把一些有創造性的思想扼殺在學生時期,并不是好事。
提取出成績之後,可以進行排序,這裡多做了一個按鈕以便進行排序。當然也可以實現自動排序,這裡就不做分析了。
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---
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!