利用EXCELVBA自动判分_第1页
利用EXCELVBA自动判分_第2页
利用EXCELVBA自动判分_第3页
利用EXCELVBA自动判分_第4页
利用EXCELVBA自动判分_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用EXCELVBAt动判分随着IT技术的不断普及,以关系数据库为基础的管理系统在日常工作中得以广泛应用,各类管理系统的应用教学也逐渐成为高校专业课程教学的重要内容,但如何对该类教学结果进行判分成为一个难以解决的问题。目前较常见的解决办法有两种:一种是通过开发模拟考试软件进行判分,即虚拟某一管理系统的界面和功能,按指定步骤完成操作即判断得分;另一种是专门开发某一管理系统的判分软件,根据操作结果来判分。但这两种方法均存在开发不易、灵活性差的问题。本文拟以用友U8的凭证和科目总账为例,通过取自数据库中的数据,利用EXCELSVBA匹配学生结果和标准答案来完成这一判分过程。一、相关工作簿为完成自动判

2、分过程,设计了pf.xls、bz.xls和xs.xls三个工作簿,pf.xls为判分信息文件,bz.xls为标准答案,xs.xls为学生结果,三表结构如图1、图2、图3。1 .判分信息文件:pf.xls如图1所示,该工作簿仅有main工作表,A列为学生姓名,C:H列为判分信息,其中D列为需判分的数据库表名,F列为该项满分值,G列为该表标准答案的总行数,H列为该表中需判分的列号。2. 标准答案文件:bz.xls如图2所示,该工作箭中的工作表与pf.xls中的D列相对应,如本例中有gl_accsum和gl_accvouch两个工作表。各工作表中A列为姓名,B列为得分,C列为组合结果,从D列开始是取

3、自标准答案的数据库该表的内容,B和C列为空。3. 学生结果文件:xs.xls如图3所示,学生结果文件结构同标准答案文件,区别在于各表内容取自学生数据库该表的内容。二、判分过程4. 取标准答案和学生结果先根据pf.xls中D列中各表名,用SQL语句取出标准答案和学生结果形成bz.xls和xs.xls两个工作簿(因各系统数据平台各异,为节省篇幅,该部分程序略)。5. 处理标准答案将bz.xls中各表的内容根据操作结果进行调整,把不构成判分的行删除,有多种答案的情况增加相应行。将标准答案各表中判分总行数填入pf.xls的G列,该表总得分填入pf.xls的F列。如第2行的分数和得分点表示gl_accs

4、um的标准答案中有55行,占总分的40分。6. 设置分值、判分列和判分项将各表的判分列填入pf.xls的H列,以半角逗号间隔。如“凭证”所对应H3的值“e,f,h,u,w,x”,表示根据gl_accvouch表中这6列数据判断凭证结果的正确性。7. 用程序判分在pf.xls中按ALT+F11进入VBE窗口后输入判分程序代码,执行后在xs.xls中新增一张”判分”表,表中内容为各学生的分项得分和总分。结果见图4。三、判分程序代码Sub判分()dpi=ThisWorkbook.Path&""fmax=Sheets("main").Range(&quo

5、t;d65536").End(xlUp).Row'需判分表数xmax=Sheets("main").Range("a65536").End(xlUp).Row'学生人数Workbooks.OpenFilename:=dp1&"bz.xls"Workbooks.OpenFilename:=dp1&"xs.xls"WithWorkbooks("xs.xls")OnErrorResumeNextApplication.DisplayAlerts=False.S

6、heets("判分").Delete.Sheets.Add.Name="判分"'增加一张判分表,再次运行前需先把该表删除.Sheets("判分").Range("a1:a"&xmax)=Sheets("main").Range("a1:a"&xmax).ValueEndWithFori=2Tofmax'逐表判分WithWorkbooks("pf.xls").Sheets("main")SN=Trim(.C

7、ells(i,4).Value)'表名sc=Trim(.Cells(i,5).Value)'表中文名mf=.Cells(i,6).Value'单项满分数fs=mf/.Cells(i,7).Value'每一得分点分数gs=Trim("="&Replace(.Cells(i,8).Value,",","2&"&"""_"""&"&")&2)'替换后的公式EndWithWit

8、hWorkbooks("bz.xls").Sheets(SN)'生成各项标准答案.Range("c2:c"&.Range("a65536").End(xlUp).Row).Formula=gsEndWithWithWorkbooks("xs.xls").Sheets(SN)'用match()学生各表判分xsmax=.Range("a65536").End(xlUp).Row.Range("c2:c"&xsmax).Formula=gs.Rang

9、e("b2:b"&xsmax).Formula="=if(iserror(match(C2,bz.xls"&SN&"!$C:$C,0),0,1)"EndWithWithWorkbooks("xs.xls").Sheets("判分")用sumif()分项统计学生得分.Cells(1,i+1).Value=sc&mf.Range(Cells(2,i+1),Cells(xmax,i+1).Formula="=round(SUMIF("&SN&

10、amp;"!A:A,判分!A2,"&SN&"!B:B)*"&fs&",2)"EndWithNextiWithWorkbooks("xs.xls").Sheets("判分")用sum()汇总学生得分至判分表第2列.Cells(1,2).Value="总分".Range(Cells(2,2),Cells(xmax,2).Formula="=SUM(c2:z2)"EndWithWorkbooks("xs.xls").CloseSavechanges:=TrueWorkbooks("bz.xls").CloseSavechanges:=TrueEndSub四、本办法的优点1. 简单易用本办法主要利用EXCE匪找函数的功能进行判分,只要用VBA通过SQL语句将数据取到工作箭中,完

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论