如何将一个工作簿的多个工作表拆分(excel工作簿拆分多个工作表)

【前言】

在推进各种人力资源项目过程中,经常需要组织其他同事完成一定业务动作后,将成果输入到预先制定的表格中并反馈。我们称之为项目数据协同。

为了确保数据协同的质量、效率,关键是做好四点:(1)简化:向我们反馈数据表的人,他们需要执行的动作越少越好;(2)指引:表格操作指引要简要、精准,相关培训得到位;(3)数据流管控:不需协同人操作的区域、内容,通过内容保护设置限定其可操作的动作,防止误操作;(4)批量操作工具化:基于VBA自动完成下发表格的拆分、回收表格的汇集。

在具体实施过程中,前两点的个性化较强,往往需要结合实际情况因地制宜地做相应安排。后两点的实施对应五个Excel技能实施。本文是其中第五篇,且相关示例基于Microsoft Excel软件制作。

【业务场景】:

项目协同的另一常见情境是将文件按照某个字段的不同拆分成若干Excel工作簿,并交给项目协作方去完成后续操作。例如,将定稿的公司整体奖金分配测算表按部门拆分并分别交给HBRP,以支持其完成年终奖项目后续事宜。

【需求示例】:

假设有已完成沟通、确认的年奖奖金测算表(“00-年终奖金测算结果”):

   

图 1 拆分年终奖金测算结果

待拆分的测算表名称为“部门奖金分配表”。现需要通过VBA根据部门的不同拆分汇总测算结果:

(1)拆分后文件以部门名称进行命名;

(2)拆分后测算表中的计算公式保持不变;

(3)根据规则重新设置拆分后的部门奖金分配表格式。

   

图 2 待拆分表格示例

【实现步骤】:

Step1:将工作簿“00-年终奖金测算结果”中待拆分内容整体粘贴进拆分模板

本步操作简单,略。

Step2:创建用于存储拆分后各部门奖金分配表的文件夹

   

图 3 拆分后各部门奖金分配表

Step3:在拆分模板中设置拆分规则

   

图 4 拆分规则配置

如上图:

(1)B1单元格“主键所在列”,即实施拆分时所依据的字段(示例中为“一级部门”)在待拆分表格中的所在列(示例中为“F列”,参见图1-1-29);

(2)B2单元格“存储路径”,即拆分后各部门奖金分配表的存储位置,可根据需要配置。

Step4:通过“ALT F11”组合键打开VBA代码编辑器并执行程序

   

图 5 VBA代码执行窗口

拆分结果如下图所示:

   

图 6 代码执行效果示例

【说明】:

① 拆分工具详见本书相关附件。代码如下:


Sub 拆分表格()

Dim w, j, k, m, n As Integer

Dim rng As Range

Dim strkey, strrng As String

Dim sourcepath, savepath, filename As String

Dim wb As Workbook

'
   ----------------------------------------------------------------------------------------------提取主键清单

m = 0

n = 0

strkey = ThisWorkbook.Sheets("拆分规则").Range("B1")

w = ThisWorkbook.Sheets("部门奖金分配表").Range(strkey & 65536).End(xlUp).Row

strrng = ThisWorkbook.Sheets("部门奖金分配表").Range("F10") & "F" & w

ThisWorkbook.Sheets("拆分规则").Range("A6:A" & ThisWorkbook.Sheets("拆分规则").Range("A65536").End(xlUp).Row).Clear

Set rng = ThisWorkbook.Sheets("部门奖金分配表").Range("F9:" & "F" & w)

rng.AdvancedFilter Action:=xlFilterCopy, Unique:=True, copytorange:=ThisWorkbook.Sheets("拆分规则").Range("A4")

Set rng = Nothing

'
   ------------------------------------------------------------------------------------------------拆分

j = ThisWorkbook.Sheets("拆分规则").Range("A65536").End(xlUp).Row

sourcepath = ThisWorkbook.Path & "\00-年终奖金测算结果.xlsx"

Application.DisplayAlerts = False

For i = 6 To j

