最快最省事地将excel表按字段筛选后分表保存(不用透视表和vba)

如何最快最省事地将一张excel表中的记录按照指定字段分类筛选后分解到不同的新表(或者新表页)?

最快最省事地将excel表按字段筛选后分表保存(不用透视表和vba)

一、需求

这是办公室、财务室常见的一种需求,通常很多人会用透视表解决,会编程的也许还会用vba搞定。但是其实这都不是最简单的办法,因为用透视表或者vba解决,你都需要点n多次鼠标,选择n多次菜单。

设想一下,如果是这样的场景:

每天业务软件导出前一天的几千条销售数据交给你,里面业务员有几百人,需要你一上班将这些数据分解成每个人的个人销售表,需要你生成独立的excel文件以便于分发给不同的人。每天如此要生成几百张子表,你觉得每天得点多少次键盘鼠标才能做完?

今天介绍一种最快速省事的解决办法,用python解决,你只需要事先准备4行代码,这些代码只需要第一天编写一次,以后每天只需要点一次鼠标重复运行,几秒钟就能完成将excel表按照指定字段筛选拆分的任务了。

先演示效果,再解释代码,这段代码仅仅只是小功能而已,本文末提供下载的手册资料中有更多功能介绍。

二、演示效果动画

注意其中的执行步骤,在准备代码后,你每天实际的执行步骤仅需要点击run一次,不再需要你进行繁杂的透视表操作,几秒钟后分割的子表就自动生成在指定目录了。

最快最省事地将excel表按字段筛选后分表保存(不用透视表和vba)

三、解释代码工作原理

代码非常简单,仅仅4行,容易理解,比用vba写简洁清晰多了。

最快最省事地将excel表按字段筛选后分表保存(不用透视表和vba)

并且重复使用比vba方便,因为python代码是在excel之外保存的,也就是与原表无关的,无需添加到excel表中去就能直接执行。这意味着次日你拿到新的excel表之后,无需你在新表中重复添加或者编写vba代码,你都能直接运行重复工作了。

所以,python代码比你用vba简单且便于重复运行

此外,如果希望筛选结果存放不分文件,而是存放在单一文件的不同表页,你只需要用一个pd.ExcelWriter对象中转下即可。

这里的4行代码仅仅涉及了pandas的一小部分功能,更多的功能请见文末下载资料中提供的参考资料

四、与透视表和vba对比工作效率

右侧是同样需求,对比网上提供的透视表解决方案(太长了只能缩得很小)。

下侧是同样需求,对比网上提供的VBA的分表解决方案。VBA代码更长,并且仔细看代码可见,4个分表的类别是在代码中固定写死的,这意味着如果将来有变化你就需要修改代码,并且如果分类较多,例如分100个部门,或者分200个员工,那时候就要修改出上百条代码了。

而python解决方案,仅4条代码,并且类别是自动识别出的,如果将来类别有变化,例如部门或者员工增加,均无需修改代码。

最快最省事地将excel表按字段筛选后分表保存(不用透视表和vba)

设想一下,如果资料较多,分表较多,再需要拆到独立文件以便分发给不同的人。那么用透视表你慢慢点,估计能折腾你半个小时一个小时吧。

偶尔为之也就罢了,如果这是每天的常态化工作,得浪费多少脑细胞啊?但是,用python,这种工作几秒钟就够了。

五、资料下载

这里的4行代码仅仅涉及了pandas的一小部分功能,目的是展示python控制excel的优越性,希望能提高你对python的兴趣。

最快最省事地将excel表按字段筛选后分表保存(不用透视表和vba)

完整的演示代码,包括官方的参考文档已经打包,上传在百度盘。请加关注后用私信发送"20180305"字样,系统会自动在私信中回复您下载地址。

最快最省事地将excel表按字段筛选后分表保存(不用透视表和vba)

请及时关注头条号“有只狗狗叫多多”,后续将介绍python更多参考代码,稍做修改即能使用,学习python不要错过哦。。。。


分享到:


相關文章: