一个人的考勤删除一天考勤记录有好几条记录如何只保留最早和最晚的两条

(不包含联网Ip这种方法成本太高)... (不包含联网Ip这种方法成本太高)

如果是按工号区分人那么只要工号与人一一对应就好了,合并到软件里面也不会覆盖

你对这个回答的评价是?

}

根据指纹机每月自动统计出勤率

現在很多公司采用指纹签到然而要按这个计算每个人的出勤率和工作时间,还是要费一番周折我现在把方法公布出来,方便所有用指紋签到的公司考核员工的工作时间

首先由行政将指纹记录复制成文本形式给你,有的指纹机后台用MSSQL如果给你的是txt或csv类型的,如果安装openOffice可以打开的时候可以选择以什么作为分隔符,我们只需要两条信息一个是员工指纹编号,还有一个是时间即使不是xls,给csv的都是业界良心

openOffice的用户可以在打开的时候直接选择怎么分列,分完保存一下就可以了如果打开的时候发现是乱码,那么请分别试验character set为GB18030和utf-8总有一個好的。

打开之后另外保存为xls文件就可以了,接下来就由Excel来操作了毕竟中国excel基本是免费的,用户远远多于openOffice的用户

没有openOffice的用户看这里,你可以先用文本或notepad方式打开文档看一下它的格式确定员工编号和签到时间之间的分隔符号。

像我们这样得到的tab分隔的txt

右键文件,打開方式(open with)选择openOffice或者Excel,千万不要勾选“始终用此方式打开”电脑小白请先打开excel或openOffice Calc,然后选择打开这个文件这样更保险。

如果万一不小心點了始终打开再右键,选择打开方式再重新指定为记事本。

Office 365(16)居然无法直接打开这文件直接改扩展名为csv的话,打开后各列是挤在一起嘚

二 数据格式整理为需要的

然后可以用excel打开,如果签到编号和签到时间在同一列那么选中这列,选择07版及之后版本的数据—分列根據符号或者宽度分列就可以了。

不用装openOffice可以用excel来解决,旧版本如07开始菜单位置是一样的,03也可以做只是菜单位置不同。选中A列选擇数据—分列

按红色的地方,一直到下一步

这里就要根据当前文件的情况有的可能是逗号或分号甚至空格,一般还是选择tab

然后前面一些数据有的是不要的,你稍微看下规律就可以知道哪列是员工编号一般行政会告诉你。其他的列就不要了就要员工编号和签到时间就鈳以了。

如果用openOffice打开或者类似2003的,可能会出现以下情况:


这情况这个值是无法进行计算的请留意它前面的小',这是强制转化为字符串嘚意思

正确的时间日期,应该是40000以上的数字你在单元格格式中,选择日期和时间是时间日期形式这只是它的显示形式,选择数字的話就变成40000以上的数字,这才是正确的时间日期如果不是的话,就需要datevalue()+timevalue()把它转变一下一般系统是认的。

我们得到另外一列数据时将咜整个选择,选择的方法是选择第二行也就是数据的第一行,再同时按ctrl+shift再按向下的字符就圈中了这一列第一行以外的所有有效数据,嘫后右键复制再选择这一列第二行,即数据第一行选择性粘贴,选择数值

这样,这一列就是独立数据不依赖于任何其他数据,就鈳以把之前的原始数据给删掉了

现在我们只需要两列数据,员工编号与格式正确的签到时间其他都可以了,我公司还需要一列是名称另外弄一张表,叫man每一行一个编号和一个员工名称,员工的编号的名称由行政输入给你要确保编号那一栏的内容都是数字不是字符串,如果是字符串可以复制到记事本,再从记事本复制回来或者用value(),然后选择性粘贴选择数值,把它变为独立的值

问行政要到每個编号对应的员工姓名,比如这里


让她填上ID和姓名就可以了

为了后来方便,这张表取名为man签到数据为record。

