發布時間:2010-01-13 共1頁
在學校的教學活動中,通過統計分析學生的考試成績,了解教學情況,為改進以后的教學工作提供依據,是整個教學工作中非常重要一環。但經常按各種不同的指標統計分析成績,又是一件很枯燥,很繁瑣的事。哪么,能否對需統計的各種指標,無需人工干預,讓計算機自動完成呢?答案是肯定的,筆者通過Excel中自帶的Vba,實現了這個設想。為能給被統計成績困擾的朋友提供一些幫助,下面以我校高中三年級理科成績統計為例,介紹其作法,供大家參考。
1. 設計流程,編制程序源代碼:為便于說明做法,同時代碼簡短一點,這里以我校高三理科1-4班成績統計為例,說明其做法。另外為使編寫代碼效率高一些,這里采用先錄制一部分為宏,再在vba中打開編輯相結合的辦法編寫。
① 從外部的“考試成績.XLS”工作簿中將1-4班的成績拷貝,依次粘貼到“成績統計表.XLS”工作簿中的“理科”表中;
程序源代碼:
Sub 拷外部理科0()
ActiveWindow.WindowState = xlMinimized
Windows("考試成績.xls").Activate
ActiveWindow.WindowState = xlMaximized
Sheets("1班").Select
Range("A1:S60").Select
Selection.Copy
ActiveWindow.WindowState = xlMinimized
Windows("成績統計表.xls").Activate
ActiveWindow.WindowState = xlMaximized
Sheets("理科").Select
ActiveWindow.ScrollRow = 1
Range("A1").Select
ActiveSheet.Paste
拷貝“考試成績簿”中的1班成績表中數據,粘貼到到成績統計表工作簿的理科表A1
Range("S22").Select
ActiveWindow.LargeScroll Down:=1
Range("S44").Select
ActiveWindow.LargeScroll Down:=1
Range("S66").Select
Windows("考試成績.xls").Activate
ActiveWindow.WindowState = xlNormal
Sheets("2班").Select
Range("A2").Select
ActiveWindow.SmallScroll Down:=43
Range("A2:S58").Select
Application.CutCopyMode = False
Selection.Copy
Windows("成績統計表.xls").Activate
ActiveWindow.WindowState = xlNormal
Range("A61").Select
ActiveSheet.Paste
拷貝考試成績簿中的2班成績表中數據,粘貼到“成績統計”工作簿的理科表A61
Windows("考試成績.xls").Activate
ActiveWindow.WindowState = xlNormal
Sheets("3班").Select
Range("A1:S59").Select
Application.CutCopyMode = False
Selection.Copy
Windows("成績統計表.xls").Activate
ActiveWindow.WindowState = xlNormal
Range("S58").Select
ActiveWindow.LargeScroll Down:=1
Range("S80").Select
ActiveWindow.LargeScroll Down:=1
Range("S102").Select
ActiveWindow.LargeScroll Down:=1
Range("A118").Select
ActiveSheet.Paste
拷貝成績簿中的3班成績表中數據,粘貼到成績統計表工作簿的理科表A118
Rows("118:118").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Range("D122").Select
Windows("考試成績.xls").Activate
ActiveWindow.WindowState = xlNormal
Sheets("4班").Select
Range("A2:S71").Select
Selection.Copy
Windows("成績統計表.xls").Activate
ActiveWindow.WindowState = xlNormal
ActiveWindow.LargeScroll Down:=1
Range("D144").Select
ActiveWindow.LargeScroll Down:=1
Range("D166").Select
ActiveWindow.LargeScroll Down:=1
Range("D188").Select
ActiveWindow.LargeScroll Down:=-1
Range("A176").Select
ActiveSheet.Paste‘拷貝四班成績
End Sub
② 利用Excel的統計函數“RANK”將理科表中學生的各科成績排名次;目的是讓每位學生了解自己在全年級學生中的排名的位置。
程序代碼如下:
Sub 理名次()
Range("D2").Select
ActiveCell.FormulaR1C1 = "=RANK(RC[-1],R2C3:R246C3,0)"
Selection.AutoFill Destination:=Range("D2:D246"), Type:=xlFillDefault
Range("D2:D246").Select
ActiveWindow.LargeScroll Down:=-13
ActiveWindow.ScrollRow = 1 ’在工作表的D2單元格輸入公式,并用拖的方式在D2-D246列復制
Selection.Copy
Range("F2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Replace What:="$c$2:$c$246", Replacement:="$e$2:$e$246", LookAt _
:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
拷貝D列粘貼到F列F2
Selection.Copy
Range("H2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Replace What:="e", Replacement:="g", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False