Excel自动实现

2024-09-18

Excel自动实现(精选10篇)

Excel自动实现 篇1

根据数据之间的关联规律,结合Excel的公式和函数,我们可以方便快速地从学号中提取相应的信息,然后自动填入到相应单元格中。

比如我们常常需要用Excel制作如下图所示的学生信息表。可以看出这张表格有来自不同年级、专业和班级的同学,由于这个原因,平时我们基本上都是手动输入这些信息的。

由于笔者在学校从事学籍管理工作,经常做类似的任务,知道位于第一列的学号是按一定规律编排的。为了提高工作效率,其实可以根据这个规律,结合Excel的公式和函数方便快速地从学号中提取出相应的信息,自动填入到相应的单元格中。当数据量比较大时,这种方法的优越性非常明显。

一、前提条件:了解学号的编排规律

利用这个方法的前提条件是学号是按一定规律编排的,在实际情况中几乎都是如此。例如,图1表格中学号的编排规律是:学号的第一位数代表生源地区,如果是“6”就代表“外县生源”,如果是“8”就代表“本县生源”。第二至第三位代表年级,第四至第六位代表专业,比如“101”代表“计算机应用”,“102”代表“电子技术”等。第七至第八位代表“班级”,比如“01”代表“一班”,“02”代表“二班”等,最后三位代表所在班级的班代码号。

二、使用IF函数建立公式从学号中提取信息

1、由于“学号”的数据类型为文本,因此设置A列的单元格格式的数据类型为“文本”。

