办公技能-使用ExcelVBA代码实现表格拆分功能--嘉为科技

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用ExcelVBA代码实现表格拆分功能

作者:张辛

【摘要】

因为工作需要,我们经常希望能把一些表格按照某个分类进行拆分,按照正常做法应该是:先按分类项筛选,然后新建工作表,接着将筛选结果复制到新工作表上,随后再修改工作表标签名称,最后依次重复这项工作,直到把分类项中每一个选项都复制一遍,这份工作表才算拆分完毕。这种重复性工作太耗费时间,有没有办法能帮我们快速完成这种体力活呢?

【正文】

如果使用Excel VBA宏代码帮我们判断并拆分,则大大减轻工作量。下面就给大家介绍一个案例,希望能带来启发。

一、案例描述

如下图所示,有一张销售订单表,现在希望按照【产品】进行拆分,将每个城市的数据单独放在一张新工作表上。

完成后我们看到的结果是销售订单表【sheet1】被拆分成9张产品表。如下图所示:

二、Excel VBA代码编程说明

打开编程环境

首先需要调出开发工具选项卡,打开【文件】-【选项】-【自定义功能区】,勾选【开发工具】

单击【开发工具】选项卡中的【Visual Basic】右键单击【模块】,选择【插入】-【模块】

双击新建的模块,进入代码编辑区。

编写代码

将拆分工作表的代码贴入编辑区,如下图所示:

详细代码信息参考如下:

Sub 使用高级筛选拆分表格()

Dim a As String

Dim b As Integer, c As Integer

b = WorksheetFunction.CountA(Sheets("sheet1").Range("I2:I100"))

Sheets("sheet1").Range("k1") = Sheets("sheet1").Range("i1")

For c = 1 To b

Sheets("sheet1").Range("k2") = Sheets("sheet1").Range("I" & c + 1).Value

Sheets.Add After:=ActiveSheet

a = Sheets("sheet1").Range("k2").Value

= a

Application.CutCopyMode = False

Sheets("Sheet1").Range("A1:G231").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Sheet1").Range("K1:K2"),

CopyToRange:=Sheets(a).Range("A1"), _

Unique:=False

Next c

Sheets("sheet1").Range("k1:k2").Clear

Sheets("sheet1").Select

End Sub

三、应用宏代码完成工作

设置拆分依据

代码中定义工作表【sheet1】中的I列为拆分依据,所以要将分类项复制粘贴到I列。然后使用【数据】-【删除重复项】命令,将重复数据删除。

运行宏代码

单击【开发工具】-【宏】,打开宏编辑对话框,选中“使用高级筛选拆分表格”,单击【执行】即可。

【小提示】:包含宏代码的Excel2007文件,要保存成.xlsm的格式,才能将代码保留下来。如果保存成.xlsx格式,代码将被自动删除。

相关文档
最新文档