实操案例:从Excel薪资总表中自动分拆成各部门的表并保存
横向对比【数据透视表】、【VBA】、【Python处理】三种数据处理方式,教你快速办公,解放生产力
作为一位财务人员,经常需要做的事,就是制作公司人员的薪资表,需要给各部门经理提供其部门人员的情况,比如薪资、背景等。
这些信息都是保密的,只能让部门经理知道,因此是不可能将总表发给他们,让他们自己筛选查看的。所以就需要从总的薪资表中拆分出各个部分的薪资表。
所以我们的工作目的:从总的薪资表中拆分出各个部门的薪资分表
1、常规做法:利用Excel完成相关工作
通常的做法就是在Excel中建个数据透视表,然后按不同经理或部门逐个筛选,复制粘贴到新的Excel文件中,分别发给各部门经理。
具体步骤如下
Step1:使用总薪资表为源数据表创建数据透视表
将鼠标定位于数据区域,然后切换到【插入】选项卡,点击【插入数据透视表】,弹出【创建数据透视表】窗口,保持默认选项,点击确定。
Step2:拖动数据透视表字段
将部门字段拖入【筛选器】区域,将其他需要的字段全部拖入【行】区域。这里解释一下为什么要这样操作:
①我们希望按部门进行工作表拆分,那么部门就是我们的筛选项,所以必须放入筛选器中;
②其他字段,只有放入【行】区域中,才能保证和现有工作表的式样是一致的(即一维表格形式)
Step3:变换数据透视表形式
鼠标放置在数据透视表区域,切换到【设计】选项卡:
①点击【报表布局】按钮,选择【以大纲形式显示】,然后再选择【重复所有项目标签】
②点击【分类汇总】按钮,选择【不显示分类汇总】
设置之后,数据透视表就变成了和普通表格一样的形式。
Step4:拆分工作表
鼠标放置在数据透视表区域,切换到【分析】选项卡,然后在【数据透视表】分区,点击【选项】,在下拉菜单中,点击【显示报表筛选页】
在弹出的【报表筛选页】中,选择要筛选的字段,因为我们只设置了一个字段,这里默认是选中的状态,直接点击【确认】按钮即可。
最后生成我们想要的各个部门的薪资表
2、Excel的VBA解决思路
利用vba实现的的过程设计Excel相关开发工具的讲解,还有宏 录制,过于繁琐,这里就直接展示利用Excel的VBA实现拆分薪资表格的部分代码实现部分,
以上只是2、3个部分的部分代码实现,看着这里,酱酱想问问,你的vba使用的咋样尼
3、高效途径:利用python来完成对表格处理的工作,
下面我们就来将公司的薪资按部门汇总,并自动生成各部门的Excel文件。代码总共只需要5行,非常简单高效。
第一句是,import语句是为了调用数据分析模块pandas,
为方便后续代码的书写,惯常做法是给导入的库起个“绰号”,比如import pandas as pd的意思是导入pandas库,并取绰号为"pd",这样在后续的程序中直接用pd就可以代表pandas。
第二句,利用pandas语句,读取Excel文件,红色字体是文件的存储地址,每一个文件在电脑上都一个存储位置。
第三句,是读取出Excel文件中的前5行,df.head()。[默认是读取5行],如果要读取想要的行书,在括号里面填写对应的数字即可。
输出结果如下:
-----插入科普时间-------------
首先导入pandas库。Pandas是一个用于数据分析的功能非常强大的python包,是数据分析的必学必备工具。
这些了解一下即可,总之它们就是一个工具,能为我所用,能解决问题行,无需深入了解,只需要了解我们要使用的部分就行了。
python继承了传统编程语言的强大性和通用性,同时又借鉴了简易脚本和解释型语言的易用性。活跃的Python社区已经为Python开发了为数众多的扩展库,这可以满足任何的需求。
得益于Python的多功能性。 有超过125,000的第三方Python库。
这些库使得Python从从事传统的(例如web开发,文本处理) 到最新的(例如AI和机器学习)特定任务变得更为上手。只要你能想的出来,Python的模块和包就能帮你实现
Python的应用领域也是非常的广泛。如:Web开发、数据分析挖掘、人工智能机器学习、Devops运维、自动化测试、网络爬虫、量化交易、网络安全等。
这些是python的常见模块库种类:
------------科普结束-----------
我们继续后面的讲解:
然后我们使用pd.read_excel读取Excel文件,可直接将Excel文件读取为一个数据框(DataFrame)。
可以理解数据框就是一张Excel表,请看上图,是不是很像我们常用的Excel表格呢?我们用df.head()看一下它的前5行,以便观察是否有正确读取。看起来是一切正常的。
下面我们就按不同的经理来将这些数据拆分成不同的表格并单独保存,以便通过邮件的方式发给对应的经理。 当然也可以按部门来拆分,原理是类似的。
总表及拆分后的表如下图所示。可见拆分操作在不到1秒之内就全部完成了,堪称神速....
因为在总表中,经理的名下有很多员工,因此经理的名字是重复的,我们只需要获得所有经理的名字一次就够了,unique()就可以实现。
df["经理"].unique()可以理解为,从工作表中选取列名为“经理”的列,然后每个经理只取一次名字,然后存入manager这个数组。
然后我们将经理的名字逐个传入数据表,并逐个保存成新的Excel文件。
df.to_excel()可实现将数据框存储为Excel文件。
括号内的参数为需要存入的路径和文件名,此处我们希望把经理的名字放在文件名里面以便区分,
所以使用格式化字符串函数.format将经理的名字传入文件名。
我们不想在Excel中显示数据框的索引,因此index设为False。分拆后的Excel表如下图所示,分拆成功。
经过以上三种问题解决方式的对比,[1、数据透视表;2、Excel的VBA;3、python处理Excel]
从快捷性来讲:利用python处理相关Office文档的效率要高于普通的数据透视表工作流,办公效率大大加强,
从代码的简洁度来讲,VBA和python都是在利用一定数量的代码来解决问题,但是代码量简直是一个天上一个地下,python只需要5行即可得到想要数据处理结果,而VBA的代码量是python的n多倍。
从高效性角度出发,数据透视表的处理方法是每次都要重复操作,不具备可复制性,而利用python编程程序处理的方式,每次有了新的总薪资表,只要重新读取一遍,即可得到数据的处理结果,可以真正意义上把我们从重复的工作的解放出来
----分享结束分割线----