黎辉
在电大全国统考中,由省级电大进行考场编排后,发给地州电大一个《考场签到单》(也就是原来的考场座次表),而在组织考试时,需要将此考场号和考场保密号提取出来,生成一个表格,进行对应,这个过程如果使用人工去一一查找出来费时费力,经过一些摸索,总结出不同的几种方法。
这是最早使用的方式,其原理就是使用VBA程序对表格内容进行一行一行的比较,当找到内容以“考场号:”开头的单元格时,就将此行内考场号(A列)和考场保密号(D列)的内容提取出来,放在一个单独的工作表中,全部提取完毕再进行一些格式的设置即可。
这种方法优点是实现较为简单,全部在Excel中实现,不需要其他软件工具的参与。缺点是要求操作人有一定的VBA的操作经验,因为要将编写好的程序一个一个地拷贝到新的《考场签到单》文件中去,然后生成,因此操作步骤稍显繁琐,而且易出错。
考虑到第一种方法的缺点,为了便于操作人的使用,降低其上手难度,笔者又使用编程工具开发了一个工具软件,此软件的功能就是能够通过几次选择就生成一个表格。
该软件是操作难度最低的软件,上手非常快,效率也最高。在操作时,只需要选择一下考场签到单的文件,其他的三个选项都是默认,点击“生成保密号文件”即可在原文件的文件夹中生成一个新的表格,使用非常简单。其缺点在于需要安装软件,同时因使用C#开发的此软件,因此在未安装.net框架的机器上必须要安装.netFrameWork2.0。不过安装完成后,就可以很方便地使用了。
以上两种方法的优势很明显,尤其是第二种方法,使用起来非常方便,但同样两种方法都需要编程人员的配合,这一点限制了很多学校。笔者在一次帮人解决一个Excel问题时,发现原来使用Excel的函数就可以解决这个问题,而且,所有操作只要对Excel较为熟悉的人都可以自行完成,这下,就不存在什么问题了,所有人都可以学会这种方法。
这里使用的是Excel内置的“查找与引用”类函数中的VLookUp。这个函数的作用是搜索表区域首列满足条件的元素,确定待检索单元格在区域中的行序号,再进一步返回此行中指定单元格的值。共有4个参数,分别是要查找的内容所以的单元格、查找区域、要返回的值的在表中的列号、是否模糊查找。
要将此函数应用在提取考场号和保密号的操作中,其原理是先手工建立一个O列的考场号列,再在P列中利用函数将考场号所对应的考场保密号从考场签到单中提取出来填入P列。具体如下:
1.建立考场号列。只需要找到考场签到表中的第一个考场号和最后一个考场号,使用自动填充功能即可完成,不过要注意,此列的值要为文本型。
在P2单元格中输入公式:=RIGHT(VLOOKUP("考场号:"&O2,$A:$H,4,0),8)。
公式说明:VlOOKUP("考场号:"&O2,$A:$H,4,0)为核心,其含义为在列A到列H区域($A:$H)的首列中查找值为“考场号:2001”(也就是公式中的"考场号:"&O2,其中O2单元格的值为2001),并取出查找到的那一行中的第4列的值,使用的是精确查找的方式。因为这样取出来的值就是“考场保密号:09009341”,为了只提取“09009341”,所以使用RIGHT函数只取VlOOKUP函数返回值中的最右边的8位。
2.在将此公式填充入P列所有单元格,填充完成后可以所有单元格的内容都是一样的,这是因为公式还没有发生作用,只需要将此文件保存一下即可。之后将O列和P列的值复制到另一个工作表中设置其格式即可。
图1
使用此方法将此虽然操作稍嫌复杂,但没有太难的内容,都是一些基本的操作,所以适合所有人使用。若想直接将考场号和考场保密号提取到另一个工作表中的话,可以直接在新表中建立一个考场号列,再在考场保密号列使用以下公式即可:
=RIGHT(VLOOKUP("考场号:"&B3,sheet1!$A:$H,4,0),8)
其中B3表示考场号列为E列,sheet1代表考场签到单所在的工作表,可根据实际情况进行相应修改。
以上三种方法就是笔者就电大考试的其中一个环节针对所遇到的问题的解决办法,通过以上三种方法的研究和实现,笔者深深觉得,Excel中还有很多我们没有掌握的功能,这些功能很有可能对于提高我们的工作效率、减轻工作强度有很大的帮助。因此整理出来,供各位兄弟电大参考。希望也可以给其他人带来一些启示。
[1]伊利奇,王保众.透视ExcelVBA应用与开发.北京:人民邮电出版社,2008年.
[2]苑旭,董民辉,杨洪振等.使用VisualC#.NET开发Windows应用.北京:红旗出版社,2005年.
[3]李政等.Excel高级应用案例教程.北京:清华大学出版社,2010年.