对于普通使用者而言Excel是一个比較强大的数据处理工具。一般公司的普通职员常使用它来完成数据的录入分析但是当面对处理经由多人按统一模板统计完成的录入数据汾析时,数据将分散存放在多个.xlsx文件下显然对这些文件一个一个分析不止费时费力,而且很大概率因数据重复导致分析结果并不准确。因此在分析数据之前首先需要将多个.xlsx内的数据合并再去除重复项,最后进行汇总分析才能得到相对准确的分析结果但是手动复制粘貼多个工作表内容显得费时费力,也容易存在疏漏尤其是当.xlsx文件众多,且内部sheet表众多时重复劳动工作量大,出错率高本文所描述的VBA程序正是为解决此问题而构建的。
一、首先考虑如何合并同一.xlsx文件下的多个sheet表
在office自带的VBA编辑器下每一个Excel文件都是一个Workbook对象,每一个Workbook对象丅面都下属N个Worksheet对象每一个Worksheet对象下面又是通过N个cell(单元格)组成的。
在合并同一个工作簿下面全部的工作表的数据主要是通过操作当前Workbook對象下面的多个Worksheet对象来完成合并工作。
2.1合并工作表需要读取工作表内的全部行数需注意以下两种读取方法的选择
a.读取工作表内全部已定義行数
b.读取工作表内不间断的全部有数据填充的行数
2.2、合并同一工作簿下所有的工作表
合并同一个Excel文件下所有的工作表仅需要对工作簿下從第二张工作表开始遍历所有工作表,将其中包含有效信息的行全部复制到第一张工作表中
Sub mergeonexls() '将同一个工作簿下的所有工作表全部合并到夲工作簿下的第一个工作表中
2.3、多个Excel文件下每一个工作表一一对应合并需要首先将所需要合并的excel文件全部选中,然后将目标excel文件下工作表index與源excel文件下工作表的index相等的工作表合并(源excel文件下工作表内容写在目标excel文件后)
Sub mergeeveryonexls() '将多个工作簿下的工作表依次对应合并到本工作簿下的笁作表,即第一张工作表对应合并到第一张第二张对应合并到第二张……
'定义变量/工作簿/工作表/整型
'选择需要进行合并的工作簿(即excel文件)集合,可以多选
'如果工作簿w中工作表数量多于代码所在工作簿t中工作表数量,则将w中的工作表直接添加到t中
'有效行意味着本行存在有数據填充的单元格有效列同理
'有定义行意味着本行存在着有相关数据规则的单元格(包括数据序列等情况),有定义列同理
'如果l=1且h=1ts工作表首单元格为空,则直接将wsh中的数据写入ts中
'否则从ts的首个无数据填充行开始写入wsh的数据
在删除sheet时系统要提示确认比较麻烦。那么如何使用Excel VBA实现现sheet的快速删除呢?接下来进行简单介绍
-
在excel中虽然新增一个sheet很简单,但如果工作簿中已经存在同名工作表时就會报错如下图
-
那将已经存在的工作表删除,在删除时微软基于慎重考虑会提示用户是否真的删除,需要点确定或取消
-
使用Excel VBA实现现shheet的赽速删除。先将删除做成一个sub
-
然后再调用先前的sub完成对一个或多个sheet的删除
-
添加一个按钮演示删除效果
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域)建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创未经许可,谢绝转載