《Excel2000中用宏和VBA做成绩统计.pdf》由会员分享,可在线阅读,更多相关《Excel2000中用宏和VBA做成绩统计.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Excel2000 中用宏和 VBA做成绩统计在学校的教学活动中,通过统计分析学生的考试成绩,了解教学情况,为改进以后的教学工作提供依据,xcel 中自带的Vba,实现了这个设想。为能给被统计成绩困扰的朋友提供一些帮助,下面以我校高中三年级理科成绩统计为例,介绍其作法,供大家参考。1 设计流程,编制程序源代码:为便于说明做法,同时代码简短一点,这里以我校高三理科1-4 班成绩统计为例,说明其做法。另外为使编写代码效率高一些,这里采用先录制一部分为宏,再在vba 中打开编辑相结合的办法编写。从外部的“考试成绩.XLS”工作簿中将1-4 班的成绩拷贝,依次粘贴到“成绩统计表.XLS”工作簿中的“理
2、科”表中;程序源代码: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 Ac
3、tiveWindow.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 Ran
4、ge(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.WindowSta
5、te=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.LargeScr
6、oll 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
7、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 Su
8、b 利用 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
9、 单元格输入公式,并用拖的方式在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 Applicatio
10、n.CutCopyMode=False Selection.Replace What:=e,Replacement:=g,LookAt:=xlPart,_ SearchOrder:=xlByRows,MatchCase:=False 拷贝 D 列粘贴到H 列 H2 Selection.Copy Range(J2).Select ActiveSheet.Paste Application.CutCopyMode=False Selection.Replace What:=g,Replacement:=i,LookAt:=xlPart,SearchOrder:=xlByRows,MatchCase
11、:=False 拷贝 D 列粘贴到J列 J2 Selection.Copy Range(L2).Select ActiveSheet.Paste Application.CutCopyMode=False Selection.Replace What:=i,Replacement:=k,LookAt:=xlPart,_ SearchOrder:=xlByRows,MatchCase:=False 拷贝 D 列粘贴到L 列 L2 Selection.Copy Range(N2).Select ActiveSheet.Paste Application.CutCopyMode=False Sele
12、ction.Replace What:=k,Replacement:=m,LookAt:=xlPart,_ SearchOrder:=xlByRows,MatchCase:=False Columns(N:N).ColumnWidth=5.63 Columns(N:N).ColumnWidth=5 Range(N2).Select Columns(M:M).ColumnWidth=5.13 Range(N2).Select ActiveCell.FormulaR1C1=RANm(RC-1,R2C13:R246C13,0)Columns(N:N).Select Selection.Replace
13、 What:=runm,Replacement:=runk,LookAt:=xlPart,_ SearchOrder:=xlByRows,MatchCase:=False Range(N2:N246).Select Selection.Replace What:=ranm,Replacement:=rank,LookAt:=xlPart,_ SearchOrder:=xlByRows,MatchCase:=False Selection.Copy Range(P2).Select ActiveSheet.Paste Application.CutCopyMode=False Selection
14、.Replace What:=m,Replacement:=o,LookAt:=xlPart,_ SearchOrder:=xlByRows,MatchCase:=False Selection.Copy Range(R2).Select ActiveSheet.Paste Application.CutCopyMode=False Selection.Replace What:=o,Replacement:=q,LookAt:=xlPart,_ SearchOrder:=xlByRows,MatchCase:=False Range(G4).Select 分别选中F,H,J,.列,用查找替换
15、的方式,将原来的C 列范围”$C$2:$C$246”分别替换为对应的“”$F$2:$F$246”,”$H$2:$H$246”,范围End Sub 将全年级理科的成绩拷贝,粘贴到新表“降序”表中,并对各科成绩按降序排序,确定分析中的A,B等优秀分数线;程序源代码如下Sub 理降幂()Sheets(理科).Select Cells.Select Selection.Copy Sheets(理降幂).Select Range(A1).Select Selection.PasteSpecial Paste:=xlValues,Operation:=xlNone,SkipBlanks:=_ False,
16、Transpose:=False Columns(C:C).Select Application.CutCopyMode=False Selection.Sort Key1:=Range(C1),Order1:=xlDescending,Header:=xlGuess,_ OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod _:=xlPinYin 将 C 列成绩降幂排列Columns(E:E).Select Selection.Sort Key1:=Range(E1),Order1:=xlDescendin
17、g,Header:=xlGuess,_ OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod _:=xlPinYin 将 E 列成绩降幂排列Columns(G:G).Select Selection.Sort Key1:=Range(G1),Order1:=xlDescending,Header:=xlGuess,_ OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod _:=xlPinYin 将 G 列成绩降幂排列Colu
18、mns(I:I).Select Selection.Sort Key1:=Range(I1),Order1:=xlDescending,Header:=xlGuess,_ OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod _:=xlPinYin 将 I 列成绩降幂排列Columns(K:K).Select Selection.Sort Key1:=Range(K1),Order1:=xlDescending,Header:=xlGuess,_ OrderCustom:=1,MatchCase:=False
19、,Orientation:=xlTopToBottom,SortMethod _:=xlPinYin 将 K 列成绩降幂排列Columns(M:M).Select Selection.Sort Key1:=Range(M1),Order1:=xlDescending,Header:=xlGuess,_ OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod _:=xlPinYin 将 M 列成绩降幂排列Columns(O:O).Select Selection.Sort Key1:=Range(O1),Orde
20、r1:=xlDescending,Header:=xlGuess,_ OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod _:=xlPinYin 将 O 列成绩降幂排列Columns(Q:Q).Select Selection.Sort Key1:=Range(Q1),Order1:=xlDescending,Header:=xlGuess,_ OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod _:=xlPinYin
21、将 Q 列成绩降幂排列End Sub 建立分析表,列出各班统计的各种参数指标值。在前面的成绩统计工作簿中建立如下分语文,数学,英语,综合,总分等项目的“成绩分析”表其中的 A、B 优生分数线的确定,类同于高考录取线的确定。这里将各科前1-80 名定为 A 等,第 81-160名定为 B 等,其具体分数值,用Excel 自带的函数:MIN 计算,如语文的A 等优秀分数线的公式为:=MIN(理降幂!C2:C200),即从理科降序表的“语文字段”第C 列的第 2 到第 200 个纪录中,选取其中的最小者作为语文A 等最低优秀分数线,其余各科分数线的确定,公式基本形同,此处不再详述。各班达到各种优秀分
22、数线学生个数,利用Excel 的统计函数COUNTIF 计算,如语文科1 班 A 等优生个数公式如下:=COUNTIF(理科!$C$2:$C$60,=102);这里的 COUNTIF 是条件纪录数值项数的函数,其中的“理科!”表示成绩统计工作簿中的“理科”表,$C$2:$C$60 表示理科 1 班的语文数据范围,“=102”表示数据满足的条件。求和就直接用Excel 的求和函数计算,如语文科 1 班上优秀分数线的总人数合计公式为:=SUM(C6:D6)求平均分和求总分用Excel 的求平均函数与求和函数计算,如 1 班语文总分公式为:=SUM(理科!$C$2:$C$60),语文平均分公式为:=
23、AVERAGE(理科!C2:C60)。将上述表中的每个单元格内的公式输入完毕,你的成绩自动统计表就做好了。保存好你的工作成绩统计薄,只要在每次统计成绩时,同时打开考试成绩原始数据表和你的成绩统计工作簿,按次序1、选定成绩统计工作簿中的理科表的A1 单元格,运行宏拷外部理科,从外部将数据拷到“理科表”;2、运行宏理科名次,排出理科表中每一位同学的各科成绩的名次;3、选定理科降序表的A1 单元格,运行宏理降幂,将“理科表”数据拷到“理降幂”表中,并将每科成绩按列从高到低的排列;这时,成绩分析表中的数据就会按表内的公式,将各班成绩的各种指标一一统计出来。另外,如果第二次考试各班的人数有变化,可以通过选中成绩分析中该班所在行,用查找替换的方式变更;第二次考试A,B 等优秀分数线,也可以通过选中该列,用查找替换的方式改变。如果班级有增加或减少,可以在Vba 中,通过增删部分代码来适应你的班级个数。