excel学习库

excel表格_excel函数公式大全_execl从入门到精通

制作复合分类项的员工属性统计表

公司HR部门在月底或者月初的时候有一项人事报表统计项要做,对本月度人员的年龄、学历、司龄、性别等进行制作复合分类项的员工属性统计表,通常情况下都用函数COUNTIF进行统计,一般的HR要花费好长的时间才能完成这项统计。

我们学习了数据透视表,能不能利用Excel的数据透视表工具来实现呢?如下表中共有4500多条员工信息记录(模拟数据,已删除其他不用的项目):

要求使用数据透视表,制作如下图所示的具有复合分类项的统计表。

要求分析:

对部门、年龄、学历层次进行人数统计,其中:

学历为初中及以下、高中中专中技、大学专科本科、硕士研究生;

年龄的分段为:25岁以下、25-30岁、30-40岁、40-50岁、50岁以上;

对于这类问题,我们一般应该想到的是使用数据透视表的方法,如果要进行常规的数据透视表统计,那么要分别进行三次数据透视表的设置,如果数据源更改,也要重复设置三次。

数据透视表对于数据源的要求是一维数据,如果要生成上述的结果的样式,就要对数据源进行转一维数据处理,比较麻烦,容易出错;

对数据透视表中同一字段按不同的分类标准进行分类产生的分类项,被称为复合分类项。Excel数据透视表并不能直接产生这样的复合分类,但借助SQL语句则可以实现。

那么对于这种情况采取的方法为:使用OLE DB的方式,在使用SQL的情况下生成数据透视表的一维数据源,具体操作步骤如下:

【STEP 01】 通过导入外部数据“编辑OLE DB查询”创建数据透视表:

依次单击【数据】-【现有连接】,在弹出的对话框中选择【浏览更多】,然后找到源文件“制作复合分类项的员工属性统计表”,然后单击【打开】。如下图:

【STEP 02】在弹出的对话框中选择"花名册$",然后单击【确定】。

【STEP 03】在弹出的对话框中选择【数据透视表】,然后单击【属性】。

【STEP 04】在弹出的对话框中选择【定义】,然后在【命令文本】里输入SQL语句,然后单击【确定】,在弹出的对话框中继续单击【确定】。如下图:

SQL语句为:(直接复制)

select 职位类别,员工类别,学历层次,"学历" as 分类 from [花名册$] union all

select 职位类别,员工类别,年龄分段,"年龄" as 分类 from [花名册$] union all

select 职位类别,员工类别,单位,"部门" as 分类 from [花名册$]

【STEP 05】在弹出的数据透视表视图中进行如下设置,同一般的数据透视表的设置:

最后进行设置美化即可完成对复合分类项的HR人事月报表的统计。

思路解释:

1、使用三次select语句,都引用“花名册”工作表中的“职位类别”、“员工类别”作为前二个字段,而分别引用了“学历层次”、“年龄分段”和“单位”作为第3个字段,这是实现复合分类项的关键;

2、使用“as from”语句,定义“分类”字段,分别添加“学历”、“年龄”、“部门”等3个分类项,相当于构建了3个一维表。

3、最后使用union all 将3个select语句连接起来,用于合并数据,相当于将新构建的3个一维表追加在一起。

本例通过导入外部数据“编辑OLE DB查询”创建数据透视表,利用SQL连接语句对同一数据源表的相关字段在同一位置上进行多次引用,从面构建出了复合分类项的数据透视表。这样实现的优点在于:

1、可以不用打开源文件而直接进行统计;

2、如果源文件中的数据进行修改或者更新,只需刷新即可;

3、如果数据量大,可防止Excel的假死;

4、SQL语句的执行效率快,且易于维护,同时在源数据中不做任何修改也不增加辅助列,对源数据的表结构不造成任何的损坏。

应用场景扩展:

如果花名册中没有年龄分段,只有出生日期、入职日期,如下表所示:

现在要实现的结果如下图:

要求分析:

对性别、学历、司龄、年龄进行人数统计,其中:

性别分别为“男”与“女”;

学历为初中及以下、高中中专中技、大学专科本科、硕士研究生;

年龄的分段为:25岁以下、25-40岁、40-50岁、50岁以上;

司龄的分段为:3年以内、3<=N<5、5<=N<10、10<=N<15、15<=N<20、20年以上(含)。

我们依然通过导入外部数据“编辑OLE DB查询”创建数据透视表。在第四步时输入下面SQL代码就行:

SQL语句为:(直接复制)

select 工号,单位,职位类别,员工类别,性别 as 类别明细,"性别" as 类别 from [花名册$] union all

select 工号,单位,职位类别,员工类别,

switch(datediff("yyyy",出生日期,date())<25,"25岁以下",

datediff("yyyy",出生日期,date())>=25 and datediff("yyyy",出生日期,date())<40,"25-40岁",

datediff("yyyy",出生日期,date())>=40 and datediff("yyyy",出生日期,date())<50,"40-50岁",

datediff("yyyy",出生日期,date())>=50,"50岁以上") as 类别明细,"年龄" as 类别 from [花名册$] union all

select 工号,单位,职位类别,员工类别,学历层次 as 类别明细,"学历" as 类别 from [花名册$] union all

select 工号,单位,职位类别,员工类别,

switch(datediff("yyyy",入职日期,date())<3,"3年以内",

datediff("yyyy",入职日期,date())>=3 and datediff("yyyy",入职日期,date())<5,"3-5年",

datediff("yyyy",入职日期,date())>=5 and datediff("yyyy",入职日期,date())<10,"5-10年",

datediff("yyyy",入职日期,date())>=10 and datediff("yyyy",入职日期,date())<15,"10-15年",

datediff("yyyy",入职日期,date())>=15 and datediff("yyyy",入职日期,date())<20,"15-20年",

datediff("yyyy",入职日期,date())>=20,"20年以上") as 类别明细,"司龄" as 类别 from [花名册$]

在弹出的数据透视表视图中进行如下设置:

最后进行数据透视表设置美化即可。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接