databasemetadata获取表注释_有比这更快的Excel工作表拆分法吗?有,你就最牛!【Excel教程】...

回复[目录]学习113篇Excel教程

a9b11d4501b748ab86557a90038d7968.png

全套Excel视频教程,微信扫码观看

各位小伙伴有没有遇到过这样的问题:当我们把所有的信息汇总在一张表里后,又需要将这张大表按某一条件再拆分成多个工作表。那怎么才能实现呢?可能最笨的方法就是在原工作表筛选数据然后复制粘贴到新工作表,不过这种方法不适合数据多的案例,并且新工作表也需要一一重命名,显得繁琐。今天就给大家介绍两种快捷实用的工作表拆分方法。

如图,现在要把这个工作表的内容按城市拆分成多个工作表。

8775be774aa13038f65ae6f7309c8850.png

第1种: 极速拆分——VBA(文中提供有代码)

VBA是EXCEL处理大量重复工作最好用的工具。不过很多人对VBA一窍不通,所以今天给大家分享一段代码,并且详细解释了如何根据实际表格修改代码值,方便大家在工作中使用。

(1)按住Alt+F11打开VBA编辑器,点击“插入”菜单下的“模块”。

6254e617d635d4cd9b1749ef073c9d90.png

(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 With

Application.ScreenUpdating = True

End 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)代码输入完成后,点击菜单栏里的“运行子过程”。这样工作表就拆分完成了。

33d436d650099ef4afff3a5250570a91.png

完成如下:

a2040760bc8397f92f3681a55b61753f.png

这样就通过这种方式一键完成工作表拆分了。

第2种: 常规拆分——数据透视表

    数据透视表真的非常好用,它不仅在数据统计分析上拥有绝对的优势,而且利用筛选页也可以帮助我们实现拆分工作表的功能。步骤如下:

(1)选择数据源任一单元格,单击插入选项卡下的“数据透视表”。位置选择现有工作表,单击确定。

cfc8ae24efaf5a74ed9f4f951075017b.png

(2)把要拆分的字段“城市”放到筛选字段,“日期”“业务员”字段放在行字段,“销售额”放在值字段。

8492df368da2940891bb8d22c7e66360.png

(3)修改数据透视表格式,便于在生成新工作表的时候形成表格格式。

选择“数据透视表工具”下方“设计”选项卡里的“报表布局”下拉菜单的“以表格形式显示”。

550e69ebb83d7ed12b9b4ff99008d426.png

选择“数据透视表工具”下方“设计”选项卡里的“报表布局”下拉菜单的“重复所有项目标签”。

ed5ddffe68f96a9f2052645ca783389d.png

选择“数据透视表工具”下方“设计”选项卡里的“分类汇总”下拉菜单的“不显示分类汇总”。

5fff93cb9a263d75a1e3626bf083cc3e.png

完成结果如下:

8061d3e6d3752ac9810f0fec10afb553.png

(4)最后把透视表拆分到各个工作表。选择“数据透视表工具”下方“分析”选项卡“数据透视表”功能块里的“选项”下拉菜单的“显示报表筛选页”,选定要显示的报表筛选页字段为“城市”。

0e1842490886b4aee8578f70404acc4a.png

(5)为了方便后续处理,把数据透视表修改成普通表格。选择第一个工作表 “北京”,按住Shift,点击最后一个工作表“重庆”,形成工作表组。这样就能批量对所有工作表进行统一操作。

f13c984b862ee8cb5584cb9178e513a4.png

全选复制粘贴为值。

a4072e3b54f923a7b7e9f75665efad8a.png

删除前两行,再把日期这列列宽调整一下就完成了。结果如下:

7662137e3658392054245cbd8ac7a438.png

数据透视表这种方法比较容易上手,但是步骤比较多,而VBA操作简单,但需要学习的东西很多。大家根据自己实际情况选择使用,觉得不错的话点赞吧!

另外想练习是否看懂了VBA代码修改的读者可以利用文章配套的拆分表素材2进行练习。配套的练习课件请到QQ群:537870165下载。

添加号主微信号

时不时还会给你发Excel福利

1e70d958d6fad96f171f7fc042a61516.png1e70d958d6fad96f171f7fc042a61516.png1e70d958d6fad96f171f7fc042a61516.png

98199676cb4db0853e79d41d378bff5b.png

微信扫码观看全套Excel、Word、PPT视频

1e70d958d6fad96f171f7fc042a61516.png1e70d958d6fad96f171f7fc042a61516.png1e70d958d6fad96f171f7fc042a61516.png

54039e42fe49d207027a4d9428c3ea00.png

7a19167c22ff081ed1b33acb0a32c131.gif

爆文推荐:

Excel教程:看高手秒秒钟列出多种Excel一对多查询方法!

一箩筐Excel操作技巧实战汇总

Excel教程:明明看到1了,为什么查找不到?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值