最近发现有好多小伙伴都在问怎么将一个表快速地拆分成多个。其实这个操作起来非常简单,只需要用数据透视表的“显示报表筛选页”就可以快速完成,这是最简单、高效的方法。看到这里有小伙伴肯定要点“返回”按钮了,因为已经掌握了嘛!不过呢,你要是觉得李老师也是“普通青年”,那你就错了,不看到最后你永远不知道你会得到什么!阿甘有句著名的哲言,一起欣赏一下。
Life is like a box of chocolates, you never know what you are gonna get.
如下是一份数据表,我们需要按照产品,把对应的数据显示到不同的工作表中。
我们还是先讲一下用数据透视表怎么分页吧。
Step 1、插入数据透视表
插入数据透视表,将“产品”字段放到“筛选”区域,将其他所有需要的字段都放到“行”区域,如果是数值型字段,也可以放到“值”区域。
2、显示报表筛选页
选中数据透视表上任意一个单元格,点击【分析】选项卡,在“数据透视表”的“选项”下拉菜单中点击“显示报表筛选页”。
在弹出的对话框中选中需要按照哪个字段拆分。如果在“筛选”区域添加了多个字段,这里都会列出来,我们只要选中拆分依据的那个字段就可以了。
咻咻咻~几秒钟就可以创建数个工作表,并且每个工作表里面显示的内容和工作表标签指示的内容是一致的。也就是说,每个数据透视表都做好了筛选来显示不同的内容。
是不是超级简单?
说实话,对有些同学来讲,这个可能还不够完美,这是因为“产品”这个字段没有体现在数据表中,而是在筛选页中;
生成的是数据透视表,而不是表格。
搬过来小板凳,坐好了,李老师开始放大招了~
下面我们用VBA结合SQL查询的方式来实现拆分。
两种方法,你喜欢哪一种?
还有的小伙伴会用字典的方法实现拆分。但是我用之前文章中提到的超过20万行的数据来拆分,使用VBA SQL法不用一分钟就搞定,使用VBA代码法则估计要花费几十分钟才可以。我测试了一下,过了二十几分钟,字典法才运行到57000多行。不是因为我的电脑慢哦,Intel的4核I7处理器,8G内存,所以不是电脑的事儿,应该是代码的效率问题。如果实际应用中的数据没有这么多,也可以考虑字典法。
字典方法的实现思路
1、用循环检查分类字段中的项是否在字典中存在,如果不存在该项就添加新项目,值等于该行单元格区域(作为对象来赋值);如果存在该项就用Union方法联合该项对象和新的单元格区域。
2、遍历字典,循环创建工作表,将字典内容输出到新工作表中。
附字典法的代码,供学习参考。
另外,如果你想把拆分后的每个工作表单独保存为一个工作簿文件,请参考以下内容。
--End--