tft每日頭條

 > 科技

 > vba中計算一個班的最高分

vba中計算一個班的最高分

科技 更新时间:2025-02-03 14:23:16

本文介紹一下,如何進行成績提取,也就是提取出前幾名學生,并且一次性對所有班級進行提取。

vba中計算一個班的最高分(學生成績自動提取前幾名)1

成績表如下圖所示,關鍵是成績表要完整,不然不能進行數據提取。

所以,首先要把成績表錄入完成。

vba中計算一個班的最高分(學生成績自動提取前幾名)2

一鍵提取的結果如下圖所示:

vba中計算一個班的最高分(學生成績自動提取前幾名)3

分别以班進行排序,這樣就把每個班的前幾名學生提取出來了,顯然這方面方便對于某些學生進行管理。

當然了,并不希望這種對學分為主的教學方法,唯學分制把一些有創造性的思想扼殺在學生時期,并不是好事。

提取出成績之後,可以進行排序,這裡多做了一個按鈕以便進行排序。當然也可以實現自動排序,這裡就不做分析了。

vba中計算一個班的最高分(學生成績自動提取前幾名)4

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每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved