导出排除的表_excel拆分实例:如何快速制作考勤统计分析表

b1a6fa7aaa5589784701eb2095eea7f6.png

编按:面对新的统计需求,很多人会一下变懵,不知如何办。如果涉及的统计有一千多行数据,哭的心思都有了:什么时候才能下班哟!今天老菜鸟通过考勤统计分析表实例分享自己面对新统计需求的解决方法:简化数据、找数据规律、做辅助列。任何复杂的统计,只要采取这样的方法,大多几分钟就会搞定。

6cbed7665159fb9c192d1afbf21d2c77.png

考勤管理,是企业劳动纪律管理的最基本工作,公司领导要求人力资源每周按部门汇总一份考勤打卡情况通报,格式如下:

534558da823736b5b23a1f6d56e24eb1.png

通报表可以更为宏观的看到考勤纪律的执行情况,是非常好的一个管理工具,但是负责制作报表的伙伴却是异常烦恼。不为别的,就是不知道该如何下手,无奈之下,找到老菜鸟求助。

我们先来看看从考勤软件导出的数据源吧:

0318d1064281e0721721bea0086b611b.png

整个表有二十多列,一千多行,如果仅靠手工统计,难度确实不小。如果是你接到这个任务时,会如何着手开始统计呢?

其实问题并没有看上去那么复杂,关键是找到思路。思路决定出路,最终完成这个统计表并没有用什么高大上的函数,也不是像有些伙伴猜的那样,用VBA去解决,只是用了几个常用的函数IF、COUNTIF、SUM和SUMIF就搞定了。是不是很想知道方法呢?

拿到数据,切忌盲目动手,而是首先整理数据。就当前通报表来说,数据源中对我们有用处的列并不多,只需要保留部门、工号、上下班的打卡结果这四列即可:

7316c39669124455ec1b22dbd21e3887.png

看上去清爽了很多吧?删去了无用数据之后,就需要分析具体的统计思路,同时在数据源中寻找可以利用的规律。很容易看到,每个工号对应的打卡结果都是6行2列(12个单元格)的一个数据区域:

b8c0ee59d0456f8c3b036e58003bea0a.png

我们需要根据这12个单元格中的信息进行分类统计,按照要求分为正常和异常两类。其中异常包括了:缺卡、请假、迟到和早退四种情况,只要没有异常即可视为正常。

根据统计要求添加辅助列。辅助列的作用就是简化问题的难度系数,在这个问题中我们可以这样设置:

1c2d6fb5ed7753ecf1776ad9df34e2d3.png

在继续往下前,需要理清楚这里统计的6个数据的关系。通报表是按人数而非次数统计的,因此可以得出这些结论:

◎同一工号一周内不管缺卡多少次,都算缺卡1人;

◎同一工号一周内不管请假多少次,都算请假1人;

◎迟到、早退规则同上;

◎同一工号,一周内不管缺卡+请假+迟到+早退有多少人,只要大于0,都算异常1人;

◎同一工号,一周内正常人数等于1-异常。

很多时候我们是不建议使用合并单元格的,因为合并单元格会带来很多不方便。但是这个例子中,每6行数据(一个工号的数据)统计出一行结果,所以使用合并单元格会更方便。分别把E2:E7、F2:F7、G2:G7、H2:H7、I2:I7、J2:J7合并,然后在G2中输入公式:

=IF(COUNTIF($C2:$D7,G$1)>0,1,0)

右拉填充公式,4项异常都进行了统计。

933dfff0c7d800bfae36b18970583893.png

从结果来看,这四项异常数据的统计结果是正确的。

这个公式的核心是COUNTIF,当区域中符合条件的个数大于0时,得到1,否则得到0。注意区域和条件的写法,$C2:$D7锁定了列,G$1锁定了行,这样公式在右拉和下拉的时候就不用再去修改了。

异常的统计,只要后面四项之和大于0就算异常1人,公式为:=IF(SUM(G2:J7)>0,1,0)。这个公式很简单了,相信大家都能明白。

9cccd016e54e37a2e86b0b99da52e90a.png

到这一步,正常的统计更没什么难度:

5cdcbf787c214d429b86f2b346f195d7.png

选中统计好的6个单元格,双击J2单元格的右下角,公式会自动向下填充至数据的最后一行,可以浏览一下结果:

3ccb2ca18937cf18cb0b1fd4548d5ebe.png

咦!早退和迟到的统计结果出现了错误,怎么解决?

