2008年4月 保定学院学报 JOURNAL OF BAODING UNIVERSITY Apr.2008 Vol-21 No.2 第21卷第2期 文章编号:1674—2494(2008)02—0070—03 基于VBA的成绩分析的实现及演示文稿的生成 程芳,沈红岩 (河北农业大学信息科学与技术学院,河北保定071001) 摘要:成绩分析是每次考试之后教师的首要工作,利用Ofifce内_ ̄VBA,实现了成绩分析,并且利用统计后 的数据自动生成PowerPoint演示文稿,极大地提高了成绩分析的工作效率. 关键词:演示文稿;Excel;PowerPoint;VBA 中图分类号:TP311.51 文献标识码:A 成绩分析是每一位教师在考试之后都必须做的一项重要工作,也是令大多数教师苦恼的一件事情.目前,手工统计数据工 作量大,而且经常会出现错误.并且统计数据生成后,再手工将数据做/ ̄PowerPoint演示文稿,此过程耗费时间长,效率低而随 着计算机的普遍应用,利用计算机自动实现数据统计及生成演示文稿势在必行. .利用VBA进行数据统计 这里以基本数据统计为例进行说明. 对每一学科的考试,教师一般需要统计的基本数据如图1所示. Excel提供了很多数据统计函数,在Excel中进行统计可以起到事半功倍的效果.因此,数据统计使用Excel为平台不失为明 智的选择. 为方便统计以上数据,可在Excel中建立如下3个工作表:“授课表”、 “学生分数”和“基本数据统计”.“授课表”存放教师姓名以及所授课班级, “学生分数”存放学生成绩,“基本数据统计”是要统计的基本数据的1个模 板,如图1所示、 2 一矗| 誊曩 宅毒 斑级 良好 §瀣 辫 总人数 及格 不及格 &卜60 1 教师姓名 等级 优秀 3 人数分布 畦 百分比 5 及格率 6 平均分 中等 100"-'90 89~80 憎~70 在统计数据前,首先需要进行一些准备工作.为了比较方便地统计一h 述数据,需要先将“学生分数”按班级排序,以便按照班级划分.可以通过下 面的语句实现: Sheets(”学生分数”).Select Selection.Sort Key1:=Range(”A2”),Orderl:=xlAscending,Header:=一 试卷最高分 试卷最低分 图1基本数据统计表 xlGuess,OrderCustom:=1,MatchCase:=False,Ofientation:=xlTopToBottom,一 SortMethod:=xlPinYin,DataOption1:=xlSortTextAsNumbers 然后,在统计每个班的各项数据时就比较简单了.只要知道每班的首尾行号就可以知道本班的范围,方法为顺次向下一行 比较.只要下一行的班级和本行的不一样,就可以确定1个班已经结束.下面代码可以实现这个功能. Sheets(”学生分数”).Select Dim firstl,Endl irfstl=2:endl=2 While fRange(”A”&endi).Value<>…’) If(Range(”A”&first1).Value<>Range(”A”&end1).Value)Then Sheets(”基本数据统计”).Select 数据统计相关代码 irstfi=endi Sheets(”学生分数”).Select Else endi:endi+1 收稿日期:2008—02—19 作者简介:程芳(1980一),女,河北秦皇岛人,工学硕士,助教 维普资讯 http://www.cqvip.com
程芳,沈红岩:基于VBA的成绩分析的实现及演示文稿的生成 End儿 71 Wend 接着,就可以进行数据统计了.具体实现方法如下: 1)统计总人数 统计总人数可以使用COUNTA()函数lI1.COUNTA()函数用来统计非空单元格的数目.这里要统计数据的范围为“学生分 数”图1中A列第firsti行 ̄lJendi一1行.因此,使用如下代码可以实现统计总人数(存放于F1). Range(”F1”).Value=”=COUNTA(学生分数! &firsti&”: &endi一1&”)” 2)统计各分数段人数分布 人数分布可以使用COUNTIF()函数.COUNTIF()函数用来统计满足给定条件的单元格的数目121.因此,可以将上面的代码 加以修改,用于统计人数分布.如优秀学生人数(存放于B3)如下: Range(”B3”).Value=”=COUNTIF(学生分数!C”&first&”:”&”C”&endi一1&”,…’>=90…’)” 在统计良好学生时,由于COUNTIF()函数不支持多重条件,如大于80分同uCtJ,于90分的情况是无法直接进行统计的,因 此,可以采用折中的办法,即先计算大于80分的人数,之后减去优秀的人数,即大于90分的人数,即可计算出良好的人数(存放 于c3).代码如下: Range(”C3”).Value=”=COUNTIF(学生分数!C”&fisrt&”:”&…C’&endi一1&”,…’>=90””)一B3” 中等、及格、不及格人数的统计方法与上述相似. 3)统计百分比 通过图1可以看出,百分比实际为各等级人数(如:B3、c3等)与总人数(F1)之比.如下方法可以实现优秀等级的百分比,其 他等级类似: Range(”B4”).Value=”=B3/F1” 4)统计及格率 及格人数可以使用COUNTIF()函数进行计算,方法如下: COUNTIF(学生分数!C”&fisrt&”:”&”C”&endi一1&”,…’>=60…’)” 接着,利用上述数据比上总人数(F1),即为及格率. 5)统计平均分 平均分可以通过AVERAGE()函数统计.AVERAGE()函数是用来统计算数平均值的函数.因此,平均分(存放于B6)可以使 用如下方法实现: Range(”B6”).Value=”=AVERAGE(学生分数!C”&fist&”:r”&”C”&endi一1&”)” 6)统计最高分、最低分 最高分、最低分可分别采用MAX()函数及MIN()函数统计.代码如下: Range(”E5”).Value=”=MAX(学生分数!C”&fisrt&”:”&”C”&endi一1&”)” Range(”E6”).Value=”=MIN(学生分数!C”&fist&Irl=”&”C”&endi一1&”)” 至此,数据统计工作均已完成,接下来,利用统计后的数据自动生成PowerPoint演示文稿,以便演示. 2利用VBA将前面的统计数据生成PowerPoint演示文稿 使用VBA生成PowerPoint可以分为以下几个步骤: 1)定义1 ̄"PowerPoint应用程序对象,用于打开1个PowerPoint文档. 2)在打开的PowerPoint文档中新建幻灯片. 3)在新建的幻灯片中加入文本的标题及表格. 4)保存并关闭PowerPoint对象. 以上各步具体实现方法如下: 1)定义PowerPoint应用程序对象 在VBA中,可以方便地建立Ofifce的各种组件的对象.为了与数据统计保持一致,仍在Excel中进行PowerPoint演示文稿的生 成.这里假定在Excel文档的同一目录存有1个文件名为demo.ppt的文档.定义PowerPoint对象并打开新的文档方法如下【 : Dim pptApp As Object Set pptApp CreateObject(”Powerpoint.application”) pptApp.Visible:True pptApp.presentations.Open ThisWo ̄book.Path&”\demo.ppt” 2)新建幻灯片 在PowerPoint中,幻灯片有很多版式.经过仔细比较后,发现“只有标题”版式比较符合要求,该版式编号为11.则新建幻灯片 的方法如下: Set pptPres pptApp.ActivePresentation 维普资讯 http://www.cqvip.com 72 Dim pptSlide 保定学院学报 2008年第2期 Set pptSlide=pptPres.slides.Add(pptPres.slides.count+1.1 1) 3)在幻灯片中增加标题及表格 由于新建幻灯片的版式为“只有标题”,因此,此幻灯片只有1个对象,就是位于幻灯片顶部的标题,编号为1.增加标题也就 是对pptSlide的第一个对象进行编辑,因此,可以使用下面的方法增加标题: With pptSlide.Shapes(1).TextFrame.TextRange .Text=”基本数据统计表” End WitIl 在幻灯片中新增表格可以利用addTable方法实现.若需要的表格为6行6列,则新增表格可利用下述方法实现: Set pptShape=pptSlide.Shapes.addTable(NumRows:=6,NumColumns:=6,Left:=30,一 Top:=80,Width:=660,Height:=320) 4)在表格中加入数据 表格建好以后,需要在其中加入数据.加入数据有2个步骤:设置数据源和在表格中填充数据. 设置数据源的方法非常简单1 I: Set rngdata=Range(”AhF6”) 在表格中填充数据可以采用循环的方法逐个单元格的填充.在填充时,数字只保留2位小数.方法如下: With pptShape.Table For irow=1 To.Rows.count For icolumn=1 To.Columns.count With.Cell(irow。icolumn).Shape.TextFrame.TextRange If lsNumeric(mgdata.Cells(irow,icolumn))=True Then .Text=lnt(rngdata.Cells(irow。icolumn) 100),100 Else .ext=rngdata.TCells(irow.icolumn) End If End With Next icolumn Next iow rEnd With 5)保存并关闭PowerPoint对象 pptApp.presentations(1).Save pptApp.Quit 至此,利用VBA自动生成演示文稿的工作全部完成. 本文利用VBA.设计了一个成绩分析及利用统计后的数据生成PowerPoint演示文稿的程序,利用此程序,可以很方便地完成 成绩分析工作,大大减少教师的工作量.另外,此方法同样适用于类似的各种数据的统计,只需在代码上稍加修改即可. 参考文献: [1]MSDN.使用Excel的演练[EB/OL].(2006—07—13)[2008-03—17].http://msdn2.microsoft.corrdzh-cn/library/d7f63219(VS.80) aspx・ [2]孙敬杰.ExcelVBAAI7与实例演练[M].北京:中国青年出版社,2005. [3]鄢灵,刘光连.利用VBA在Excel中实现教师教学质量的模糊综合评价[J].计算机与信息技术,2006(3):100—102. [4]李慧.用VBA开发基于Excel的数据统计[J].电脑知识与技术,2007(17):1325—1326. Realization of Results’Analysis and Generation of Presentation Based on VBA CH ENG Fang,SH EN Hong・yan (College of Information Science and Technology,Agricultural University of Hebei,Baoding 071001,China) Abstract:Analysis of resul ̄after each examination is the primary work for teachers.In this paper,by using the built-in VBA of office,analysis of results is realized and the PowerPoint presentation of statistical data Can be generamd automatically. Therefore,the eficifency of the analysis of results is greatly improved. Key words:presentation;Excel;PowerPoint;VBA
因篇幅问题不能全部显示,请点此查看更多更全内容