如图,现在要把这个事情表的内容按城市拆分成多个事情表。
第1种:极速拆分——VBA(文中供应有代码)
VBA是EXCEL处理大量重复事情最好用的工具。不过很多人对VBA一窍不通,以是本日给大家分享一段代码,并且详细阐明了如何根据实际表格修正代码值,方便大家在事情中利用。

(1)按住Alt+F11打开VBA编辑器,点击“插入”菜单下的“模块”。
(2)在右侧代码窗口输入下列代码。不想动手输入的可以加群下载已经准备好的代码文件,直接复制粘贴即可。
Sub 拆分表() Dim i, iRow, iCol, t, iNum As Integer, sh As Worksheet, str As String Application.ScreenUpdating = False With Worksheets(\"大众Sheet1\公众) iRow = .Range(\公众A65535\"大众).End(xlUp).Row iCol = .Range(\"大众IV1\公众).End(xlToLeft).Column t = 3 For i = 2 To iRow str = .Cells(i, t).Value On Error Resume Next Set sh = Worksheets(str) If Err.Number <> 0 Then Set sh = Worksheets.Add(, Worksheets(Worksheets.Count)) sh.Name = str End If sh.Range(\"大众A1\"大众).Resize(1, iCol).Value = .Range(\"大众A1\"大众).Resize(1, iCol).Value iNum = sh.Range(\"大众A\公众 & Rows.Count).End(xlUp).Row sh.Range(\"大众A\"大众 & iNum + 1).Resize(1, iCol).Value = .Range(\"大众A\"大众 & i).Resize(1, iCol).Value Next i End WithApplication.ScreenUpdating = TrueEnd Sub代码解析:
这里用赤色笔墨表示须要根据实际修正的代码参数;'用于表示注释,其后的笔墨并不影响代码的运行,只是用于解释如何代码的。这里特意用灰色表示注释笔墨。
Sub 拆分表 '文件名称,根据自己的文件名修正
Dim i, iRow, iCol, t, iNum As Integer, sh As Worksheet, str As String
Application.ScreenUpdating = False '关闭屏幕刷新
With Worksheets(\"大众Sheet1\公众) '双引号内是事情簿名称,根据实际事情簿名称修正
iRow = .Range(\公众A65535\"大众).End(xlUp).Row '从A列的末了一行开始向上获取事情表的行数,一样平常只改动Range中的列参数,如要事情表有效区域是从B列开始的,值便是B65535
iCol = .Range(\"大众IV1\公众).End(xlToLeft).Column '从末了列(IV)第1行开始向左获取事情表的列数,一样平常只改动Range中的行参数,如要事情表有效区域是从第2行开始的,值便是IV2
t = 3 't为列数,设置依据哪一列进行拆分,譬如,如果是按E列拆分,这里便是t=5
For i = 2 To iRow 'i为行数,设置从第几行开始获取拆分值,要根据事情表示实改动
str = .Cells(i, t).Value '获取单元格(i, t)的值作为拆分后的表格名称
On Error Resume Next
Set sh = Worksheets(str) '创建以上述获取值为名的事情表
If Err.Number <> 0 Then '如果不存在这个事情表则添加一个并命名
Set sh = Worksheets.Add(, Worksheets(Worksheets.Count))
sh.Name = str
End If '如果存在这个事情表
sh.Range(\"大众A1\公众).Resize(1, iCol).Value = .Range(\"大众A1\"大众).Resize(1, iCol).Value '获取事情表标题,一样平常只改动Range的列值和Resize中的行值,譬如事情表的标题是从B列第3行开始的,则这句代码就变成 sh.Range(\"大众B1\"大众).Resize(3, iCol).Value = .Range(\"大众B1\"大众).Resize(3, iCol).Value'
iNum = sh.Range(\"大众A\"大众 & Rows.Count).End(xlUp).Row '一样平常只改Range中的列值,如事情表是从B列开始的,这里就变成Range(\"大众B\"大众 & Rows.Count).End(xlUp).Row
sh.Range(\"大众A\公众 & iNum + 1).Resize(1, iCol).Value = .Range(\"大众A\"大众 & i).Resize(1, iCol).Value
'在新表中粘贴事情表数据,一样平常只改动Range的列值,若事情表是从B列开始的,则就改成B变成Range(\"大众B\"大众 & iNum + 1).Resize(1, iCol).Value = .Range(\"大众B\"大众 & i).Resize(1, iCol).Value
Next i
End With
Application.ScreenUpdating = True '打开屏幕刷新
End Sub
(3)代码输入完成后,点击菜单栏里的“运行子过程”。这样事情表就拆分完成了。
完成如下:
这样就通过这种办法一键完成事情表拆分了。
第2种:常规拆分——数据透视表
数据透视表真的非常好用,它不仅在数据统计剖析上拥有绝对的上风,而且利用筛选页也可以帮助我们实现拆分事情表的功能。步骤如下:
(1)选择数据源任一单元格,单击插入选项卡下的“数据透视表”。位置选择现有事情表,单击确定。
(2)把要拆分的字段“城市”放到筛选字段,“日期”“业务员”字段放在行字段,“发卖额”放在值字段。
(3)修正数据透视表格式,便于在天生新事情表的时候形成表格格式。
选择“数据透视表工具”下方“设计”选项卡里的“报表布局”下拉菜单的“以表格形式显示”。
选择“数据透视表工具”下方“设计”选项卡里的“报表布局”下拉菜单的“重复所有项目标签”。
选择“数据透视表工具”下方“设计”选项卡里的“分类汇总”下拉菜单的“不显示分类汇总”。
完成结果如下:
(4)末了把透视表拆分到各个事情表。选择“数据透视表工具”下方“剖析”选项卡“数据透视表”功能块里的“选项”下拉菜单的“显示报表筛选页”,选定要显示的报表筛选页字段为“城市”。
(5)为了方便后续处理,把数据透视表修正成普通表格。选择第一个事情表 “北京”,按住Shift,点击末了一个事情表“重庆”,形成事情表组。这样就能批量对所有事情表进行统一操作。
全选复制粘贴为值。
删除前两行,再把日期这列列宽调度一下就完成了。结果如下:
数据透视表这种方法比较随意马虎上手,但是步骤比较多,而VBA操作大略,但须要学习的东西很多。大家根据自己实际情形选择利用,
以为不错的话点个关注吧!有干系问题可不才方评论,禁绝时解答!