有些朋友可能想到了用通配符,没错,就是通配符,不过不用修改公式,只需要将表头修改一下就好了:

7dcf03920920aa3eeef32362fcc12e93.png

看明白了吧,在表头“迟到”和“早退”的两边都加上*,统计结果就正确了。

数据源经过以上处理以后,要做出最终的统计表,已经完全不是问题了:

98ba9d64965dcaefc50cd947bf508c05.png

在职人数公式:=COUNTIF(数据源!A:A,汇总!B4)/6。至于为什么要除以6,不难理解。

正常打卡人数:=SUMIF(数据源!A:A,B4,数据源!E:E),SUMIF最基本的用法哦;

占比:=D4/C4

后面的几列都是用SUMIF统计人数,用除法计算占比。

最后总结一下:

今天的通报表乍一看很棘手,平时工作可能也会遇到类似的情况。解决的办法就是:首先排除无用的数据,然后是寻找数据规律,根据统计需要使用辅助列,最后通过一些基本的操作,例如累计、排序、合并,还有填充等,完成任务。

今天的分享重在体会问题的解决过程,涉及到的公式都非常简单,相信大家在动手练习的过程中一定会有很多收获的。

****部落窝教育-excel表格拆分技巧****

原创:老菜鸟/部落窝教育(未经同意,请勿转载)