filename = ThisWorkbook.Sheets("拆分规则").Cells(i, 1)

savepath = ThisWorkbook.Sheets("拆分规则").Range("B2") & "\" & filename & ".xlsx"

FileCopy sourcepath, savepath

Workbooks.Open (savepath)

m = Workbooks(filename).Sheets("部门奖金分配表").Range("B65536").End(xlUp).Row

For k = m To 10 Step -1

If Workbooks(filename).Sheets("部门奖金分配表").Cells(k, 6).Value <> filename Then

Workbooks(filename).Sheets("部门奖金分配表").Cells(k, 6).EntireRow.Delete

End If

Next k

n = Workbooks(filename).Sheets("部门奖金分配表").Range("B65536").End(xlUp).Row

With Workbooks(filename).Sheets("部门奖金分配表").Range("B8:AC" & n)

.BorderAround xlContinuous, xlMedium

End With

Workbooks(filename).Save

Workbooks(filename).Close

Next i

Application.DisplayAlerts = True

End Sub


② 实际使用中,需要根据拆分的实际情况对上述代码中工作表名称、相关行列位置做相应挑战。

(0)

相关推荐

  • Excel 2016中怎么撤销对工作簿结构和窗口的保护?

    excel如何撤销保护工作簿?EXCEL保护分两种,一种是“保护工作表”,另外一种是“保护工作簿”.保护工作簿中一般选择:保护工作簿结构或窗口.该功能允许用户对表格内数据操作,但是不允许以下行为:1. ...

  • Excel如何一次性打开多个工作簿

    利用下面的方法可以快速打开多个工作簿: 方法一 打开工作簿(*.xls)所在的文件夹,按住Shift键或Ctrl键,并用鼠标选择彼此相邻或不相邻的多个工作簿,将它们全部选中; 然后按右键单击,选择&q ...

  • WPS EXCEL中如何快速获得一个工作簿的工作表数量?

    一个工作簿中可以设置1~255个工作表,如果需要超过255个工作表,可用插入工作表按钮完成,一个工作薄能含多少个工作表仅受内存限制. 增加多个工作表的方法如下: 1.打开工具栏,选择最下方的" ...

  • Excel启动时如何打开指定工作簿

    Excel启动时打开指定工作簿的步骤 1.打开Excel表格,接着点击工具栏的"文件"→Excel选项 2.在Excel选项里点击"高级"菜单,在高级里下拉找到 ...

  • WPS如何将Excel文档设为共享工作簿

    WPS是现在十分常用的办公软件之一,有些新用户不知道如何将Excel文档设为共享工作簿,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步先打开电脑中的Excel文档,接着根据下图箭 ...

  • WPS如何将Excel文档设置为共享工作簿

    WPS是现在十分常用的一款办公软件,有些新用户不知道如何将Excel文档设置为共享工作簿,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步先打开电脑中的Excel文档,接着点击[审 ...

  • excel如何快速把多个工作表合并到一个excel表

    有这么一种情况,就是我们有很多张excel,而且excel表里面的公式基本一样,我们就想快速的把这些excel合并在一起,意思在合并在一个excel页面,这样可以方便我们分析和统计,那么excel如何 ...

  • Excel 2007中添加或删除工作表背景

    Excel 2007中,您可以将图片用作仅供显示的工作表背景。工作表背景不会被打印,也不会保留在单个工作表中或保留在另存为网页的项目中。 要点 由于不会打印工作表背景,因此不能将其用作水印。但是,通过 ...

  • excel的默认新建3个工作表数目怎么更改?

    打开EXCEL默认打开工作表的数目为三个,这个往往是满足不了我们的需求的,虽然手动添加可以达到母的,但这并不是长久之法,如果要是能够更改默认的工作表数目,这个问题便可迎刃而解,那么excel的默认工作 ...

  • excel函数公式合并多个工作表的方法

    excel函数公式合并多个工作表的方法 [例]如下图所示工作簿中,A,B,C,D为4个格式相同行数可能不同的表格,需要把这4个表合并到"汇总"表中. 操作步骤: 1.公式 - 名称 ...