2、选中C3单元格,建立根据学号得出学生生源信息数据的公式。在C3单元格中输入的公式为:“=IF(A3="","",IF(LEFT(A3,1)="6","外县生源",IF(LEFT(A3,1)="8","本县生源","无效的生源代码”)))”。这个公式的含义是:如果在A3中还没填入学号,就返回一个空字符串,如果填入的学号的第一位字符为“6”,则返回字符“外县生源”,如果第一位字符为“6”,则返回“本县生源”,如果是其他字符,就返回“无效的生源代码”。输入公式后,利用公式填充柄复制公式到下方恰当的单元格。后面请每次输入公式后,都复制到恰当的单元格。(函数具体用法请参阅Excel常用函数运用语法等相关参考书籍)

小提示:由于学号的数据类型为文本,而不是数值,所以在条件“LEFT(A3,1)="6"”中,要对数字6加引号。下面的情况同理。

3、选中D3单元格,建立根据学号得出学生年级数据的公式。在D3单元格中输入的公式为:“=IF (A3="","",MID(A3,2,2)&"级")”。其中MID(A3,2,2)的含义是,从A3学号中的第二位开始,提取二个字符。

4、选中E3单元格,建立根据学号得出学生专业的公式。在E3单元格中输入的公式为:“=IF(MID(A3,4,3)="110","计算机应用",IF (MID (A3,4,3)="111","电子技术",IF (MID(A3,4,3)"112","汽车驾驶",IF(MID(A3,4,3)="1 12","电算会计","无效=的专业代码")))”。这个公式的含义是:如果代表专业的字符串为“101”,则返回“计算机应用”;若是“102”,则返回“电子技术”;若是“103”则返回“汽车驾驶”,若是“104”则返回“电算会计”,若是其他情况,则返回“无效的专业代码”。

小提示:这里嵌套使用了IF函数,由于IF函数最多只能嵌套七层,因此最多可以根据代码返回八个学院。如果实际情况中需要使用的专业数目超过了八个,则可以使用自定义函数

三、使用自定义函数实现自动填充

具体操作步骤为:选择菜单“工具→宏→Visual Basic编辑器”命令,进入Visual Basic编辑窗口,然后利用“插入”菜单插入一个模块,自定义一个名为“academy”的函数,下面是函数的代码。代码规律非常明显,有更多的学院需要处理,在Case分支语句中加入即可。

代码输入完成后,保存一下,就可以在工作表中使用了。

5、选中F3单元格,建立根据学号得出学生班级的公式。在F3单元格中输入的公式为:“=IF(MID(A3,7,2)="01","一班",IF(MID(A3,7,2)="02","二班",IF(MID(A3,7,2)="03","三班","无效的班级代码")))”。如果需要处理的班极超过了八个,也可以用和上面相同的方法建立自定义函数。

6、最后选择G3单元格,建立根据学号得出学生班级学号的公式,这非常简单,在G3单元格中输入的公式为:“=IF(A3="","",RIGHT(A3,3))”。其中RIGHT(A3,3)的含义是:提取A3学号的最后三个字符。

到此为止,公式或者自定义函数全部建立完成,当输入这张工作表的数据时,只要集中精力把学号和姓名输入正确就可以了,后面其他字段的数据Excel公式会自动填入,感觉是不是轻松不少?

小提示:对于常常需要做这个任务的朋友,不妨把这个工作表保存为模板,以后就需要时,就可以信手拈来,直接使用了。这对提高完成重复性工作的效率,是非常有效的手段。

摘要:本文介绍了Excel公式和函数的自动填充功能,通过实例对Excel公式和函数嵌套及自定义函数的的使用做了详尽的阐述,对深入学习和掌握Excel公式和函数,提高工作效率有十分重要的作用。

关键词:公式和函数嵌套,自定义函数,自动填充

参考文献

[1]张煊.《Excel表格、图表与函数应用实例》,电脑报出版社,2008.

Excel自动实现 篇2

1.建立工作表

如图1,在Excel中建立学生名册和批处理工作表,在学生名册工作表A、B两列中分别输入学号、姓名。在批处理工作表A1单元格中输入“md”,A2单元输入“=学生名册!A1&&学生名册!B1”,拖动自动填充句柄到没有学生名单为止。

图1

2.导出批处理

在新建的Excel工作簿中,选择批处理工作表,单击“另存为”,在对话框的“保存类型”中选择“文本文件(制表符分隔)”,文件名任取(这里取Createdir.txt),

单击[确定]后,由于存为TXT文件后可能含有不兼容的功能,会出现警告窗口,按[确定]直到生成TXT文件。

图2

3.运行批处理

把Createdir.txt(如图2)改名成Createdir.bat,运行它就可以建立相应的文件夹。

图3

在实际操作中,我们可以把批处理命令中可变的量(如要建立的学生文件夹、要复制文件的目标学生文件夹)、不变的量(如上述中的命令md、命令参数)在Excel中各设为单独的一列,利用Excel的自动填充功能来实现重复操作,从而实现作业分发、上交等功能。图3所示就是把c: est下的作业(包含子文件夹和空子文件夹)复制到各考生文件夹。

利用EXCEL VBA自动判分 篇3

关键词:自动判分;管理信息系统;VBA

中图分类号:G434 文献标志码:B 文章编号:1673-8454(2014)02-0075-02

随着IT技术的不断普及,以关系数据库为基础的管理系统在日常工作中得以广泛应用,各类管理系统的应用教学也逐渐成为高校专业课程教学的重要内容,但如何对该类教学结果进行判分成为一个难以解决的问题。

目前较常见的解决办法有两种:一种是通过开发模拟考试软件进行判分,即虚拟某一管理系统的界面和功能,按指定步骤完成操作即判断得分;另一种是专门开发某一管理系统的判分软件,根据操作结果来判分。但这两种方法均存在开发不易、灵活性差的问题。本文拟以用友U8的凭证和科目总账为例,通过取自数据库中的数据,利用EXCEL和VBA匹配学生结果和标准答案来完成这一判分过程。

一、相关工作簿

为完成自动判分过程,设计了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列开始是取自标准答案的数据库该表的内容,B和C列为空。

3.学生结果文件:xs.xls

如图3所示,学生结果文件结构同标准答案文件,区别在于各表内容取自学生数据库该表的内容。

二、判分过程

1.取标准答案和学生结果

先根据pf.xls中D列中各表名,用SQL语句取出标准答案和学生结果形成bz.xls和xs.xls两个工作簿(因各系统数据平台各异,为节省篇幅,该部分程序略)。

2.处理标准答案

将bz.xls中各表的内容根据操作结果进行调整,把不构成判分的行删除,有多种答案的情况增加相应行。将标准答案各表中判分总行数填入pf.xls的G列,该表总得分填入pf.xls的F列。如第2行的分数和得分点表示gl_accsum的标准答案中有55行,占总分的40分。

3.设置分值、判分列和判分项

将各表的判分列填入pf.xls的H列,以半角逗号间隔。如“凭证”所对应H3的值“e,f,h,u,w,x”,表示根据gl_accvouch表中这6列数据判断凭证结果的正确性。

4.用程序判分

在pf.xls中按ALT+F11进入VBE窗口后输入判分程序代码,执行后在xs.xls中新增一张”判分”表,表中内容为各学生的分项得分和总分。结果见图4。

三、判分程序代码

Sub 判分()

dp1 = ThisWorkbook.Path & "\"

fmax = Sheets("main").Range("d65536").End(xlUp).Row '需判分表数

xmax = Sheets("main").Range("a65536").End(xlUp).Row '学生人数

Workbooks.Open Filename:=dp1 & "bz.xls"

Workbooks.Open Filename:=dp1 & "xs.xls"

With Workbooks("xs.xls")

On Error Resume Next

Application.DisplayAlerts = False

.Sheets("判分").Delete

.Sheets.Add.Name = "判分"

'增加一张判分表,再次运行前需先把该表删除

.Sheets("判分").Range("a1:a" & xmax) = Sheets("main").Range("a1:a" & xmax).Value

End With

For i = 2 To fmax '逐表判分

With Workbooks("pf.xls").Sheets("main")

SN = Trim(.Cells(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) '替换后的公式

End With

With Workbooks("bz.xls").Sheets(SN)

'生成各项标准答案

.Range("c2:c" & .Range("a65536").End(xlUp).Row).Formula = gsendprint

End With

With Workbooks("xs.xls").Sheets(SN)

'用match()学生各表判分

xsmax = .Range("a65536").End(xlUp).Row

.Range("c2:c" & xsmax).Formula = gs

.Range("b2:b" & xsmax).Formula = "=if(iserror(match(C2,[bz.xls]" & SN & "!$C:$C,0)),0,1)"

End With

With Workbooks("xs.xls").Sheets("判分")

'用sumif()分项统计学生得分

.Cells(1, i + 1).Value = sc & mf

.Range(Cells(2, i + 1), Cells(xmax, i + 1)).Formula = "=round(SUMIF(" & SN & "!A:A,判分!A2," & SN & "!B:B)*" & fs & ",2)"

End With

Next i

With Workbooks("xs.xls").Sheets("判分")

'用sum()汇总学生得分至判分表第2列

.Cells(1, 2).Value = "总分"

.Range(Cells(2, 2), Cells(xmax, 2)).Formula = "=SUM(c2:z2)"

End With

Workbooks("xs.xls").Close Savechanges:=True

Workbooks("bz.xls").Close Savechanges:=True

End Sub

四、本办法的优点

1.简单易用

本办法主要利用EXCEL查找函数的功能进行判分,只要用VBA通过SQL语句将数据取到工作簿中,完成判分表中相关设置,利用上述代码即可用本办法完成判分功能。

2.灵活性强

上述判分代码不受管理系统本身各表结构影响,具有通用性;同时需要进行判分的表、列和行均自行设计,可以根据需要随时调整。

3.结果可逆

在xs.xls的判分表中有学生的各项得分,各分项表中有得分明细,从中可以了解和分析学生的错误题目及原因,从而有效保证了教学效果。

以上方法在EXCEL2003、EXCEL2010和用友U8环境下测试通过。 (编辑:鲁利瑞)endprint

End With

With Workbooks("xs.xls").Sheets(SN)

'用match()学生各表判分

xsmax = .Range("a65536").End(xlUp).Row

.Range("c2:c" & xsmax).Formula = gs

.Range("b2:b" & xsmax).Formula = "=if(iserror(match(C2,[bz.xls]" & SN & "!$C:$C,0)),0,1)"

End With

With Workbooks("xs.xls").Sheets("判分")

'用sumif()分项统计学生得分

.Cells(1, i + 1).Value = sc & mf

.Range(Cells(2, i + 1), Cells(xmax, i + 1)).Formula = "=round(SUMIF(" & SN & "!A:A,判分!A2," & SN & "!B:B)*" & fs & ",2)"

End With

Next i

With Workbooks("xs.xls").Sheets("判分")

'用sum()汇总学生得分至判分表第2列

.Cells(1, 2).Value = "总分"

.Range(Cells(2, 2), Cells(xmax, 2)).Formula = "=SUM(c2:z2)"

End With

Workbooks("xs.xls").Close Savechanges:=True

Workbooks("bz.xls").Close Savechanges:=True

End Sub

四、本办法的优点

1.简单易用

本办法主要利用EXCEL查找函数的功能进行判分,只要用VBA通过SQL语句将数据取到工作簿中,完成判分表中相关设置,利用上述代码即可用本办法完成判分功能。

2.灵活性强

上述判分代码不受管理系统本身各表结构影响,具有通用性;同时需要进行判分的表、列和行均自行设计,可以根据需要随时调整。

3.结果可逆

在xs.xls的判分表中有学生的各项得分,各分项表中有得分明细,从中可以了解和分析学生的错误题目及原因,从而有效保证了教学效果。

以上方法在EXCEL2003、EXCEL2010和用友U8环境下测试通过。 (编辑:鲁利瑞)endprint

End With

With Workbooks("xs.xls").Sheets(SN)

'用match()学生各表判分

xsmax = .Range("a65536").End(xlUp).Row

.Range("c2:c" & xsmax).Formula = gs

.Range("b2:b" & xsmax).Formula = "=if(iserror(match(C2,[bz.xls]" & SN & "!$C:$C,0)),0,1)"

End With

With Workbooks("xs.xls").Sheets("判分")

'用sumif()分项统计学生得分

.Cells(1, i + 1).Value = sc & mf

.Range(Cells(2, i + 1), Cells(xmax, i + 1)).Formula = "=round(SUMIF(" & SN & "!A:A,判分!A2," & SN & "!B:B)*" & fs & ",2)"

End With

Next i

With Workbooks("xs.xls").Sheets("判分")

'用sum()汇总学生得分至判分表第2列

.Cells(1, 2).Value = "总分"

.Range(Cells(2, 2), Cells(xmax, 2)).Formula = "=SUM(c2:z2)"

End With

Workbooks("xs.xls").Close Savechanges:=True

Workbooks("bz.xls").Close Savechanges:=True

End Sub

四、本办法的优点

1.简单易用

本办法主要利用EXCEL查找函数的功能进行判分,只要用VBA通过SQL语句将数据取到工作簿中,完成判分表中相关设置,利用上述代码即可用本办法完成判分功能。

2.灵活性强

上述判分代码不受管理系统本身各表结构影响,具有通用性;同时需要进行判分的表、列和行均自行设计,可以根据需要随时调整。

3.结果可逆

在xs.xls的判分表中有学生的各项得分,各分项表中有得分明细,从中可以了解和分析学生的错误题目及原因,从而有效保证了教学效果。

Excel自动实现 篇4

方法一:

以上代码在创建一个新宏时输入,然后执行该宏即可。该段代码采用选择排序的方法,对当前工作簿的所有工作表名进行比较,每一趟从待排序的工作表中选出最小的工作表,顺序放在已排好序的工作表之后,直到全部工作表排序完毕。

方法二:

Excel自动实现 篇5

在进行表格数据的输入时,只要在表格右侧的空白单元格里输入数据,Excel 2007 将会为您新添加字段标题,并自动辨别和套用适当的名称与格式,

比如:在下图的工作表中已经填写了“七月”的数据,再在工作表右侧空白处继续输入北京地区的数据时,通过默认的自动填充或自定义列表的功能特性,Excel 2007 立即贴心并聪明地为您完成新字段“八月”的标题文字与格式设定。让您只需专注后续重要数据的输入,而不必花费任何心思在表格的格式设定与外观的操作上,

关 键 字:office

Excel自动实现 篇6

目前, Excel软件操作题是计算机能力考试和计算机等级考试的一个必考内容。操作题的阅卷主要依靠人工, 这就容易出现漏判、误判、给分不公正等问题。针对这一问题, 通过利用Office软件自带的VBA宏指令, 对Excel设计一个集判卷、成绩统计为一体的阅卷系统。该系统最大的特点是在改卷、成绩统计等方面实现了自动化, 减轻教师在各个考试环节的工作量。

二、Excel操作题自动阅卷技术分析

Visual Basic for Applications (VBA) 是Visual Basic的一种宏语言, 由微软开发, 并在其桌面应用程序中执行通用的自动化任务的编程语言, 主要用来扩展Windows的应用程式功能, 特别是Office软件。Excel自动阅卷软件通过使用VBA程序, 可以随意控制文档中的内容, 包括格式、图表、域等各个对象属性信息的获取, 还可以使用内置函数, 比对试题要求进行自动评分。根据我校现状, 要做到每场考试题目不一样, 而且方便出题、改卷, 我们采取了总框架不变, 根据题目、细则、专业, 微调程序以适应考场, 从而保证考试的公平、公正。

对Excel文档进行自动阅卷, 在以下方面要进行深入细致的研究:把Excel文档对象属性提取出来, 对考生的Excel文档操作结果进行判断;掌握对象属性的数据类型和数据结构、该对象与其他对象的关联及访问该对象的一些特殊设置;制定合理的评卷标准和策略, 使系统对Office文档的自动阅卷更客观。

三、Excel操作题自动阅卷软件的实现算法

Excel中对工作薄、工作表、菜单栏、工具栏、窗体、数据等一切可控制的元件, 都有相应的对象描述。可将Excel文件的阅卷内容分为判断结果、判断格式、判断操作、判断函数几种, 采用不同的评分算法, 从而获得合理的试题得分。下面主要介绍实现自动阅卷软件的相关算法。

1. 单元格格式比对算法。

在Excel中, 单元格格式操作是经常使用的, 包括设置单元格字体样式、数值格式、单元格对齐方式等。试卷操作题通常要求对指定区域进行格式设置, 设置后的结果自动保存在单元格区域中。考试中, 如果考生在对应的单元格区域操作错误, 或者只对部分区域进行操作设置, 使得在对该区域进行判卷时容易误判, 造成评分方式不合理。因此, 该软件采用单向比对的方法对知识点进行评分。

2. 单元格区域定位算法。

此类算法是由学生操作错误, 在工作表中多插入或多删除一行或一列, 使得整个数据与比对样本区域的位置错位。自动阅卷软件通过提取特定数值来判断单元格区域的对象, 在工作表中搜索某一单元格的Range对象, 如果找到该单元格, 就验证该单元格Range对象的Value值, 否则显示未找到对象。因此, 可以利用Current Region属性, 搜索得到单元格数值所在的区域范围, 在软件中的对应知识点区域对其阅卷评分。

3. 对工作表、图表、数据分析部分采用的算法。

Excel工作表考点包括插入、复制、移动、删除、重命名工作表等操作;图表部分的考点包含图表类型、图表格式、图表生成、图例格式等;数据分析部分的考点包括排序、筛选、分类汇总、数据透视表等。此部分评分的算法相对简单, 只要读出考生文档中的相关属性值, 比对Excel文档对象相关属性标准答案的关键词即可。

4. 基于规则的容错算法。

Excel考题中, 经常出现一个知识点会涉及多个操作步骤。比如, 以分类汇总为知识点, 首先按照题目要求对字段关键字进行升序或降序, 然后根据题目对所需的关键字进行分类汇总。判卷是需要在Excel单元格区域内比对至少两个属性中的对象。考生操作此类题目时, 如果操作顺序不同, 会造成最终结果错误不能得分, 这对考生不公平。对于此类型操作题的判分方法, 我们给出了一个合理的解决办法。知识点划分不细, 是此类型误判的主要原因, 一个知识点对应多个操作, 容易产生连带错误, 造成误判。因此在判分时, 将每一步操作分为一个知识点, 每个知识点对应一个分值。以上述分类汇总为例, 将该操作步骤细化为四个知识点, 一是主关键字排序, 二是主关键字的排序方式 (即升序或降序) , 三是分类汇总的关键字, 四是分类汇总的排序方式, 分别对应不同的分值。考生只要完成任一知识点的操作, 就可获得对应知识点的分值。此评分方法比较合理、公平, 可以有效地避免因连带错误产生的误判。

5. 利用兼容多种公式的正则表达式, 判定公式、函数表达式。

Excel的公式和函数是操作题的一个考核重点, 其结果的复杂性是误判产生的原因之一。此部分主要是考核学生掌握Excel的公式与函数情况, 对EX-CEL工作表中的数据进行计算, 实际上是利用公式或函数的表达式对单元格进行操作, 而非简单地计算结果值。正则表达式 (Regular Expression, 通常缩写成regex) , 是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。以Excel公式为例, “=sum (A1:b1) =sum (a2:b2) ”, 若以正则思维来匹配两个公式, 只要它符合“=sum (A[1-9]:B[1-9]) ” (其中[1-9]表示数字, 此字符串仅为表达正则思路) 即可。因此, 利用正则表达式, 可以匹配规律相同的同行或者同列公式, 能够克服检查无数单元格需要不同编程代码的瓶颈。在自动软件设置的参考答案中, 不可能将所需表达式的所有情况一一列举出来。因此, 单纯地采用公式表达式比对的方法, 很难实现对试卷的公正评判, 为此自动阅卷软件设计了一个给分算法。仍以上述例子的实现算法来分析:利用单元格对象的属性判断该单元格内的结果, 是采用公式或函数表达式, 还是常规数。如果结果为TRUE, 则进一步判分, 否则退出;给出根据试卷Excel文档中单元格内的数据, 比对用标准公式给出的相关数据计算结果值;给出考生在Excel文档中使用的公式, 得出相关数据的结果值;比对用标准公式计算的结果值和考生使用的公式计算得出的结果值, 结果相同给分, 否则为0分。上述算法, 可以解决软件不可能穷举所有公式表达式的问题, 进一步验证考生是否使用公式进行计算, 而不是在单元格内直接填入计算好的结果, 同时也能判断出考生使用的公式是否正确。

四、Excel操作题自动阅卷的实现

在设计Excel操作题自动阅卷软件时, 我们考虑到既能方便教师批改试卷, 也可以让学生自行判卷, 查看每个知识点的得分情况, 因此, 分为Excel文档批量改和Excel文档单个改两个部分。教师可以选择任意一张或全部考卷, 进行自动阅卷, 系统显示所需批改Excel试卷的份数, 自动批改Excel试卷。程序自动比对学生试卷与考题试卷, 完成评分过程, 改卷结束, 自动链接到Excel文档, 显示改卷结果分数, 保存到指定的文件夹路径, 保留试卷批改结果 (自动生成文件名专业-Excel.xls) 。学生可以指定所需批改的单个Excel文档 (在学生试卷内的某个Excel文档) , 显示每个考点的得失分结果。

五、结语

本文主要分析了利用VBA对Excel操作题进行自动阅卷评分所用的基本原理和方法。该系统在自动阅卷方面能够较好地满足计算机基础考试中的自动阅卷要求, 但其在某些方面还需要做进一步的改进, 以期能够日趋完善和稳定。这对计算机应用能力考试的阅卷工作, 是一件十分有意义的事情, 而且可以对其他考试实现自动阅卷提供有益的借鉴。

摘要:Excel操作题是计算机基础考试的一个重点考核内容。为了提高Excel操作题的阅卷效率, 结合VBA技术, 本文设计并实现了通过Excel对象的定义及相应方法、属性的调用与获取, 给出VB编程实现Excel自动判卷的基本原理与方法。测试结果表明, 系统运行良好, 评分准确可靠, 可以有效提高教师的阅卷效率, 为其他考试阅卷系统的设计提供参考。

关键词:VBA,自动阅卷,操作题,Excel对象

参考文献

[1]张量, 詹国华.开放式、智能化计算机考核阅卷系统的设计与实现[J].计算机工程与应用, 2011, 37 (10) :147-150.

Excel自动实现 篇7

工程建设企业, 在工程竣工时, 要按合同规定的格式来打印压力管道焊接记录。按管线号焊缝焊接记录来分别打印出。平时主要依靠手工进行复制粘贴操作, 将数据填入到指定格式的表格。如果有成千上万条记录, 反复的手工操作劳动强度大, 容易出错。

2 设计思路

通过用Excel2007的VBA编程, 让不同管线的焊接记录分页自动填进模板输出, 这样做可以避免错误, 将手工从繁重的重复工作中解放出来, 真正实现计算机高效率办公。通过VBA编程 , 自动从焊接记录文件中读取记录 , 对焊接记录所在管线号的分析判断, 将数据自动填充到模板格式中, 然后进行自动分页及格式设置。经过编程摸索, 在Excel2007中可以实现上述功能。

3 制作方法

3.1 关键技术

在Excel2007中, 默认没有加载开发工具菜单, 需要点击左上角Office按钮后, 点Excel选项按钮, 在常用选项中勾选“在功能区显示开发工具选项”, 然后在菜单中会出现“开发工具”菜单, 同时在“信任中心”选项中, 勾选启用宏设置。点开发工具/设计模式后, 点插入按钮后, 将命令按钮拖拽到在Sheet1界面, 并修改按钮的标题字体颜色等属性。然后双击命令按钮进入VBAProject代码编写界面, 如图1所示。

3.2 实现功能

程序的结构设计如图2。程序的主要功能是通过代码调用焊接记录Excel文件并将焊接记录按不同管线号自动分页放在Sheet2中。

4 程序代码

4.1 ThisWorkbook

4.2 Sheet1 表中命令按钮

4.3 数据自动填充分页模块 print1

4.4 对 sheet2 表格按模板行高列宽进行设置

5 运行说明

当用户的模板有变动时, 只需要对代码中涉及到行数、列数以及每页要打印的记录数的值在代码中做更改就可以了。按 目前焊接记录中12条不同管线, 共106条焊接记录按手工进行填充需要半个小时左右, 按自动生成执行不到6秒。

6 结语

Excel自动实现 篇8

当前很多数据都存储在数据库文件中, 而用户却愿意用excel操作数据, 所以很多系统需要把数据转换成excel表, 本文提出采用了Java语言反射机制结合POI实现内存数据自动导出excel表的功能, 在实践中表明使用方便, 节省大量代码、提高了开发效率。

2 基于Java反射机制与POI自动导出实现

2.1 Java反射机制

在运行状态中, 对任意类都能知道此类的所有属性和方法;对于任意对象都能够调用它的任意方法;这种动态获取的信息以及动态调用对象的方法称为反射机制。这种机制允许程序在运行时看透过反射机制的API取得任何一个已知名称的class的内容信息。Java语言中有四个类, Class类、Constructor类、Field类、Method类, 通过他们可以在程序运行时, 取出对象或者类的属性和方法的名称, 并执行其方法。

2.2 POI介绍

POI是Apache软件基金会管理下一个开源Java项目, 主要提供对微软文件 (word、Excel等) 进行读写的Java API类。目前比较成熟的是HSSF (Horrible Spread Sheet Format) 接口, 通过HSSF, 开发人员可以用纯Java代码来读取、写入、修改Excel文件, 可操作单元格中的数据。POI操作excel常用的类有HSSFWorkbook类、HSSFSheet类、HSSFRow类、HSSFCell类, 通过上面四个类及其中的方法就可以对Excel表操作。

2.3 数据自动导出excel表流程

当用户发送请求获取到满足条件的数据集合之后, 就进行数据自动导出excel表操作, 算法如下:

算法:Export Excel

输入:title (sheet名称) , headers[] (标题集合) , dataset[] (数据集) , out (引用) (输出流)

输出:out (excel表文件)

(1) 通过HSSFWorkbook类、HSSFSheet创建工作薄和sheet表;

(2) for (String str:headers) 遍历标题集合, 取出标题写excel单元格的第一行;

(3) 采用Java反射机制获取类对象属性集合;

(4) 遍历dataset数据集合, 遍历类对象属性集合, 获取类对象的名称第N个属性名称, 获取类对象第N个属性对应方法对象, 执行该方法, 并且存储获取的值, 创建单元格, 把获取的值写入单元格中;

(5) 写入输出流。

通过算法Export Excel, 输入必要的参数, 执行后就能把内存数据转换成Excel表。

2.4 自动导出代码实现

本程序 (上面部分代码省略) 已经在实际的项目中使用, 也在其他的项目中使用。提供了代码重用和开发效率。

3 结语

本文提出了基于Java反射机制与POI技术的结合, 实现了内存数据转换excel表, 并且在实际多个项目中得到应用, 通过该方法可以快速的实现Web中或者Window应用中数据导出, 它可根据用户的实际需求导出相应的实体对象灵活性较强, 代码的复用性, 节省了开发的时间和成本, 也可推广至C#反射机制与NPOI技术实现导出功能。

参考文献

[1]杨学明, 梁高峰.基于POI的JSP动态报表生成技术广西大学学报 (自然科学版) , 2007.9:401-403.

[2]尹松强, 傅鹂.Java反射机制探究软件导刊, 2008.10:85-87.

Excel自动实现 篇9

随着电子技术的不断发展, 数字多用表 (以下简称数表) 的性能日益提高, 应用也越来越普及, 不论是航空航天等科研前沿, 还是平常百姓家, 几乎随处可见其影子。数表一般都有五大基本功能:交、直流电压测量功能、交、直流电流测量功能, 以及电阻测量功能。有的数表还有其它辅助功能, 如频率测量、电容测量、三极管引脚测量等。这些测量功能一般都通过其圆形转盘上的指针来选择, 并与量程一一对应。数表对其测量结果必须满足一定的准确性和可靠性, 否则可能导致危险事故, 甚至危及生命和财产, 因此, 必须对其进行计量检定。

对数表计量检定后的数据处理, 目前基本上都是通过人工计算来完成, 这种方法存在较多弊端。首先, 效率低。复杂计算一般都借助于计算器来完成, 由于对正负数字和运算符号等的人工输入速度限制, 导致人工运算效率低下。其次, 出错率高。数表检定中某些测量值有正负之分, 有频率影响, 加上基本量程和非基本量程等诸多因素, 一块数表需要测量的数据就达上百之多, 对其进行相关处理又导致计算量成倍增加, 这些巨大而繁琐的计算, 人工处理时很容易出错, 从而导致错误结论。最后, 制约了数表检定的自动化发展。数表检定的自动化是大势所趋, 人工计算法显然不能顺应这一发展趋势, 若不能有效解决这一瓶颈就很难实现自动化检定。

2 实现过程

数表检定方法是在完成基本信息录入后, 在被检数表和标准检定装置的测量项目和范围的交集内, 由标准检定装置输出一个标准值x0 (视为真值) 给数表, 数表显示值x即为测量值, 从而可以求出绝对误差t=|x-x0|;再根据数表的技术资料查找并计算出其准确度等级p (一般用在各个量程内读数的百分比与显示字数的组合来表示) ;当t≤p时, 此数据合格, 否则不合格并做出标识。如此循环直到测量结束, 若所有数据都合格, 则最终给出“所检项目合格”的检定结论, 反之注明不合格项, 下面是具体实现过程。

2.1 数表检定前的基本信息录入

由于每一块被检数表的用户、生产厂家、型号、编号等基本信息都不同, 因此在开始检定前必须对这些信息进行登记和录入。同时也应该有标准检定装置的相关信息, 如名称、型号, 编号、证书编号、有效日期以及检定的项目、范围、不确定度等。另外还应该有检定机构的名称、地址、联系方式以及检定所依据的文件等信息。录入完这些基本信息后, 就可以进行数据测量了, 下面重点探讨实现测量数据的自动处理过程。

2.2 测量数据的自动化处理

数据处理的流程如前所述, 为此需要求出任何一个测量值的分辨力 (字) 从而求出被检数表的准确度、测量误差、合格与否的判断。

2.2.1 求任意测量数据的分辨力及准确度

分辨力计算。因为对任何一个数都可以取其整数部分, 若取整前后的长度不发生变化, 那其一定是整数, 否者就是小数, 而且因其小数点占一位故取整后的长度至少减短两位。因此借助Excel的相关函数就可以确定出此数的末位一个单位的值, 即此数的分辨力或者一个字的大小。

2.2.2 测量误差的计算及其结果判断

若标准值x0与测量值x极性相同, 则绝对误差t=|x-x0|;若极性相反, 则t=|x+x0|。再将其与上面求出的p相比较, 从而给出合格与否的判断。对直流电压和直流电流需要正负极检定, 只有两个数据同时满足以上条件时才算合格, 因此还需要借助Excel的AND函数对其判断。

2.3 最终检定结果的判定

在Excel中通过选定区域并拉动鼠标可以复制一类公式到相应区间, 而且除绝对引用外系统都自动调整各个变量, 这为编辑公式带来了很大方便。实际工作中一般都将被检数表同一个量程放在一个区间, 以便于参数调用。当所有测量都完成后, 需要对各个测量数据合格与否进行统计, 从而在醒目处给出最终检定结果, 这一功能可以通过查询函数来实现:

最终检定结论=IF (COUNTIF (K53:K225, "*不合格") =0, "所检项目合格", "除*外, 所检项目合格") ;

式中, COUNTIF (K53:K225, "*不合格") =0是对K列53行到225行中信息为"*不合格"的统计数目, 若其值为0, 则全部测量数据合格, 给出“所检项目合格”的结论, 否则“除*外, 所检项目合格”, 查找范围应根据实际情况而适当调整。

另外, 借助Excel的日期函数, 可以自动实现检定日期和有效日期更新, 尽量减少人为因素, 以提高检定证书的客观公正性:

检定日期=TODAY () ;数表检定周期为一年, 故而

有效日期=DATE (YEAR (TODAY () ) +1, M ONTH (TODAY () ) , DAY (TODAY () ) -1) 。

3 实验验证

表1是研究过程中生成的某数表检定结果, 其中有部份测量数据作为调试用而做了一定修改。从表1中不难看出, 本文计算方法和编写程序正确, 数据处理的正确率达到了100%。

4 小结

本文依据相关的数表检定规程, 在传统数表检定方法的基础上, 应用Excel强大的数据处理功能实现了数据的自动化处理, 从而提高了检定工作的效率, 消除了数据处理中的错误, 也为进一步研究和实现数表检定的完全自动化提供了重要参考。

摘要:针对数字多用表计量检定过程中需要处理大量数据及其人工计算的种种弊端, 本文应用Excel强大的运算能力对测量数据进行自动化处理, 并通过实验论证了其处理结果的可靠性和准确性, 从而提高了数字多用表检定工作的效率和检定结果的正确性, 为实现数字多用表检定的完全自动化提供了重要参考。

Excel自动实现 篇10

1 利用EXCEL VBA登记记账凭证数据库自动化处理的工作思路

(1) 完成记账凭证格式设计、模板保护、复制、重命名, 为下一步做好准备;

(2) 完成实际工作中记账凭证的填制和审核, 每张凭证中的数据即是登记记账凭证数据库的数据源;

(3) 完成“记账凭证数据库”工作表的格式设计, 此表即是目标数据;

(4) 编写宏 (EXCEL VBA) 代码实现登记“记账凭证数据库”自动化处理;

(5) 编写宏代码删除登记“记账凭证数据库”时产生的空行, 以方便记账 (作者注:记账另文介绍) 。

2 利用EXCEL VBA登记记账凭证数据库自动化处理的主要步骤

(1) 参照本人文章《EXCEL下会计记账凭证复制自动化处理的实现》的前四步完成记账凭证格式设计、模板保护、复制、重命名, 为下一步做好准备。

(2) 完成实际工作中记账凭证的填制和审核, 每张凭证中的数据即是登记记账凭证数据库的数据源。

(3) 完成“记账凭证数据库”工作表的格式设计。 (1) 在已经填制和审核好的记账凭证所在工作簿的最前面插入空工作表, 命名为“记账凭证数据库”; (2) 在A1、B1、…M1单元格分别输入“日期、凭证号、…附件”, 调整各列宽度以恰好显示其内容。

(4) 编写宏代码实现登记“记账凭证数据库”自动化处理。

Sub刘钦登记记账凭证数据库的宏 ()

(5) 编写宏代码删除登记“记账凭证数据库”时产生的空行。由于每一张记账凭证中并非都是简单会计分录 (即:每笔会计分录中的借、贷方的行数都不固定且任一方都必须满足最少一行最多三行的条件) , 再加之在登记“记账凭证数据库”时, 笔者采用了除会计分录所在行以外的凭证其他内容都在“记账凭证数据库”的四行上进行四次重复登记 (而每行会计分录所在行的内容只在“记账凭证数据库”的对应行上进行一次登记) 的登记方法, 因此, 这种做法势必会在登记“记账凭证数据库”时产生“无会计分录的空行”。该空行不能任其存在, 必须编写宏代码予以删除。

Sub刘钦删除记账凭证数据库中空行的宏 ()

(6) “保存”已经处理完的数据。

3 结束语

以Excel VBA为开发平台, 结合ADO数据库访问技术和SQL语言, 可以建立Excel与各种数据库的联系, 从而可以开发出满足不同用户特殊需要的应用系统, 使Excel的应用领域更加广阔, 开发的应用系统更加实用。

限于文章篇幅以及作为会计教学工作者的实际, 本文只是从本人的教学实际中择其第二例进行了很简单的阐述, Excel VBA在会计工作中的更多应用将在本人以后的文章陆续介绍。

摘要:会计人员可以利用EXCEL VBA的强大功能实现各种经常性、重复性工作的自动化处理, 从而大大提高其工作效率。本文以登记记账凭证数据库自动化处理为例介绍了EXCEL VBA在会计记账自动化处理中的应用。

关键词:EXCEL VBA,账凭证数据库,自动化处理

参考文献

【1】Microsoft Corporation:Microsoft Excel帮助文件.

【2】于向辉.张国平.Excel在财会管理中的应用.北京:中国水利水电出版社, 2004.

上一篇:教学本质下一篇:中学班主任德育工作