更多教程:部落窝教育(http://www.itblw.com)

微信公众号:exceljiaocheng

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rds 如何学习数据库_如何将本地数据库迁移到云数据库 RDS 上?

使用数据传输服务 ( DTS ) 将本地数据库迁移到 阿里云的云数据库 RDS ,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。接下来我们将学习下如何使用 DTS 将本地数据库迁移到 RDS 上。背景DTS 支持 SQL Server 数据结构迁移和全量迁移。DTS 支持…

arm ida 伪代码 安卓 符号表_IDA 制作 sig文件 gdb 导入符号表

背景最近比赛遇到了一个题目, 32位静态链接去符号了. 所以用IDA分析的时候很多libc的库函数都无法识别, 就需要在 IDA 中引入 sig 文件. 从而可以识别诸如 read, write, malloc, free 这些库函数. 虽然网上已经有很多制作好的sig文件, 但是还是应该学会自己制作sig文件以备不时…

lua如何打印行号_LUA教程错误信息和回跟踪(Tracebacks)-34

虽然你可以使用任何类型的值作为错误信息,通常情况下,我们使用字符串来描述遇到的错误。如果遇到内部错误(比如对一个非table的值使用索引下标访问)Lua将自己产生错误信息,否则Lua使用传递给error函数的参数作为错误信息。不管在什么情况下&a…

python 套接字 struck_Python socket粘包问题(最终解决办法)

套接字:就是将传输层以下的协议封装成子接口对于应用程序来说只需调用套接字的接口,写出的程序自然是遵循tcp或udp协议的实现第一个功能个:实现:通过客户端向服务端发送命令,调取windows下面的cmd窗口,将服…

python的lib文件夹_python遍历文件夹os.path与pathlib

首先我们来一个需求,这个函数接受文件夹的名称作为输入参数,返回该文件夹中文件的路径,以及其包含文件夹中文件的路径。def print_dir_contents(sPath):import osfor sChild in os.listdir(sPath):sChildPath os.path.join(sPath,sChild)if …

python 数据字典用法_python数据字典的操作

一、什么是字典?字典是Python语言中唯一的映射类型。映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表。字典对象是可变的,它是一个容器类型,能存储任意个数…

双系统安装deepin20_win10deepin15.10双系统安装教程

第二步:下载深度启动盘制作工具深度启动盘制作工具地址第三步:制作U盘启动盘打开第二部下载的启动盘制作工具,并准备一个u盘插入待装系统的电脑,选择镜像文件后,下一步选择磁盘并勾选格式化磁盘,点下一步开…

ubuntu19 安装git_在Ubuntu 18.04上安装Git

步骤1.首先,通过运行以下命令确保您的系统和apt包列表完全更新:apt-get update -yapt-get upgrade -y第2步。在Ubuntu 18.04上安装Git。现在让我们安装git:apt install git您可以使用以下命令来检查已安装的git版本:$ git --versi…

mysql更新多条数据6_mysql语句:批量更新多条记录的不同值

mysql更新语句很简单,更新一条数据的某个字段,一般这样写:如果更新同一字段为同一个值,mysql也很简单,修改下where即可:这里注意 ‘other_values’ 是一个逗号(,)分隔的字符串,如&am…

php mysql query 行数_如何在PHP中获取MYSQL数据库返回的数据的行数?

展开全部1. mysql_num_rows 可得到e69da5e887aa3231313335323631343130323136353331333337383861查询记录数<?php $con mysql_connect("localhost", "hello", "321");if (!$con){die(Could not connect: . mysql_error());}$db_selected …

mysql数据库开发环境_MacOS下搭载开发环境之数据库篇(Mysql + Navicat)

一、安装Mysql1、官网下载mysql的tar包(提示&#xff1a;建议vpn环境下载)2、解压并安装tar包# 移动解压后的二进制包到安装目录sudo mv mysql-5.7.19-osx10.9-x86_64 /usr/local/mysql# 更改 mysql 安装目录所属用户与用户组cd /usr/localsudo chown -R root:wheel mysql# 初始…

mysql alter 唯一键_MySQL列属性 之 唯一键

MySQL列属性 之 唯一键唯一键唯一键&#xff1a;每张表往往有多个字段需要具有唯一性&#xff0c;数据不能重复&#xff0c;但是在每张表中&#xff0c;只能有一个主键&#xff0c;因此 唯一键就是用来解决表中多个字段需要具有唯一性的问题。例如身份证号码应该每一行的记录不…

如何在mysql中添加复选框_如何使用输入和复选框更新mysql

如果我理解正确,您需要这样做:mysql_query("UPDATE mp3SETaktif 1,baslik " . mysql_escape_string($_POST[baslik]) ."WHERE id $zuha");mysql_query("update mp3 set aktif 1,baslik $_POST[baslik]where id $_POST[id]")现在唯一的区别…

mysql 检查列是否存在,如何检查mysql表列是否存在?

How can I check if mysql table field even exists ?The column name is price and I need to see if it exists.Havent understood really how the EXISTS works...Any examples or ideas ?Thanks解决方案In PHP:$fields mysql_list_fields(database_name, table_name);$c…

mysql proxy yum_mysql 高可用架构 proxysql 之一 yum安装

os:centos 7.4mysql: 5.7proxysql: 1.4.10ip 规划如下&#xff1a;192.168.56.101 node1 (proxysql)192.168.56.102 node2 (mysql master)192.168.56.103 node3 (mysql slave)192.168.56.104 node4 (mysql slave)安装mysql 5.7node2、node3、node4 安装 mysql 5.7 software详细…

wpf 使用位图画图为什么断断续续_WPF的未来是微软WinUi!

WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架&#xff0c;属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架&#xff0c;真正做到了分离界面设计人员与开发人员的工作&#xff1b;同时它提供了全新的多媒体交互用户图形界…

antd新增一行页码不正确_antd-Table@4.x对rowKey属性的重构

时间&#xff1a;2020/04/26 &#xff0c;转载请注明出处。写在前面antd团队于2020年2月发布了酝酿已久的antd4.0版本&#xff0c;对样式的调整、部分组件逻辑的重构都进行了较大改动&#xff0c;本文针对Table的rowKey属性重构作分析。由一个mistake带来的思考在数据治理模块的…

qt调用mysql调用了存储过_Qt调用Server SQL中的存储过程

Server SQL中的存储过程如下&#xff1a;CREATE procedure PINSERTPCpcnum int,pcname varchar(50),pctype int,ipaddress varchar(50),port int,pcid int outputas--declare pcid intif exists (select * from COMPUTERTABLE where PcNum pcnum)set pcid -1elsebegininser…

pandas mysql index_Pandas从入门到精通(3)- Pandas多级索引MultiIndex

首先了解一下什么是多级索引&#xff0c;以及它的作用&#xff0c;为什么要有这个玩意。多级索引也称为层次化索引(hierarchical indexing)&#xff0c;是指数据在一个轴上(行或者列)拥有多个(两个以上)索引级别。之所以引入多级索引&#xff0c;在于它可以使用户能以低维度形式…

tensorflow 启动多个session_Tensorflow源码解析7 -- TensorFlow分布式运行时

1 概述TensorFlow架构设计精巧&#xff0c;在后端运行时这一层&#xff0c;除了提供本地运行时外&#xff0c;还提供了分布式运行时。通过分布式训练&#xff0c;在多台机器上并行执行&#xff0c;大大提高了训练速度。前端用户通过session.run()启动系统执行时&#xff0c;tar…