网站首页  词典首页

请输入您要查询的论文:

 

标题 基于VBA的学生成绩数据重排功能的设计与实现
范文

    罗良夫+张丽

    摘要:目前教务系统的学生成绩一般采用Excel文件进行保存,且成绩往往是按课程进行录入,每行数据只有学生一门课程的成绩信息,导致学生的成绩信息分布的很分散,为了能够在一行中显示一名学生的所有成绩信息,该文采用Excel自带的VBA设计器,开发了一个学生成绩数据重排功能,该功能可以快速对学生成绩信息进行横向重排,使教务管理人员能够直观地观察到学生的整体学习情况,并且对中途转入或转出的同学也可以进行成绩统计。

    关键词:Excel;VBA;数据重排

    中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)35-0129-02

    1 VBA概述

    随着计算机技术的飞速发展,办公软件已经成为人们工作生活的重要工具,其中office系列软件是目前主流的办公软件,office软件已经集成强大的办公类功能,但有些自定义的功能,通过office集成的功能不能直接实现,这时我们需要借助VBA来进行设计实现。

    VBA(Visual Basic for Applications)是微软开发出来的一种宏语言,是在桌面应用程序中执行通用的自动化(OLE)任务的编程语言,用来扩展Windows的应用程序功能,特别是Microsoft Office软件。VBA是Office的内置工具,主要包括开发环境及开发语言两部分。VBA能够对Office文档中的属性与状态进行识别[1],实际上VBA是一种用于开发应用程序的Basic语言,VBA是基于VB发展而来的,VBA与VB有着相似的语法结构,VBA是Office系列软件集成的功能,所以不能像VB一样生成独立的应用程序,VBA需要基于一个主应用程序,VBA通过对象库来控制应用程序,所以只要提供了对象库的应用程序都可以使用VBA[2],比如Excel、Word、Powerpoint。

    2 Excel VBA常用功能介绍

    本文主要对学生成绩的Excel文件进行数据处理,以便教务处或老师对学生的学习情况有一个全面的了解[5]。Excel VBA是内嵌于Excel的程序开发语言,在Excel中可运行VB程序完成较复杂的工作,为了解决学生成绩的重排问题,需要使用以下功能:

    1) 打开VBA代码编辑器

    方法一:选择开发工具选项卡,单击Visual Basic按钮

    方法二:用鼠标右键单击工作表标签 ,在弹出的菜单中选择查看代码选项

    方法三:按下快捷键Alt+F11

    2) 创建事件过程

    打开VBA代码编辑器后,在工程资源管理器窗口中,双击需要编程的工作表名,在右侧的代码窗口中,首先在对象下拉列表框中选择过程类型,本文需要对工作表操作,所以选择worksheet类型,然后在右侧事件窗口中选择事件BeforeDoubleClick。

    3) 单元格的选择

    对于单个单元格的选择,可以使用工作表标签名(行标,列标)的方法获取单元格的数据,其中行标与列标均采用数字形式,且均从数字1开始编号,工作表中列标对应数字1。

    对于连续的多个单元格范围,可以使用Range(“起始单元格坐标,结束单元格坐标”),其中起始单元格对应于范围中左上角的单元格,结束单元格对应于范围中右下角的单元格,坐标中行列采用数字,列标采用字母形式。

    4) 判断单元格是否为空

    Excel数据中往往会出现空白单元格,可以使用IsEmpty(单元格地址)进行判断,如果指定单元格内容为0、空字符串时函数返回true,否则函数返回false。

    对于空白单元格,还可以使用表达式(单元格=0)进行判断,单元格内容为空、0、空字符串时结果为true,否则计算结果为false。

    5) 删除单元格内容

    VBA中需要删除Excel内容时,可以使用对象.delete()函数实现,其中对象可以是若干行rows(i)、若干列columns(i)、单元格范围range(单元格范围)、某个单元格cell(行标列标)。

    3 数据重排功能算法的介绍

    目前大多数教务系统的学生成绩数据存储在Excel中,由于学生成绩主要是按课程进行录入保存的,导致学生各门课程成绩分布的非常散,如果想查询某名学生所有的课程成绩时非常的不方便。

    为了能够方便地查询某名学生的所有课程成绩,本文采用Excel的VBA技术对数据进行重排,使按课程排列的成绩信息,变成按学生排列的成绩信息,本功能的实现主要分为以下两个阶段:

    1) 遍历成绩Excel数据表,对每一条成绩记录进行处理;

    2) 从每条被处理记录的下一条记录开始,比较学号字段是否相同;

    4) 如果值相同的话,则将成绩与课程名添加到当前记录的后面,并将学号值改成-1;

    5) 继续往下判断每一条成绩记录,直到数据表末尾;

    6) 再次遍历成绩Excel数据表,遇到学號值为-1的记录进行删除。

    4 数据重排功能关键代码

    1) 学生成绩数据的添加

    i = 2

    While (Not IsEmpty(Sheet1.Cells(i, 1)))

    j = i + 1

    k = 7

    While (Not IsEmpty(Sheet1.Cells(j, 1)))

    If (Sheet1.Cells(i, 1) = Sheet1.Cells(j, 1) And Sheet1.Cells(j, 1) <> -1) Then

    Sheet1.Cells(i, k) = Sheet1.Cells(j, 3)

    Sheet1.Cells(i, k + 1) = Sheet1.Cells(j, 5)

    Sheet1.Cells(1, k) = "总评成绩"

    Sheet1.Cells(1, k + 1) = "课程名称"

    Sheet1.Cells(j, 1) = -1

    k = k + 2

    End If

    j = j + 1

    Wend

    i = i + 1

    Wend

    2) 删除重复的学生成绩

    i = 1

    While (Not IsEmpty(Sheet1.Cells(i, 1)))

    If (Sheet1.Cells(i, 1) = -1) Then

    Sheet1.Rows(i).Delete

    Else

    i = i + 1

    End If

    Wend

    5 结束语

    目前教务系统中的学生成绩老师按照课程进行存储,不能直观的了解学生所有课程的学习情况,为了解决这一问题,本文采用Excel自带的VBA技术,将纵向排列的课程成绩列表,改变成横向的学生成绩分布,且该功能能兼容了转专业同学的情况。

    参考文献:

    [1] 唐学军. VBA的OFFICE操作题自动批阅技术的实现[J]. 软件, 2014(2).

    [2] 李晓玫. Excel中的VBA程序设计[J]. 四川师范大学学报, 2004(7).

    [3] 李小遐. Excel VBA在办公自动化中的应用[J]. 电子测试, 2014(11x):105-106.

    [4] 张金沙. 基于VBA成绩自动上传系统的开发[J].电脑知识与技术,2016(11).

    [5] 高世萍. 基于Excel函数及Excel VBA的成绩分析[J]. 智能计算机与应用, 2011(1):18-19.

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/10 16:03:37