那么根据行政要求record的第二列洎动填上名字,不需要的可以省略

B$22的22表示那里只有22个员工,员工数量增加的话这个数值也要增加,可以预先填个300就行vlookup第四个参数要加上false,不然有的地方命名找得到会显示错误的

record表第四列是所属日期。因为程序汪往往加班苦逼会在24点之后走,而这之后走的话应该算到前删除一天考勤记录的工作日期中。我们假设早上6点前走的都是昨晚加班的下班时间

这样我们基本数据就有了。

接下来进行排序選择数据,排序第一顺序按员工编号A列,第二顺序按签到时间C列

如果我们只计算9月份的工作时间,那么9月1日6点之前的数据其实是算箌8月31日的,要把这些去掉另外10月1日6点之前的数据也要拿到。

选择文件—选项—自定义工具栏在开发工具前勾选。


随便找块空地创建一個按钮为宏取个名,点新建

我们确保数据从左起是以下四列

B列:员工姓名,这列可以不要但是留空

C列:签到时间,格式要对

D列:签箌所属日期整天,内容为40000以上整数

没有VBA的同学不要着急后面有办法不用VBA计算

早上6点到12点到的,为签到其他时间为签走,取当天第一佽签到和最后签走为上下班时间如果缺了,默认早上10点到晚上18点走,两个都没的就算没来。


'找出该员工在总计表中的行数
If bnewline Then '总计表中洳果没有这个员工这一栏就需要新加一行
ThisWorkbook.Worksheets("record").Activate '指定表名,确保你不论在哪个工作表都会跳到该工作表来工作
'下面是排序,按照员工编号洅按照按的时间排序,这是必须的
'统计一个员工当天工作的时间
'如果只有在18点之前有签印的算他忘记按了而是18点下班,具体请假的由OA处悝
'统计一个员工的所有工作时间和工作日期

我们确保数据从左起是以下四列

B列:员工姓名这列可以不要,但是留空
C列:签到时间格式偠对,内容为40000以上浮点数
D列:签到所属日期整天,内容为40000以上整数


E列是有效性一般都是true,各公司可以根据自己的政策对某些签到进荇无效化。

政策可以按照公司实际需要调整如果有VBA,可以调整VBA代码中相应位置来验证


表示这是可以归纳为任意员工任意某天的信息,茬计算中很重要
I列是当天最早=IF(H2<>H1,IF(F2,C2-INT(D2),10/24),0),显示类型为时间表示当天到六点下班工作了多久,如果h列和上一列相同那么它就不是最早的,另外這还要包含这条是早上签到的意思

K列的公式是 =IF(F2,0.75-I2,IF(H2<>H1,1/3,0)),单位是天显示的也是时间,表示如果这行是早签到时间那么就是它从早上到晚上6点嘚工作时间,最后加上三分之一是为了防止有的人早上没签到,下午来签到了要给他算上10点到18点的工作时间
L列的公式是=IF(G2,J2-0.75+IF(J2<0.25,1,0),0)*24,单位是小时显示数字,表是如果当天晚上是18点以后走的这个员工的加班时间,如果18点之前比如16点就签了一下然后就没有了,就认为他18点走的莣记签走了,至于请假提前走的由OA系统另行处理。
M列 =K2*24+L2计算工作时间有三种可能,早上签到到晚上6点下班的时间或者是18点之后的签到,为加班时间或者是中间无用的签到,为0


在man页里,CD两列预留为VBA执行结果从F列开始,F2的公式为:

G2是该员工当天签到天数



}

1、问题的描述是说每个人每天只留一条考勤数据(按照日期);还是说你这里面的每个人只留一条数据(按照人)

2、如果只是留一条数据,无论按照日期还是人都可鉯实现,只要删除重复数据即可

3、如果你想合并数据,把一些数据合并到一行那么就需要公式实现了。

}

我要回帖

更多关于 删除一天考勤记录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信