Excel应用探讨-表格的比较

Excel应用探讨-表格的比较

ID:38763713

大小:48.00 KB

页数:5页

时间:2019-06-19

Excel应用探讨-表格的比较_第1页
Excel应用探讨-表格的比较_第2页
Excel应用探讨-表格的比较_第3页
Excel应用探讨-表格的比较_第4页
Excel应用探讨-表格的比较_第5页
资源描述:

《Excel应用探讨-表格的比较》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Excel应用探讨——表格的比较作者:岳池县长田小学杨长和前段时间,学校要我做近三年在校学生的相关资料,其中涉及到每学年各班学生变动情况。这可有点麻烦,因为以前虽然每学年都有填报,但数据可能并不真实,而且可能也并不适合这次报表的要求,如果要把几个学年学生花名册拿来一一核对,那也是相当麻烦的事。于是我就捉摸着Excel本身有着强大的功能,要比较一个班相邻两个学年学生变化情况(就是比较两个表中不同的行),应该是可以做到的。在网上搜索了一翻,倒是找到了一些相关介绍,不过许多都是别人写的软件,不知道具体的实现原理。于是决定自

2、己来解决这个问题,一来可以把实现方法留着,可能以后会用得着,二来我也一直想深入学习下Excel,但因为平时事情不少,也没找到学习的动力,这次正好可利用利用。首先分析下要实现的功能:现以小学四年级一班为例,现在在读学生名册(2010年秋入学)为表1,上学年在读学生名册(2009年秋入学)为表2。第一,要找出表2中存在而表1中不存在(即本期已转出学生)的记录;第二,要找出表1中存在而表2中不存在(即本期转入学生)的记录。其实,两个功能的实现是一样的,所以就仅以第一个功能为例。查询Excel帮助——要想学好Excel,先学

3、习使用好帮助是必须的,找到了这样一个函数VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)。对Excel了解不多的可能要多读几遍才能看懂函数的使用说明,该函数有四个参数,lookup_value可以是一个数值或是对某个单元格的引用;table_array是对表格中某个区域的引用;col_index_num表示要返回的单元格列序号;range_lookup为一逻辑值,为true或省略表示可近似匹配,false表示精确匹配。例如VLOOKUP('200

4、9'!$A1,'2010'!$A:$I,1,))表示在表2010中的A—I列中的A列查询与表2009中的A1单元格匹配的单元格,匹配成功则返回表2010中匹配的行的A列。当然,我们是要找表2009中有而2010中没有的行,显然上面的函数并不能满足要求,改成“=IF(ISERROR(VLOOKUP('2009'!$A1,'2010'!$A:$I,1,)),'2009'!A1,"")”,等于号表示在单元格中输入公式。先在另一个表中的A1单元格输入这个公式(当然表2009和表2010在工作簿中已经存在,否则会出错,还要注意

5、,我的表都没有列标题,数据都是从第一行开始,有列标题的就只能从第二行开始,当然得有些小改动),这个公式中VLOOKUP功能同前面一样,但整个公式的功能则是当匹配成功则在A1单元格中输入空格,否则复制表2009的A1单元格到当前单元格(该生在表2010中没有,即已转出)。把当前单元格横向复制,即可复制一个学生的所有相关信息(当然,如果没转出,则都不会复制,全为空),选中第一行中可能有信息的单元格,再按列拖动复制则可依次检查表2009中对应行的学生是否已转出。这样把A1单元格处理完后,几秒钟就能搞定。当然,上面的方法还是

6、显得不够专业,要制一个转出学生的信息表,显然还得花点儿时间把刚刚得到的转出学生信息一行行复制。于是我又想,能不能用VB进一步提升这个功能呢,打开VB帮助,查了一下,好象在VB中不能直接调用这个函数,没办法,只能自己来写类似功能的函数了。为了能方便比较不同的表,我把这个函数写成了以三个表格名为参数的通用函数Functioncomp(SheetAAsWorksheet,SheetBAsWorksheet,SheetCAsWorksheet),其中SheetA为要比较的表,SheetB为被比较的表,SheetC为存放结果的

7、表,即存放SheetA中有而SheetB中没有的记录。比较倒是不难,采用两层循环嵌套,内层循环为用SheetA中的一个记录依次比较SheetB中有数据的所有记录,外层循环把SheetA中作比较的记录行号依次加1,直到没数据的行结束循环。完整的函数如下:Functioncomp(SheetAAsWorksheet,SheetBAsWorksheet,SheetCAsWorksheet)DimiAsIntegerDimjAsIntegerDimlAsIntegerDimkAsIntegerDimxAsIntegeri=1

8、j=1l=1Forx=1To100这个循环先清空需存放结果的表IfSheetC.Cells(x,1)<>""ThenSheetC.Cells(x,1)=""EndIfIfSheetC.Cells(x,2)<>""ThenSheetC.Cells(x,2)=""EndIfNextDoWhileSheetB.Cells(i,1)<>""k=0j=1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。