论文部分内容阅读
摘要: 在Excel中对图像信息的处理,根据需要可以将图像信息存储在Excel文件内,也可以将图像信息存储在外存储器中的其它位置,从而独立于Excel文件存在。这样可以使不同类型的信息存取在结构上更加清晰,方便信息的组织管理,同时也减少文件本身太大而引起的维护不便等一系列问题。
关键词: 定义名称;函数嵌套;VBA
中图分类号:TP391 文献标识码:A 文章编号:1671-7597(2011)0520085-02
0 引言
Excel在管理图像信息的时候,在工作表中插入一张图片,可以采用定义名称的方式来引用图像。但这种做法需要将图像本身存储在单元格中,不仅要调节单元格的宽度以适合图像的放置,而且图像本身就存储在Excel工作表中,这样工作簿文档在信息量很大时,单个Excel文件就会占据很大的磁盘空间,处理时会占据较大的系统开支。其好处是信息都在一个文件里,一般用户都可以管理。
在Excel中,用VBA提供的功能,可以在VBE环境来编写程序,将图像信息通过VBA程序实现自动插入。这样做可以使得管理的图像信息独立于Excel文件单独存储在一个文件夹中。Excel文件本身不至于太大,图像信息通过VBA的宏功能在使用的时候,会自动插入在需要的地方,但一般用户较难掌握VBA命令程序。本文对于这两种方法在数据管理中,如何使用图像信息及其一些实际问题做了研究。
1 引用名称插入图片信息
现有一个Excel工作簿,其中有名称为档案和简历两个Excel工作表。在简历表中有照片一栏信息,在实际中这是一个个人信息查询的介面。其中的所有查询信息都来源于另一名为档案的工作表,这个表中的所有信息将作为数据源提供给简历表作为信息查询使用。如图1所示。
首先在Excel简历工作表中插入任意一张照片,并选中该照片,此时在Excel名称框中会显示所插入的照片名称,根据所插入照片的顺序自动取名称为图片n,将该照片的位置移动到合适的地方,参考如图2所示。然后在公式编辑栏中输入公式:=PIC。选插入名称定义,在工作簿中的名称框中输入名称PIC,按添加按钮后,选中名称PIC后,并在引用位置处输入公式:
=INDEX(档案!$D:$D,IF(简历!$B$2="",65536,MATCH(简历!$B$2,档案!$A:$A,0)))
或公式:
=OFFSET(档案!$D$1,IF(简历!$B$2="",65535,MATCH(简历!$B$2,档案!$A:$A,0)-1),)
查询中的性别、所在院系等其它信息可以用Vlookup函数来自动获得。公式参考如下:
=VLOOKUP(B2,档案!$A$2:$D$3,2,1)。参考图3。
在B2单元格中输入所要查询人员的姓名后,对应人员的其它信息都会从数据源档案表中获得。为了快速查询,我们可以对B2单元格进行数据有效性设置,设置成序列。由于单元格数据有效性不支持跨表引用序列的操作,我们可以在简历表中设置辅助列,辅助列引用档案表中的姓名所在列。这样我们可以在姓名单元格中通过下拉列表选择姓名,提高查询的效率。
2 宏和VBA解决图片插入
按Alt+F11进入VBE环境,在工程资源窗口中,双击该工作簿文件下的简历工作表,打开简历工作表的代码窗口,选择Worksheet对象的Change过程。其对应程序如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address() ="$B$2" Then
ActiveSheet.Pictures.Delete
Dim aa As String
aa=Cells(2, 2)
If aa <> "" Then
ActiveSheet.Pictures.Insert("."&aa&".jpg").Select
Selection.ShapeRange.Top=Cells(2,20).Top
Selection.ShapeRange.Left=Cells(2,20).Left
Selection.ShapeRange.Width=Cells(2,20).Width
Selection.ShapeRange.Height=Cells(2,1).Height+Cells(3,1).Height +Cells(4,1).Height
End If
End If
Cells(2,20).Select
End Sub
程序中的ActiveSheet.Pictures.Insert("."& aa &".jpg").Select
語句,在实际中,用户可根据照片实际存放的位置,如D:pic位置下,可将该语句修改成:
ActiveSheet.Pictures.Insert("d:pic"&aa&".jpg").Select
照片出现在简历表中的实际位置和宽度由以下语句实现。用户可根据自己的实际情况来调节表中对应单元格的位置和宽度。
Selection.ShapeRange.Top=Cells(2,20).Top
Selection.ShapeRange.Left=Cells(2,20).Left
Selection.ShapeRange.Width=Cells(2,20).Width
下面这条句是根据简历表中对应单元格的实际行高来调节照片的高度,可以根据实际情况来改变此参数。参考图4。
Selection.ShapeRange.Height=Cells(2,1).Height+Cells(3,1).Height+Cells(4,1).Height。
调节照片宽度和高度的语句,由于在程序中出现的顺序不同,此程序中后面出现的语句最终决定了图片的高度和宽度。这是因为照片插入的时候,长宽比是锁定的(除非你想要改变照片的默认显示比例)。根据实际情况改变两条语句的顺序,即可做到照片显示的大小是由行高还是由列宽决定的。
以上为插入照片的VBA程序,用户如果对VBA不了解,可以借助录制一个宏的功能,来生成一个初步的VBA程序,然后切换到VBE环境中,参照上述给出的程序来修改宏对应的VBA程序。
查询结果中的其它信息可以通过其它函数(如Vlookup等函数)来获得。在此列出其中的两个信息的查询公式,供研究参考:
身份证号第一位的查询公式:
=MID(VLOOKUP($B$2,档案!$A$2:$D$3,2,FALSE),1,1)
性别信息的查询公式:
=IF(MOD(MID(VLOOKUP($B$2,档案!$A$2:$D$3,2,FALSE),6,1),2)<>0,“男”,“女”)
3 两种方式对比
根据名称来管理图像信息的时候,照片要存储在Excel文件中,这样数据文件当信息量很大时,一个文件就会变得非常的大,会影响数据处理的时间。重要的是,我们所要处理的照片必须要完整的放置在单元格中,因为查询结果中出现的照片是根据照片在数据源中出现在一个单元格中的相对位置的不同而显示结果有所不同。如果照片在单元格中的位置对应其所在单元格的大小不是很合适,那么照片在显示的时候就会出现问题,如显示部分照片或照片在单元格中出现的位置有偏移。如果精细的手动调节照片所在单元格的位置,势必增加很多的工作量。
照片按实际的1寸或2寸大小存放在单元格中,那么每个照片所在单元格的行高就需要与照片有一样的高度,这样才能保证在查询显示的时候保持照片格式的正确。但这样做,源数据看上去会很分散(照片所占行高数值太大),不便数据的有效管理。我们就要改变照片为很小的尺寸(将1寸或2寸照片缩小)。我们可以通过将照片全部选中后设置成统一的大小,然后再统一设置单元格的行高和列宽,这样数据格式看上去不会很分散。但照片变得很小的时候,你也须精细调节照片现在单元格中的位置,工作量也会很大。
用VBA编程的方法在Excel文件中插入图像信息,这种方法可以将Excel文件和其所用到的图像照片存储在不同的磁盘位置,将照片图像文件单独存储在另一个文件夹下,这样Excel数据源表可以更容易管理,在格式设置上也容易统一,文件本身也不会太大。这种方法做数据管理时,会更加专业。但一般用户如果不能掌握VBA编程的方法,就比较难处理。
4 结束语
在办公自动化方面,信息数据处理时会越来越多的遇到图像处理的问题。本文研究了两种在Microsoft Excel中处理图像信息的方法。给出了具体的解决方法,列出了VBA程序供参考。对两种方法做了对比研究,考虑了各种可能出现的问题,并提出了解决的思路。对处理的深入研究,可使我们的办公自动化有更高的效率。
参考文献:
[1]黄智诚、谢静贤、黄恺昕,中文EXCEL 2003指南,北京:中国石化出版社,2000.
[2]周苏等,高等应用型院校计算机基础教育规划教材[M].北京:中国铁道出版社,2009.
[3]Microsoft Word脱机帮助系统和Microsoft Word Office Online帮助系统.
[4]Michael Desmond.Microsoft®Office 2003 in 10 Simple Steps or Less,Published by Wiley Publishing, Inc.Copyright © 2004 by Wiley Publishing, Inc., Indianapolis, ISBN: 0-7645-4242-7.
作者简介:
孙传庆(1964-),男,山东章丘人,副教授,主要从事计算机技术的教学及其研究工作。
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
关键词: 定义名称;函数嵌套;VBA
中图分类号:TP391 文献标识码:A 文章编号:1671-7597(2011)0520085-02
0 引言
Excel在管理图像信息的时候,在工作表中插入一张图片,可以采用定义名称的方式来引用图像。但这种做法需要将图像本身存储在单元格中,不仅要调节单元格的宽度以适合图像的放置,而且图像本身就存储在Excel工作表中,这样工作簿文档在信息量很大时,单个Excel文件就会占据很大的磁盘空间,处理时会占据较大的系统开支。其好处是信息都在一个文件里,一般用户都可以管理。
在Excel中,用VBA提供的功能,可以在VBE环境来编写程序,将图像信息通过VBA程序实现自动插入。这样做可以使得管理的图像信息独立于Excel文件单独存储在一个文件夹中。Excel文件本身不至于太大,图像信息通过VBA的宏功能在使用的时候,会自动插入在需要的地方,但一般用户较难掌握VBA命令程序。本文对于这两种方法在数据管理中,如何使用图像信息及其一些实际问题做了研究。
1 引用名称插入图片信息
现有一个Excel工作簿,其中有名称为档案和简历两个Excel工作表。在简历表中有照片一栏信息,在实际中这是一个个人信息查询的介面。其中的所有查询信息都来源于另一名为档案的工作表,这个表中的所有信息将作为数据源提供给简历表作为信息查询使用。如图1所示。
首先在Excel简历工作表中插入任意一张照片,并选中该照片,此时在Excel名称框中会显示所插入的照片名称,根据所插入照片的顺序自动取名称为图片n,将该照片的位置移动到合适的地方,参考如图2所示。然后在公式编辑栏中输入公式:=PIC。选插入名称定义,在工作簿中的名称框中输入名称PIC,按添加按钮后,选中名称PIC后,并在引用位置处输入公式:
=INDEX(档案!$D:$D,IF(简历!$B$2="",65536,MATCH(简历!$B$2,档案!$A:$A,0)))
或公式:
=OFFSET(档案!$D$1,IF(简历!$B$2="",65535,MATCH(简历!$B$2,档案!$A:$A,0)-1),)
查询中的性别、所在院系等其它信息可以用Vlookup函数来自动获得。公式参考如下:
=VLOOKUP(B2,档案!$A$2:$D$3,2,1)。参考图3。
在B2单元格中输入所要查询人员的姓名后,对应人员的其它信息都会从数据源档案表中获得。为了快速查询,我们可以对B2单元格进行数据有效性设置,设置成序列。由于单元格数据有效性不支持跨表引用序列的操作,我们可以在简历表中设置辅助列,辅助列引用档案表中的姓名所在列。这样我们可以在姓名单元格中通过下拉列表选择姓名,提高查询的效率。
2 宏和VBA解决图片插入
按Alt+F11进入VBE环境,在工程资源窗口中,双击该工作簿文件下的简历工作表,打开简历工作表的代码窗口,选择Worksheet对象的Change过程。其对应程序如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address() ="$B$2" Then
ActiveSheet.Pictures.Delete
Dim aa As String
aa=Cells(2, 2)
If aa <> "" Then
ActiveSheet.Pictures.Insert("."&aa&".jpg").Select
Selection.ShapeRange.Top=Cells(2,20).Top
Selection.ShapeRange.Left=Cells(2,20).Left
Selection.ShapeRange.Width=Cells(2,20).Width
Selection.ShapeRange.Height=Cells(2,1).Height+Cells(3,1).Height +Cells(4,1).Height
End If
End If
Cells(2,20).Select
End Sub
程序中的ActiveSheet.Pictures.Insert("."& aa &".jpg").Select
語句,在实际中,用户可根据照片实际存放的位置,如D:pic位置下,可将该语句修改成:
ActiveSheet.Pictures.Insert("d:pic"&aa&".jpg").Select
照片出现在简历表中的实际位置和宽度由以下语句实现。用户可根据自己的实际情况来调节表中对应单元格的位置和宽度。
Selection.ShapeRange.Top=Cells(2,20).Top
Selection.ShapeRange.Left=Cells(2,20).Left
Selection.ShapeRange.Width=Cells(2,20).Width
下面这条句是根据简历表中对应单元格的实际行高来调节照片的高度,可以根据实际情况来改变此参数。参考图4。
Selection.ShapeRange.Height=Cells(2,1).Height+Cells(3,1).Height+Cells(4,1).Height。
调节照片宽度和高度的语句,由于在程序中出现的顺序不同,此程序中后面出现的语句最终决定了图片的高度和宽度。这是因为照片插入的时候,长宽比是锁定的(除非你想要改变照片的默认显示比例)。根据实际情况改变两条语句的顺序,即可做到照片显示的大小是由行高还是由列宽决定的。
以上为插入照片的VBA程序,用户如果对VBA不了解,可以借助录制一个宏的功能,来生成一个初步的VBA程序,然后切换到VBE环境中,参照上述给出的程序来修改宏对应的VBA程序。
查询结果中的其它信息可以通过其它函数(如Vlookup等函数)来获得。在此列出其中的两个信息的查询公式,供研究参考:
身份证号第一位的查询公式:
=MID(VLOOKUP($B$2,档案!$A$2:$D$3,2,FALSE),1,1)
性别信息的查询公式:
=IF(MOD(MID(VLOOKUP($B$2,档案!$A$2:$D$3,2,FALSE),6,1),2)<>0,“男”,“女”)
3 两种方式对比
根据名称来管理图像信息的时候,照片要存储在Excel文件中,这样数据文件当信息量很大时,一个文件就会变得非常的大,会影响数据处理的时间。重要的是,我们所要处理的照片必须要完整的放置在单元格中,因为查询结果中出现的照片是根据照片在数据源中出现在一个单元格中的相对位置的不同而显示结果有所不同。如果照片在单元格中的位置对应其所在单元格的大小不是很合适,那么照片在显示的时候就会出现问题,如显示部分照片或照片在单元格中出现的位置有偏移。如果精细的手动调节照片所在单元格的位置,势必增加很多的工作量。
照片按实际的1寸或2寸大小存放在单元格中,那么每个照片所在单元格的行高就需要与照片有一样的高度,这样才能保证在查询显示的时候保持照片格式的正确。但这样做,源数据看上去会很分散(照片所占行高数值太大),不便数据的有效管理。我们就要改变照片为很小的尺寸(将1寸或2寸照片缩小)。我们可以通过将照片全部选中后设置成统一的大小,然后再统一设置单元格的行高和列宽,这样数据格式看上去不会很分散。但照片变得很小的时候,你也须精细调节照片现在单元格中的位置,工作量也会很大。
用VBA编程的方法在Excel文件中插入图像信息,这种方法可以将Excel文件和其所用到的图像照片存储在不同的磁盘位置,将照片图像文件单独存储在另一个文件夹下,这样Excel数据源表可以更容易管理,在格式设置上也容易统一,文件本身也不会太大。这种方法做数据管理时,会更加专业。但一般用户如果不能掌握VBA编程的方法,就比较难处理。
4 结束语
在办公自动化方面,信息数据处理时会越来越多的遇到图像处理的问题。本文研究了两种在Microsoft Excel中处理图像信息的方法。给出了具体的解决方法,列出了VBA程序供参考。对两种方法做了对比研究,考虑了各种可能出现的问题,并提出了解决的思路。对处理的深入研究,可使我们的办公自动化有更高的效率。
参考文献:
[1]黄智诚、谢静贤、黄恺昕,中文EXCEL 2003指南,北京:中国石化出版社,2000.
[2]周苏等,高等应用型院校计算机基础教育规划教材[M].北京:中国铁道出版社,2009.
[3]Microsoft Word脱机帮助系统和Microsoft Word Office Online帮助系统.
[4]Michael Desmond.Microsoft®Office 2003 in 10 Simple Steps or Less,Published by Wiley Publishing, Inc.Copyright © 2004 by Wiley Publishing, Inc., Indianapolis, ISBN: 0-7645-4242-7.
作者简介:
孙传庆(1964-),男,山东章丘人,副教授,主要从事计算机技术的教学及其研究工作。
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文