论文部分内容阅读
摘 要:Excel通常被人们用来当制作表格的工具使用,有时也被充当各种数据转换的中间媒介。本文通过实例向大家介绍了如何通过Excel内置的Visual Basic及其功能强大的函数来完成其功能集中无法实现的功能,这对Excel来说是个强有力的补充。
关键词:Excel表;Visual Basic;ActiveX控件
中图分类号:TP391.13
众所周知excel早已经成为一款重要的办公软件,它可以进行数据处理、统计分析已经辅助决策的操作,该软件已经渗透到各个领域。在实际工作中,excel电子表格总是伴随我们身边的,各种报表、台账等。然而我们经常用到的excel的功能也仅限于编辑、查找、筛选、图表等常用的功能。虽说excel提供了丰富的功能,但同时对多张电子表格的数据进行比较,以及进行特殊处理,却仍无法实现,又该如何去做呢?通常有的人会想到把excel中的数据转换为其他格式的数据,如.dbf格式,利用foxbase去处理,也有的会利用Aaccess来处理,采用诸如此类的方法。这种做法既费时、费力而且效率也不高。本人在实际工作中同样遇到了这样的问题,通过利用Excel内嵌的Microsoft Visual Basic来处理多张电子表格的数据,无需对excel的数据进行任何转换,即可轻松完成各表格数据的分析、处理。
1 Excel内嵌Visual Basic功能简介
通过Excel的快速访问工具栏添加设计模式、插入控件、VisualBasic代码编辑器等相关功能到工具栏,便于快速进入和退出设计模式和编辑代码。
内嵌的Visual Basic具有表单控件和ActiveX控件两种。运用表单控件可以根据需要设计出更美观的用户界面。本文结合实际的应用着重介绍ActiveX控件,它能够在Excel表单中插入所需的ActiveX控件,使用起来方便、快捷,可在Excel的sheet页面中直接点击执行。
Visual Basic具有按钮、组合框、复选框、列表框、标签等ActiveX控件,可满足任何数据处理功能的需要。内嵌的Visual Basic具有面向对象的特点,所有控件的各种属性设置方便。
2 Excel数据处理技巧
Visual Basic提供了大量常用函数,运算函数、字符串函数、日期函数等。在此简单介绍几个操作Excel单元格的相关命令:
获取单元格的值、填写单元格的值可以用Sheet1.Cells(m,i).value = "地址重复"来实现;
改变某单元格字的颜色可用Sheet1.Cells(m,i).Font.ColorIndex = 7,改变此值就可改变字的颜色;
获取Excel表的行数可用这个方法获取Sheet1.UsedRange.Rows.Count;
通过字符串函数Mid()可以获取Excel任意单元格内的任何字符,Mid((Sheet1.Cells(i,j).Value),x,y);
特别需要注意的是在处理其他文件时往往一个汉字相当于2个字节,而在Excel表中一个汉字的字节数位1,这在计算字符串的长度时尤为重要。而在对excel表中的数据进行处理时,往往会遇到如何判断单元格的内容是否为汉字或字符,可以运用Asc()来对单元格中是否是汉字进行判断,如果Asc(Asc(Mid(Sheet2.Cells(2,5).Value,a,1)))的值小于0则表明为汉字,否则单元格的内容不是汉字。
了解这些值的算法后就可以对excel的数据随心所欲的处理了。
3 Excel数据处理实例
本实例是工作中需要对用户数据表、标准地址表、Loid三个Excel表中的数据进行处理,把用户数据表中的地址进行标准化,而后与标准地址表中的地址进行比较,如果相同则把相应用户资料表中的联系人、联系方式等内容拷贝到标准地址表中所对应的列中,把用户资料表中地址相同的用特殊的颜色表示出来,最后比较标准地址表与Loid中的地址相比较,如果相同且标准地址表中联系人列不为空,则在loid表中的某列标记出“有”,至此数据的处理过程结束。
需要处理的数据表包括:用户数据表、标准地址表、Loid表如下:
表1 用户资料表(sheet1)
业务号码 联系人 联系方式 O侧地址 整理后标准地址 修正后O侧地址
225918597 刘某 138****7015 北区西里11-1-102 11-001-0102 11-1-102
225970303 王娜 159****5336 北区西里11-1-201 11-001-0201 11-1-201
225926408 张春花 136****8434 北区西里11-1-202 11-001-0202 11-1-202
表2 标准地址表(sheet2)
业务号码 联系人 联系方式 标准地址
中心站区中心站北区西里11-001-0102
中心站区中心站北区西里11-001-0201
中心站区中心站北区西里11-001-0202
表3 Loid表(sheet3)
标准地址 LOID
中心站区中心站北区西里11-001-0102 000060830000000000041925
中心站区中心站北区西里11-001-0201 000060830000000000041926
中心站区中心站北区西里11-001-0202 000060830000000000041927
首先新建一个Excel文件,分别把用户数据表、标准地址表、Loid表放入sheet1、sheet2、sheet3中,新建sheet4作为放置VisualBasic控件的表单,这样使数据与控件分隔开来,便于对处理后的数据进行核实、观察与检验,点击工具栏中的设计模式按钮进入设計模式,在sheet4中放置四个ActiveX命令按钮控件,分别在属性编辑器中将Caption的值修改为地址修正、地址匹配、匹配Loid、重复地址查找。同时在属性编辑器中分别修改其位置参数。
分别点击四个按钮,在代码编辑器中写入各自的功能代码。
第一步修正用户资料表中的O测地址,把表单1(sheet1)O侧地址列中的汉字去掉,只保留数字部分,可以通过ASC()来判断汉字与数字的区别,并结合字符串Mid()函数达到去掉汉字的目的,然后写入到修正后O侧地址列中。
第二步对用户地址进行标准化,主要是完成对用户资料表(sheet1)的修正后O侧地址列的数据按标准地址表(sheet2)的标准地址列格式进行标准化处理后,与表单2(sheet2)中的标准地址栏中的数据进行比较,而后对结果相同的,则需把sheet1中的业务号码、联系人、联系方式拷贝到sheet2对应的列中,即完成数据的处理
第三步把Loid表(sheet3)与处理后的标准地址表(sheet2)中的地址列进行比较,地址相同且sheet2中的联系人列不为‘空’则表示这个地址是个有宽带的用户,则在Loid表中的某列填入‘有用户’这个值。
第四步把用户资料表(sheet1)中修正后O侧地址中有重复的用特殊颜色标记出来。
经以上四步即可完成对这些数据的处理,达到生产中的最终要求。
4 结束语
通过在对实际工作中遇到的对Excel电子表中存放的生产数据的处理,意在抛砖引玉,即使无法通过Excel的便捷功能实现对数据的处理,仍可以轻松通过VisualBasic强大的功能实现,勿需对Excel表中数据进行转换而寻求他法。
参考文献:
[1]何进按.Excel中转换大量文本数据和准确计算年龄的方法[J].农村电工,2009(07).
作者单位:天津大港油田信息中心,天津 300280
关键词:Excel表;Visual Basic;ActiveX控件
中图分类号:TP391.13
众所周知excel早已经成为一款重要的办公软件,它可以进行数据处理、统计分析已经辅助决策的操作,该软件已经渗透到各个领域。在实际工作中,excel电子表格总是伴随我们身边的,各种报表、台账等。然而我们经常用到的excel的功能也仅限于编辑、查找、筛选、图表等常用的功能。虽说excel提供了丰富的功能,但同时对多张电子表格的数据进行比较,以及进行特殊处理,却仍无法实现,又该如何去做呢?通常有的人会想到把excel中的数据转换为其他格式的数据,如.dbf格式,利用foxbase去处理,也有的会利用Aaccess来处理,采用诸如此类的方法。这种做法既费时、费力而且效率也不高。本人在实际工作中同样遇到了这样的问题,通过利用Excel内嵌的Microsoft Visual Basic来处理多张电子表格的数据,无需对excel的数据进行任何转换,即可轻松完成各表格数据的分析、处理。
1 Excel内嵌Visual Basic功能简介
通过Excel的快速访问工具栏添加设计模式、插入控件、VisualBasic代码编辑器等相关功能到工具栏,便于快速进入和退出设计模式和编辑代码。
内嵌的Visual Basic具有表单控件和ActiveX控件两种。运用表单控件可以根据需要设计出更美观的用户界面。本文结合实际的应用着重介绍ActiveX控件,它能够在Excel表单中插入所需的ActiveX控件,使用起来方便、快捷,可在Excel的sheet页面中直接点击执行。
Visual Basic具有按钮、组合框、复选框、列表框、标签等ActiveX控件,可满足任何数据处理功能的需要。内嵌的Visual Basic具有面向对象的特点,所有控件的各种属性设置方便。
2 Excel数据处理技巧
Visual Basic提供了大量常用函数,运算函数、字符串函数、日期函数等。在此简单介绍几个操作Excel单元格的相关命令:
获取单元格的值、填写单元格的值可以用Sheet1.Cells(m,i).value = "地址重复"来实现;
改变某单元格字的颜色可用Sheet1.Cells(m,i).Font.ColorIndex = 7,改变此值就可改变字的颜色;
获取Excel表的行数可用这个方法获取Sheet1.UsedRange.Rows.Count;
通过字符串函数Mid()可以获取Excel任意单元格内的任何字符,Mid((Sheet1.Cells(i,j).Value),x,y);
特别需要注意的是在处理其他文件时往往一个汉字相当于2个字节,而在Excel表中一个汉字的字节数位1,这在计算字符串的长度时尤为重要。而在对excel表中的数据进行处理时,往往会遇到如何判断单元格的内容是否为汉字或字符,可以运用Asc()来对单元格中是否是汉字进行判断,如果Asc(Asc(Mid(Sheet2.Cells(2,5).Value,a,1)))的值小于0则表明为汉字,否则单元格的内容不是汉字。
了解这些值的算法后就可以对excel的数据随心所欲的处理了。
3 Excel数据处理实例
本实例是工作中需要对用户数据表、标准地址表、Loid三个Excel表中的数据进行处理,把用户数据表中的地址进行标准化,而后与标准地址表中的地址进行比较,如果相同则把相应用户资料表中的联系人、联系方式等内容拷贝到标准地址表中所对应的列中,把用户资料表中地址相同的用特殊的颜色表示出来,最后比较标准地址表与Loid中的地址相比较,如果相同且标准地址表中联系人列不为空,则在loid表中的某列标记出“有”,至此数据的处理过程结束。
需要处理的数据表包括:用户数据表、标准地址表、Loid表如下:
表1 用户资料表(sheet1)
业务号码 联系人 联系方式 O侧地址 整理后标准地址 修正后O侧地址
225918597 刘某 138****7015 北区西里11-1-102 11-001-0102 11-1-102
225970303 王娜 159****5336 北区西里11-1-201 11-001-0201 11-1-201
225926408 张春花 136****8434 北区西里11-1-202 11-001-0202 11-1-202
表2 标准地址表(sheet2)
业务号码 联系人 联系方式 标准地址
中心站区中心站北区西里11-001-0102
中心站区中心站北区西里11-001-0201
中心站区中心站北区西里11-001-0202
表3 Loid表(sheet3)
标准地址 LOID
中心站区中心站北区西里11-001-0102 000060830000000000041925
中心站区中心站北区西里11-001-0201 000060830000000000041926
中心站区中心站北区西里11-001-0202 000060830000000000041927
首先新建一个Excel文件,分别把用户数据表、标准地址表、Loid表放入sheet1、sheet2、sheet3中,新建sheet4作为放置VisualBasic控件的表单,这样使数据与控件分隔开来,便于对处理后的数据进行核实、观察与检验,点击工具栏中的设计模式按钮进入设計模式,在sheet4中放置四个ActiveX命令按钮控件,分别在属性编辑器中将Caption的值修改为地址修正、地址匹配、匹配Loid、重复地址查找。同时在属性编辑器中分别修改其位置参数。
分别点击四个按钮,在代码编辑器中写入各自的功能代码。
第一步修正用户资料表中的O测地址,把表单1(sheet1)O侧地址列中的汉字去掉,只保留数字部分,可以通过ASC()来判断汉字与数字的区别,并结合字符串Mid()函数达到去掉汉字的目的,然后写入到修正后O侧地址列中。
第二步对用户地址进行标准化,主要是完成对用户资料表(sheet1)的修正后O侧地址列的数据按标准地址表(sheet2)的标准地址列格式进行标准化处理后,与表单2(sheet2)中的标准地址栏中的数据进行比较,而后对结果相同的,则需把sheet1中的业务号码、联系人、联系方式拷贝到sheet2对应的列中,即完成数据的处理
第三步把Loid表(sheet3)与处理后的标准地址表(sheet2)中的地址列进行比较,地址相同且sheet2中的联系人列不为‘空’则表示这个地址是个有宽带的用户,则在Loid表中的某列填入‘有用户’这个值。
第四步把用户资料表(sheet1)中修正后O侧地址中有重复的用特殊颜色标记出来。
经以上四步即可完成对这些数据的处理,达到生产中的最终要求。
4 结束语
通过在对实际工作中遇到的对Excel电子表中存放的生产数据的处理,意在抛砖引玉,即使无法通过Excel的便捷功能实现对数据的处理,仍可以轻松通过VisualBasic强大的功能实现,勿需对Excel表中数据进行转换而寻求他法。
参考文献:
[1]何进按.Excel中转换大量文本数据和准确计算年龄的方法[J].农村电工,2009(07).
作者单位:天津大港油田信息中心,天津 300280