在Excel中运用VBA统计学生成绩.docx
- 文档编号:28802970
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:9
- 大小:20.83KB
在Excel中运用VBA统计学生成绩.docx
《在Excel中运用VBA统计学生成绩.docx》由会员分享,可在线阅读,更多相关《在Excel中运用VBA统计学生成绩.docx(9页珍藏版)》请在冰豆网上搜索。
在Excel中运用VBA统计学生成绩
在Excel中运用VBA统计学生成绩
罗仲文
【摘要】随着计算机的普及,很多老师用Excel作为统计学生成绩的工具。
Excel是电子表格软件,具有很强的录入、统计功能,同时也兼有数据库的功能。
如果只是即时手工输入一些统计的命令、公式,是不能充分发挥Excel的优势的。
如果在Excel中统计学生成绩时运用VBA,就能够如虎添翼,达到事半功倍的效果。
【期刊名称】《教育信息技术》
【年(卷),期】2005(000)005
【总页数】3页(P36-38)
【关键词】Excel;学生成绩;VBA;电子表格软件;统计功能;计算机;数据库;录入;命令;即时;公式
【作者】罗仲文
【作者单位】广州市广雅中学
【正文语种】中文
【中图分类】教科文艺
《教育信息技术》电子信箱:
gddjzz@国在Excel巾运用VBA统计学生成绩◇罗仲文随着计算机的普及,很多老师用Excel作为统计学生成绩的工具。
Excel是电子表格软件,具有很强的录入、统计功能,同时也兼有数据库的功能。
如果只是即时手工输入一些统计的命令、公式,是不能充分发挥Excel的优势的。
如果在Excel中统计学生成绩时运用VBA,就能够如虎添翼,达到事半功倍的效果。
VBA的英文全称是“VisualBasicforApplications”,它包含了VisualBasic的大多数功能和优点,同时它又与Office中的各个应用软件,包括Excel的联系非常紧密。
它可以由Excel等应用软件控制,反过来,它又可以大大增强该应用软件的功能。
一、通过Excel输入数据Excel的数据输入界面得天独厚,它本身就是电子表格,非常适合输入各种数据。
如果不用Excel作为输入界面,而是使用其它语言编制程序制作输入界面,那么,每个使用者都得首先装入你这个独有的程序,这就很麻烦。
我们采取拿来主义,用Excel工作表做数据的输入界面。
Excel是办公软件Office中的一员,使用非常普遍。
作为一般的录入数据,很多人都会使用,其形式如下表:
-1
7.^87—_:
_.rnTE丁百-下BiF:
crrrrrrrrrrrTr一l!
字号语文数字英语政袷物理化学地理历史蕾乐体霄隽技信息2i1877882737068757877758285__!
■280566161768077∞9175¨80__i一36:
5071747071667898877275__至一49486737185647t陧秘82强70158r6279816861r87899S6r2757,.680636157606043fO筛761r9∞:
87926079816861r372927578809878506558405042TO∞67r818s10.97040495952504170髓72T365这种形式就跟平常的成绩登记表一样,学生很容易理解,只要简单地说明一下,学生都很容易明白怎样做。
它比用“Access”做输入界面还直截了当。
全级各班的工作表按照班序号先后集中到一个工作簿中,很容易查阅。
各级每次考试一个文件,也很简洁。
这就是用Excel工作表做输入界面的好处。
--I_----_--.一.-I-.一_---.begin//窗体从右上到左下/从左下到右上滑动AnimateWindow(HandIe,2000,AW_HOR_NEGATIVE+AW_VER_POSITIVE+AW_SLIDEorAW_HIDE);AnimateWindow(Handle,2000,AW_HOR_POSITIVE+AW_VER_NEGATIVE+AW_SLIDE二、利用VBA处理数据这步工作是发挥VBA效能的最大体验。
1.读取Excel中的数据VBA与Excel的各个单元格联系非常紧密。
为取出单元格的数据提供了非常简单、高效的手段。
Excel是电子表格软件,每个单元格都有唯一的标识。
标识单元格有两种方法:
a.形式如:
“B3”,表示第B列、第三行那个单元格。
b.形式如:
“cells(4,5)”,表示第4行、第5列那个单元格。
这些单元格的前面都可以指明它是属于第几个工作簿、第几个工作表的单元格。
这样,我们就可以用编写程序的方法,把任何单元格的数值读出来,放入内存变量中并加以运算、得到我们所需要的结果。
举例来说,我们将第一个工作簿作为装载程序和输出结果的工作簿,第二个工作簿登记全级各班学生的姓名,第三个工作簿登记全级各班学生考试成绩的数据。
其中第二个工作簿单独登记学生姓名的好处是因为学生姓名相对稳定,不用每次统计成绩都输入一次,这个工作簿可以从入学用到毕业。
如果要提取第3个工作簿、第4个工作表、第5行、第6列的数值赋给变量x,则可以用下面语句:
X=Workbooks(3).Worksheets(4).Cells(5,6)上面语句括号内的数字,都可以用变量代替。
例如全级Bshm个班、各班人数在数组Gbrsh中,考试科目有Kmsh个,科目名称在数组Kmmch中,全级各班的人数最值在Bzdrsh。
那么,用下面语句就可以把全级的成绩数据赋值给内存数组变量Qjshjk:
ReDimQjshjk(Bshm,Bzdrsh,Kmsh)Workbooks(3).ActivateFori=1ToBshmAW_ACTIVATE);End;上述只是介绍用Delphi简单实现几种常见的转场效果,如果要实现更复杂、生动的转场效果,Delphi也完全可以实现,但已超出本文的探讨范围,读者如有兴趣,不妨作进一步深入的研究。
(作者地址:
广东省高州市第二中学)◇罗仲文随着计算机的普及,很多老师用Excel作为统计学生成绩的工具。
Excel是电子表格软件,具有很强的录入、统计功能,同时也兼有数据库的功能。
如果只是即时手工输入一些统计的命令、公式,是不能充分发挥Excel的优势的。
如果在Excel中统计学生成绩时运用VBA,就能够如虎添翼,达到事半功倍的效果。
VBA英文全称是“VisualBasicforApplications”它包含了VisualBasic的大多数功能和优点,同时它又与Office中的各个应用软件,包括Excel的联系非常紧密。
它可以由Excel等应用软件控制,
一、通过Excel输入数据Excel的数据输入界面得天独厚,它本身就是电子表格,非常适合输入各种数据。
如果不用Excel作为输入界面,而是使用其它语言编制程序制作输入界面,程序这就很麻烦。
我们采取拿来主义,用Excel工作表做数据的输入界面。
Excel是办公软件Office中的一员,使用非常普遍。
作为一般的录入数据,-17.^87—_:
_.rnTE丁百-下BiF:
crrrrrrrrrrrTr一l!
字号语文数字英语政袷物理化学地理历史蕾乐体霄隽技信息2i1877882737068757785__!
■80566176∞91¨_i一36:
507174669872_至一49486647t陧秘82强7058r627981r899S6r27,.663576043fO筛761r9∞:
8792r3987865584042TO67r818s10.49595241髓72T3这种形式就跟平常的成绩登记表一样,学生很Access做输入界面还直截了全级各班的工作表按照班序号先后集中到一个工作簿中,很容易查阅。
各级每次考试一个文件,也很简洁。
这就是用Excel工作表做输入界面的好处。
-I-_---begin/窗体从右上到左下/从左下到右上滑动AnimateWindow(HandIe,AnimateWindow(Handle,2000,AW_HOR_二、利用VBA处理数据读取Excel中的数据VBA与Excel的各个单元格联系非常紧密。
为取出单元格的数据提供了非常简单、高效的手段。
Excel是电子表格软件,每个单元格都有唯一的标识。
“B3表示第B列、第三行那个单元格。
b.形式如:
表示第4行、第5列那这些单元格的前面都可以指明它是属于第几个工作簿、第几个工作表的单元格。
这样,我们就可以用编写程序的方法,把任何单元格的数值读出来举例来说,我们将第一个工作簿作为装载程序和输出结果的工作簿,第二个工作簿登记全级各班学生的姓名,第三个工作簿登记全级各班学生考试成绩的数据。
其中第二个工作簿单独登记学生姓名的好处是因为学生姓名相对稳定,不用每次统计成绩都输入一次,这个工作簿可以从入学用到毕业。
如果要提取第3个工作簿、第4个工作表、第5行、第Workbooks(3).Worksheets(4).Cells(5,6)上面语句括号内的数字,都可以用变量代替。
例如全级Bshm个班、各班人数在数组Gbrsh中,考试科目有Kmsh个,科目名称在数组Kmmch中,全级各班的人数最值在Bzdrsh。
那么,用下面语句就可以把全级的成绩数据赋值给内存数组变量Qjshjk:
ReDimQjshjk(Bshm,Bzdrsh,Kmsh)Workbooks(3).ActivateFori=1ToBshm上述只是介绍用Delphi简单实现几种常见的转场效果,如果要实现更复杂、生动的转场效果,Delphi也完全可以实现,但已超出本文的探讨范围,教育信息技术》电子信箱:
gddjzz@Worksheets(i).ActivatForj=1ToKmshFork=2ToKmsh+1IfKmmch(j)=Cells(l,k)ThenForL=1ToGbrsh(i)Qishjk(i,L,j)=Val(Cells(L+1,k》NextLEndIfNextk,j,i以上就是提取数据的方法。
执行这段代码之后,数组变量Qjshjk就取得了第三个工作簿的各个工作表的数据,也就是取得了全级成绩数据。
2.数据处理内存变量得到这些数据以后,就可以使用计算机高级语言的强大功能,对数据进行处理。
比如计算总分、平均分、累加、标准差、标准分等处理。
处理完毕,再输出到指定的工作表中。
3,VBA控件工具箱的运用程序运行的时候,需要人机对话,给计算机输入一些必要的参数。
在这方面,VBA所具有的VisualBasic可视化界面非常优秀。
点击工具栏上“视图”——“工具栏”,再勾选“控件工具箱”。
于是,“控件工具箱就出现在常用工具栏当中,它有“命令按钮”、“文本框”、“选项按钮”、“列表框”、“组合框”、“标签”等工具。
下面图示矩形框内便是摔件工具箱。
l模式转换JlA看代劂协令按钮l阻台框I编制程序的时候,可以利用这些工具,制作出很好的人机对话界面。
计算机接收到一些必要的参数以后,便可以进行运算了。
例如把控件放在第一个工作簿的第一个工作表。
点击“控件工具箱”“模式转换”,使其进入设计模式,然后再点击“命令按钮”在工作表上创建一个名为“刷新”的命令按钮。
在选中这个按钮的情况下,点击“控件工具箱”的“查看代码”便可以为这个按钮中创建如下程序代码:
PrivateSub刷新_Click()班数目Bshm=Workbooks(3).Sheets.Count这条语句可以测出第三个工作簿的工作表的数目,从而知道该年级有多少个班,将班数目放入变量Bshm中。
)各班人数ReDimGbrsh(Bshm)Qjrsh=0Fori=1ToWorksheets(i).ActivateGbrsh(i)=99-Application.WorksheetFunction.CountBlank(Range(¨a2:
a100”))(这条语句可以测出第三个工作簿的各个工作表的第一列从“a2”到“a100”有多少个非空格,从而知道该班的人数,将各班人数的值放入数组变量Gbrsh(i)中。
)统计全级人数Qjrsh=Qjrsh+Gbrsh(i)(这条语句可以将各班人数累加,得到全级人数Qjesh。
)NextiKmsh=20-Application.WorksheetFunction.”bl:
ul¨))(这条语句可以测出该工作表第一行从“b2”到“u2”有多少个非空格,从而知道该班的考试科目数,将其值放入变量Kmsh中。
)EndSub用同样的方法,在这个工作表上再创建一个名为ComboBoxl的“组合框”,在“刷新”命令按钮的代码中加上下列语句就可以为这个组合框添加4个项:
Workbooks(l).Sheets(l).ComboBoxl.Text=ӬWorkbooks
(1).Sheets(l).ComboBoxl.ClearWorkbooks(l).Sheets(l).ComboBoxl.Addltem
(1)全级成绩统计
(2)各班成绩分条Workbooks(l).Sheets
(1).ComboBoxl.Addltem(3)各班成绩表格Workbooks(l).Sheets(l).ComboBoxl.Addltem(4)多班总分名次有了这个组合框,使用者就可以选择这个程序要实现的功能。
用同样的方法,在这个工作表上再创建一个名为“确认”的命令按钮,在这个命令按钮中加入如下语句:
PrivateSub确认_Click()k=Workbooks(l).Sheets(l).ComboBoxl.Listlndex+1SelectCasekCasel打印表格1Case2团KmshFork=2+1IfKmmch(j)=Cells(l,k)ThenL=1Gbrsh(i)Qishjk(i,L,j)=Val(Cells(L+1,k》NextLEndIfk,j,i以上就是提取数据的方法。
执行这段代码之后数组变量Qjshjk就取得了第三个工作簿的各个工内存变量得到这些数据以后,就可以使用计算机高级语言的强大功能,对数据进行处理。
比如计算总分、平均分、累加、标准差、标准分等处理。
处理完毕,再输出到指定的工作表中。
3,控件工具箱的运用程序运行的时候,需要人机对话,给计算机输入一些必要的参数。
在这方面,VBA所具有的VisualBasic可视化界面非常优秀。
点击工具栏上“视图——工具栏再勾选于是,命令按钮文本框选项按钮列表框组合框标签等工具。
下面图示矩编制程序的时候,可以利用这些工具,制作出很好的人机对话界面。
计算机接收到一些必要的参数以后,便可以进行运算了。
例如把控件放在第一个工作簿的第一个工作表。
点击模式转换使其进入设计模式,然后再点击命令按钮刷新查看代码创建如下程序代码:
PrivateSub刷新_Click()班数目数目从而知道该年级有多少个班,将班数目放入中。
)各班人数Gbrsh(Bshm)Qjrsh=0Gbrsh(i)=99-Application.WorksheetFunction.a2:
a100”))“a2到“a100有多少个非空格,从Gbrsh(i)中。
)统计全级人数Qjrsh=Qjrsh+Gbrsh(i)NextiKmsh=20-Application.WorksheetFunction.bl:
ul¨))“b2“u2有多少个非空格,从而知道该班的考试科Sub用同样的方法,在这个工作表上再创建一个名在的代码中加上下列语句就可以为这个组合框添加4个Workbooks(l).Sheets(l).ComboBoxl.Text=Workbooks
(1).Sheets(l).ComboBoxl.ClearWorkbooks(l).Sheets(l).ComboBoxl.AddltemWorkbooks(l).Sheets
(1).ComboBoxl.AddltemWorkbooks(l).Sheets(l).ComboBoxl.Addltem为确认的命令按钮,在这个命令按钮中加入如下语句:
PrivateSub确认_Click()k=Listlndex+1SelectCasekCase打印表格1教育信息技术》电子信箱:
gddjzz@打印成绩分条Case3分班成绩表Case4多班总分排序CaseElseEndSelectEndSub上面的代码中,k的数值代表第几项功能。
每一个Case下面的那几个汉字,是子程序的名称,所起的作用是转到这个名称的子程序中去执行命令。
当按下这个“确认”按钮,程序便转跳到相应的子程序执行操作,实现使用者要求。
4.向Excel输出计算结果用表格输出运算结果方面,VBA在Excel中的表现也非常优秀。
要将内存变量的值输送到Excel工作表的单元格中,只是在单元格中取得数值的逆运算。
例如运行如下语句,就可以将内存变量的值输出到单元格中:
Workbooks(l).Worksheets
(2).ActivateFori=1ToGbkmshCells(2,i★2+4)=Kmmch(Gbkmx(i》Cells(2,i★2+5)=Gbgkkshrsh(Gbkmx(i》NextiFori=1ToGbkmshToGbrsh(Djb)Cells(j+2,i*2+4)=Dbchj(j,i)Cells(j+2,i*2+5)=Gkmc(j,i)Nextj,i上面第1行的作用是将第一个工作簿中的第二个工作表设定为活动工作表,下面语句的单元格Cells就是该活动工作表上的单元格。
代码中的各个变量、数组变量都是已经计算好的定值,运行之后就可以将内存变量的值输出到指定的单元格中去。
三、记录Excel操作的过程在VBA中,有一个令人叫绝的功能是:
使用宏记录器。
原则上,可以编写程序让Excel实现它所能够做的任何功能。
但是,有时候我们只知道手工操作实现这些功能而不知道如何编写实现这些功能的程序语句,那么,使用宏记录器就大显身手了。
编程者可以使用宏记录器将手工操作记录下来并转换成相应的程序语句,然后通过编辑、修改记录下来的程序语句,使其满足我们的需要。
举例来说,我们需要对一片单元格添加表格线,需要知道是那些语句可以实现这个功能。
用以下步骤:
打开第一个工作簿的第一个工作表,点击“工具”——“宏”——“录制新宏”如下图所示:
就会出现一个对话框。
在“宏名(M)”栏目中输入“打格”两个汉字,然后按“确定”键。
这时,工作表上就会出现一个“录制新宏”浮动窗口。
接着,开始手工操作:
选择工作表上的一片单元格、点击工具栏画表格线的工具。
手工操作完成之后,点击浮动窗口上的“停止录制”钮。
点击“工具”——“宏”——“宏”,就可以找到刚才录制的名为“打格”的宏。
点击“编辑”,就可以看到下面的代码:
Sub打格()Range(”D5:
H12”).SelectSelection.Borders(xlDiagonaIDown).LineStyle=xINone.LineStyle=xlContinuous.Weight=xIThin.Colorlndex=xIAutomaticEndWithEndSub以上代码是一个子程序,第2行的“Range(”D5:
H12”).Select是选择区域的语句,把它删去,就成了一个通用的子程序。
将选择区域的语句放在上一级(调用它的)程序中。
如果在程序中需要在某一个区域画表格线,可以用以下两行语句调用它:
Range(Cells(2,1),Cells(3+Bshm,Kmsh+l》.Select打格以上语句中的变量Bshm、Kmsh都是已经有确定值,第一句的作用是选择某一区域,第二句“打格”,就是调用子程序语句。
程序执行以后,就会在所选定的区域画出表格线。
综上所述,像统计成绩这样一般的数据管理工作,在Excel中运用VBA的确不失为简单、高效、实用的选择。
我使用VBA在Excel中成功地开发了“学生成绩管理”、“工资管理程序”、“课程表排课管理程序等软件,都收到很好的效果。
作者地址:
广州市广雅中学)打印成绩分条分班成绩表多班总分排序ElseSelect上面的代码中,k的数值代表第几项功能。
每一下面的那几个汉字,是子程序的名称,所起的作用是转到这个名称的子程序中去执行命令。
当按下这个按钮,程序便转跳到相应的子程4.向Excel输出计算结果用表格输出运算结果方面,VBA在Excel中的表现也非常优秀。
要将内存变量的值输送到Excel工作表的单元格中,只是在单元格中取得数值的逆运算。
Workbooks(l).Worksheets
(2).Activatei=1Cells(2,i★
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Excel 运用 VBA 统计 学生 成绩