VBA案例分享:如何快速将表格拆分为多个工作表?

嘿嘿嘿,我觉得VBA最好玩的一点是:它非常接地气!VBA是什么?就是用敲代码的方式使用EXCEL呗,一切报表用上VBA,简直分分钟搞定呀!
本篇想要分享的是我们工作中经常会用到的工作表拆分大法,代码具有普适性,可以存成xlsm文件随时调用。

首先看一下成果~

1.gif

1.梳理代码的结构

从gif图可以知道,点击按钮后首先弹出对话框询问按哪一列进行分列,之后除了总表外的所有表格会被删除,并生成新的表格,最终弹出信息框提示运行的时间。由此可以知道代码的结构为:

    1. 设置对话框获取筛选列。
    1. 删除除了总表之外的表格。
    1. 根据筛选列新建表格,并设置表格名称为可筛选项。
    1. 将筛选得到的数据复制到对应表格里。
    1. 计算代码运行时间,弹出信息框。

2.哟西,开始写代码吧!

2.1. 设置对话框

VBA案例分享:如何快速将表格拆分为多个工作表?_第1张图片
image.png
  • 首先,记录代码开始运行的timer为t,以便之后计算运行的时间。
  • 因为之后的代码会多次用到总表,所以为了方便引用,设置变量sht0为当前工作表。
  • 用户输入inputbox的值将用于列的筛选,定义其为变量l。此外,为了引导用户正确输入,设置if函数来进行提示。
    注:这里列的最大数设置为Z,如果工作表列数多于Z,需要进行更改。

2.2.删除多余的表格

VBA案例分享:如何快速将表格拆分为多个工作表?_第2张图片
image.png
  • 平时Excel删除表格都会弹出警告框,所以在删除表格之前需要先设置displayalerts为false,不然每删除一个表就弹出来一个警告框,根本没办法好好玩耍了呢~
  • 因为我们不删除总表,为保险起见,引入了两个if判断,通过判断表格数量是否大于1和表格名称是否为总表名称进行for循环。

2.3.创建新表格

VBA案例分享:如何快速将表格拆分为多个工作表?_第3张图片
image.png
  • 为了以筛选列的非重复值创建表格,避免创建重名表格,所以在创建之前,需要先判断是否已存在该表格,以k作为判断结果,再创建新表格。

2.4.填充数据到对应表格

VBA案例分享:如何快速将表格拆分为多个工作表?_第4张图片
image.png
  • 使用autofilter进行筛选之后,复制数据到表格中,任务完成。
  • 工作完成返回总表,并设置msgbox,全部搞定~

3.代码文件

需要代码的童鞋可以移步腾讯文档~
https://docs.qq.com/doc/DVHJPRmtSYlNqT051

你可能感兴趣的:(VBA案例分享:如何快速将表格拆分为多个工作表?)