国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于數(shù)據(jù)處理技術(shù)的考勤加班時(shí)間統(tǒng)計(jì)

2018-09-21 14:21:36李鼎文徐昌欣郭偉
關(guān)鍵詞:數(shù)據(jù)處理

李鼎文 徐昌欣 郭偉

中圖分類號(hào):C37 文獻(xiàn)標(biāo)識(shí):A 文章編號(hào):1674-1145(2018)8-203-04

摘要 本文介紹了某公司考勤加班統(tǒng)計(jì)的規(guī)則、原始考勤數(shù)據(jù)進(jìn)行預(yù)先數(shù)據(jù)處理的方法,文中依據(jù)考勤規(guī)則進(jìn)行了統(tǒng)計(jì),介紹了相應(yīng)的統(tǒng)計(jì)代碼,并通過(guò)Ⅶ編寫(xiě)的程序?qū)崿F(xiàn)自動(dòng)統(tǒng)計(jì),最后文章介紹了應(yīng)用效果。

關(guān)鍵詞 考勤管理 加班時(shí)間統(tǒng)計(jì) 數(shù)據(jù)處理 VB

目前,企業(yè)在進(jìn)行考勤管理的過(guò)程中,一般采用了考勤機(jī)來(lái)對(duì)考勤進(jìn)行記錄,并進(jìn)行一系列考勤情況統(tǒng)計(jì),比如遲到早退人員統(tǒng)計(jì)、曠工人數(shù)統(tǒng)計(jì)、請(qǐng)假情況統(tǒng)計(jì)、加班情況統(tǒng)計(jì)等,其中加班情況統(tǒng)計(jì)是經(jīng)常進(jìn)行的一種。在有的中小企業(yè)中,只有考勤機(jī)記錄的初始記錄,沒(méi)有進(jìn)一步的考勤統(tǒng)計(jì)分析軟件,怎樣利用考勤初始記錄,進(jìn)行考勤加班統(tǒng)計(jì),是中小企業(yè)常常面對(duì)的問(wèn)題。本人在工作中,利用VB編寫(xiě)小程序,通過(guò)對(duì)考勤初始數(shù)據(jù)的進(jìn)行預(yù)處理,然后對(duì)加班情況進(jìn)行統(tǒng)計(jì),取代了手工進(jìn)行考勤加班計(jì)算的狀況,減輕了考勤統(tǒng)計(jì)人員的工作量,并提高了工作的準(zhǔn)確性。本人將考勤加班統(tǒng)計(jì)的方法、部分源碼及計(jì)算過(guò)程整理出來(lái),以饗讀者。

一、考勤加班統(tǒng)計(jì)規(guī)則的設(shè)定

為方便進(jìn)行考勤管理,必須首先設(shè)定考勤規(guī)則,讓員工有考勤依據(jù),方能準(zhǔn)確的打卡,知道自己的考勤情況。某企業(yè)中,對(duì)考勤加班統(tǒng)計(jì)規(guī)則設(shè)計(jì)如下:

1.平時(shí)上班時(shí)間,每天5點(diǎn)半以后算下班,6點(diǎn)之后刷卡算加班。

2.節(jié)假日全天可算加班。

3.平時(shí)上班時(shí)間,加班超過(guò)2.5個(gè)小時(shí)以上,給予一次餐補(bǔ)。

4.節(jié)假日加班,一次加班時(shí)間超過(guò)3個(gè)小時(shí),給予一次餐補(bǔ),7小時(shí)以上,兩次餐補(bǔ)封頂。二、考勤原始數(shù)據(jù)處理某企業(yè)中,考勤刷卡的原始數(shù)據(jù)如下圖所示,該數(shù)據(jù)是由考勤機(jī)的記錄導(dǎo)出的excel數(shù)據(jù)。

原始數(shù)據(jù)包括部門、姓名、考勤號(hào)、刷卡時(shí)間、記錄狀態(tài)、機(jī)器號(hào)等六個(gè)數(shù)據(jù)項(xiàng)。在進(jìn)行考勤加班統(tǒng)計(jì)之前,需要對(duì)原始數(shù)據(jù)進(jìn)行三個(gè)方面的預(yù)處理:1.去掉一次刷卡記錄下來(lái)的多次刷卡記錄。2.標(biāo)注是正常上班時(shí)間還是節(jié)假日。3.取出正常上班時(shí)間超出18:00的刷卡數(shù)據(jù),做為加班統(tǒng)計(jì)的依據(jù)。

1.去掉多次刷卡數(shù)據(jù),將刷卡數(shù)據(jù)間隔小于5分鐘的數(shù)據(jù)去掉,即原始數(shù)據(jù)的間隔小于0.08的,刪除后面的數(shù)據(jù)。代碼如下:

For i=1 To totalnum-1 Step 1

If sheet ds.Cells(i,3)=sheet ds.Cells(i+1,3)And Year(sheet ds.Cells(i,4))=Year(sheet ds.Cells(i+1,4))And Month(sheet ds.Cells(i,4))=Month(sheet ds.Cells(i+1,4))And Day(sheet ds.Cells(i,4))=Day(sheet ds.Cells(i+1,4))And Round((Hour(sheet ds.Cells(i+1,4))-Hour(sheet ds.Cells(i,4))+(Minute(sheet ds.Cells(i+1,4))-Minute(sheet ds.Cells(i,4)))/6f), 2)<=0.08 Then

p=p+1

Else

sheet_ds1.Cells(i-p,1)=sheet ds.Cells(i,2)

sheet_ds1.Cells(i-p,2)=sheet ds.Cells(i,4)

sheet_ds1.Cells(i-p,3)=sheet ds.Cells(i,5)

shret_ds1.Cells(i-p,4)=sheet ds,Cells(i,3)

p=0

2.對(duì)原始數(shù)據(jù)標(biāo)注是平時(shí)上班時(shí)間還是節(jié)假日。首先通過(guò)人機(jī)界面確定哪些是休息日,再逐一標(biāo)注,如果是平時(shí)刷卡數(shù)據(jù)第五列標(biāo)注為0,如果是節(jié)假日刷卡數(shù)據(jù)第五列標(biāo)注為1。代碼如下:

Do While sheet so.Cells(totalnum,3) 統(tǒng)計(jì)記錄條數(shù)

totalnum=totalnum+1

Loop

totalnum=totalnum+1

For i=2 To tatalnum Step 1

sheet ds.Cells(i-1,1)=sheet so.Cells(i,1)

sheet ds.Cers(i-1,2)=sheet so.Cells(i,2)

sheet ds.Cells(i-1,3)=sheet so.Cells(i,3)

sleet ds.Cells(i-1,4)=sheet so.Cells(i,4)

sheet ds.Cells(i-1,5)=0

Forj=1 Tok-1Step 2

If Day(sheet so.Cells(i,4)=a(j)Then

sheet ds.Cells(i-1,5)=1

End If

Next j

Next i

3.取出正常上班時(shí)間超出18:00的刷卡數(shù)據(jù)。

If sheet_ds1. Cells(i,3)=0 And Hour(sheet_ds1.Cells(i,2))>=18Then '平時(shí)刷卡時(shí)間過(guò)了18:00的記錄

sheet ds2.Cells(i-p,1)=sbeet_ds1.Cells(i,1)

sheet ds2.Cells(i-p,2)=sheet_ds1.Cells(i,2)

sheet ds2.Cells(i-p,3)=sheet_ds1.Cells(i,3)

sheet ds2.Cells(i-p,7)=sheet_ds1.Celis(i,4)

totalnum1=totalnum1+1

Else

p=p+1

End If

End If

Next i

三、依據(jù)統(tǒng)計(jì)規(guī)則對(duì)預(yù)處理后的數(shù)據(jù)進(jìn)行計(jì)算

1.以考勤號(hào)為關(guān)鍵字,統(tǒng)計(jì)當(dāng)日休息時(shí)段刷卡的次數(shù),及將刷卡次數(shù)累加計(jì)入第四列。

For i=1 To totalnum1 Step 1 '計(jì)算打卡記錄數(shù)

If(Day(sheet_ds 2.Cells(i,2)))=(Day(sheet_ds2.Cells(i+1,2)))And(Manth(sheet_ds2.Cells,2)))=(Month(sheet_ds2.Cells(i+1,2)))And(Year(sheet_ds2.Cells(i,2)))=(Year(sheet_ds2.Cells(i+1,2)))And(sheet_ds2.Cells(i,7)=sheet_ds2.Cells(i+1,7))Then

b=b+1

Else

sheet ds2.Cells(i,4)=b

b=1

End If

Next i

2.依據(jù)刷卡次數(shù)區(qū)分奇數(shù)次和偶數(shù)次刷卡,并按平時(shí)加班及休息日加班分別對(duì)加班時(shí)間進(jìn)行統(tǒng)計(jì),并計(jì)算餐補(bǔ)。這一共有三種情況:

(1)正常上班時(shí)間、休假時(shí)間的偶數(shù)次打卡,此時(shí)計(jì)算兩次刷卡記錄之差即為加班時(shí)間。然后分別按照正常上班時(shí)間和休假時(shí)間的餐補(bǔ)計(jì)算規(guī)則,統(tǒng)計(jì)餐補(bǔ)數(shù)量即可。即正常上班時(shí)加班時(shí)間超過(guò)2.5小時(shí),給予一次餐補(bǔ),休假時(shí)間一次加班時(shí)間超過(guò)3小時(shí),給予一次餐補(bǔ),7小時(shí)以上給予兩次餐補(bǔ),將餐補(bǔ)結(jié)果計(jì)入第6列。

For i=1 To totalnum1 Step 1 '統(tǒng)計(jì)加班時(shí)間If sheet_ds2.Cells(i,4)And(sheet_ds2.Cells(i,4)Mod2=0)Then '正常上班時(shí)間、休假時(shí)間,偶數(shù)次打卡

sheet ds2.Cells(i,5)=0

sheet ds2.Cells(i,6)=0

For j=0 To sheet ds2.Cells(i,4)-2 Step 2

sheet_ds2.Cells(i,5)=Round((sheet_ds2.Cells(i,5)+Hour(sheet_ds2.Cells(i-j,2))-Hour(sheet_ds2.Cells(i-j-1,2))+(Minute(sheet_ds2.Cells(i-j,2))-Minute(sheet_ds2.Cells(i-j-1,2)))/60),2)

If Round((HOUr(sheet_ds2.Cells(i-j,2))-Hoor(sheet_ds2.Cells(i-j-1,2))+(Minute(sheet_ds2.Cells(i-j,2))-Minute(sheet_ds2.Cells(i-j-1,2)))/60),2)>2.5 Andsheet ds2.Cells(i,3)=0 Then '統(tǒng)計(jì)餐補(bǔ)

sheet_ds2.Cells(i,6)=i

Else

If Round((Hour(sheet_ds2.Cells(i-j.2))-Hour(sheet_ds2.Cells(i-j-1,2))+(Minute(sheet_ds2.Cells(i-j,2))-Minute(sheet_ds2.Cells(i-j-1,2)))/60),2)>=7 Andsheet_ds2.Cells(i,3)=1 Then

sheet_ds2.Cells(i,6)=2

End If

If Round((Hour(sheet_ds2.Cells(i-j,2))-Hour(sheet_ds2.Cells(i-j-1,2))+(Minute(sheet_ds2.Cells(i-j,2))-Minute(sheet_ds2.Cells(i-j-1,2)))/60), 2)>3 AndRound((Hour(sheet_ds2.Cells(i-j, 2))-Hour(sheet_ds2.Cells(i-j-1,2))+(Minute(sheet_ds2.Cells(i-j,2))-Minnee(sheet_ds2.Cells(i-j-1, 2)))/60),2)<7 Andsheet_ds2.Cells(i,3)=1 And sheet_ds2.Cells(i,6)<2 Then'統(tǒng)計(jì)餐補(bǔ)

sheet_ds2.Cells(i,6)=sheet_ds2.Cells(i,6)+1

End If'

End If.

Next j

(2)正常上班時(shí)間奇數(shù)次打卡,此時(shí)計(jì)算最后一次刷卡與17:30之差即為加班時(shí)間,然后依據(jù)加班時(shí)間和餐補(bǔ)規(guī)則計(jì)算餐補(bǔ)。

If sheet_ds2.Cells(i,4)And sheet_ds2.Cells(i,3)=0 And(sheet_ds2.Cell(i,4)Mod2=1)Then' 正常上班時(shí)間,奇數(shù)次打卡

sheet_ds2.Cells(i,5)=0

sheet_ds2.Cells(i,6)=0

sheet_ds2.Cells(i,5)=Round/(Hour(sheet_ds2.Cells(i-sheet_ds2.Cells(i,4)+1,2))-17+(Minute(sheet_ds2.Cells(i-sheet_ds2.Cells(i,4)+1,2))-30)/60),2)

If sheet_ds2.Cells(i,5)>2.5 Then'統(tǒng)計(jì)餐補(bǔ)

sheet_ds2.Cells(i,6)=1

End If

If shell_ds2.Cells(i,4)>1 Then

For j=0 To sheet_ds2.Cells(i,4)-3 Step 2

sheet_ds2.Cells(i,5)=Round((sheet_ds2.Cells(i,5)+Hour(sheet_ds2.Cells(i-j,2))-Hour(sheet-ds2.Cells(i-j-1,2))+(Minute(sheet_ds2.Cells(i-j,2))-Minute(sheet_ds2.Cells(i-j-1, 2)))/60),2)

If Round((Hour(sheet_ds2.Cells(i-j,2))-Hour(sheet_ds2.Cells(i-j-1,2))+(Minute(sheet_ds2.Cells(i-j,2))-Minute(sheet_ds2.Cells(i-j-1,2)))/60),2)>2.5 Then統(tǒng)計(jì)餐補(bǔ)

sheet_ds2.Cells(i,6)=1

End If

Next j

End If

End If

(3)休假時(shí)間奇數(shù)次打卡,此時(shí)計(jì)算第一次刷卡與最后一次刷卡之差即為加班時(shí)間,然后依據(jù)加班時(shí)間和餐補(bǔ)規(guī)則計(jì)算餐補(bǔ)即可。

If sheet_ds2.Cells(i,4)And sheet_ds2.Cells(i,3)=1 And(sheet_ds2.Cells(i,4)Mod 2=1)Then '休假時(shí)間,奇數(shù)次打卡

sheet_ds2.Cells(i,6)=0

sheet_ds2.Cells(i,5)=Round((Hour(sheet_ds2.Cells(i,2))-Hour(sheet_ds2.Cells(i-sheet_ds2.Cells(i,4)+1,2))+(Minute)sheet_ds2.Cells(i,2))-Minute(sheet_ds2.Cells(i-sheet_ds2.Cells(i,4)+1,2)))/60),2)

If sheet_ds2.Cells(i,5)>3 And sheet_ds2.Cells(i,5)<7 And sheet_ds2.Cells(i,6)<2 Then '統(tǒng)計(jì)餐補(bǔ)

sheet_ds2.Cells(i,6)=sheet_ds2.Cells(i,6)+1

Else

If sheet_da2.Cells(i,5)>=7 Then

sheet_ds2.Cells(i,6)=2

End If

End If

End If

End If

Next i

四、依據(jù)得到的結(jié)果,制作報(bào)表計(jì)算每日加班時(shí)間和當(dāng)月加班總時(shí)間,及每日餐補(bǔ)數(shù)和該月餐補(bǔ)數(shù)。程序如下:

pk=2

For i=1 To totalnum1 Step 1'制作報(bào)表

If sheet ds2.Cells(i,4)Then

sheet_ds3.Cells(pk,1)=sheet_ds2.Cells(i,1)

sheet_ds3.Cells(pk,2)=sheet_ds2.Cells(i,7)

sheet_ds3.Cells(pk,3)=DateSerial(Year(sheet_ds2.Cells(i,2)),Month(sheet_ds2.Cells(i,2)),Day(sheet_ds2.Cells(i,2)))

sheet_ds3.Cells(pk,4)=sheet-ds2.Cells(i,5)

sheet_ds3.Cells(pk,5)=sheet_ds2.Cells(i,6)

pk=pk+1

End If

Next i

totaladd=sheet_ds3.Cells(2,4)

totalcount=sheet_ds3.Cells(2,5)

For i=2 To pk+1 Step1

if(sheet_ds3.Celts(i,2)=sheet_ds3.Cells(i+1,2))Then

totladd=tataladd+sheet_ds3.cells(i+1,4)

totalcount=totalcount+sheet_ds3.Cells(i+1,5)

Else

sheet_ds3.Cells(i,6)=totaladd

sheet_ds3.Cells(i,7)=totalcount

totaladd=sheet_ds3.Cells(i+1,4)

totalcount=sheet_ds3.Cells(i,1,5)

End If

Next i

End If

五、運(yùn)行效果

(一)程序界面

通過(guò)人工輸入休息日,來(lái)區(qū)分正常上班時(shí)間和節(jié)假日日期,點(diǎn)擊加班統(tǒng)計(jì)即可進(jìn)行統(tǒng)計(jì)計(jì)算。

1.統(tǒng)計(jì)過(guò)程。

通過(guò)不斷建立Worksheet,逐層遞進(jìn)得進(jìn)行計(jì)算,最后得到最后的統(tǒng)計(jì)結(jié)果。

(1)標(biāo)注是平時(shí)工作日還是節(jié)假日。

(2)去掉時(shí)間間隔小于5分鐘的數(shù)據(jù)并取出正常工作日18:00以后的數(shù)據(jù)。

(3)計(jì)算當(dāng)日刷卡次數(shù),并統(tǒng)計(jì)加班時(shí)間及餐補(bǔ)。

(4)最終統(tǒng)計(jì)結(jié)果。

六、應(yīng)用效果

該統(tǒng)計(jì)軟件已經(jīng)在某公司穩(wěn)定運(yùn)行了一段時(shí)間,減輕了考勤統(tǒng)計(jì)人員的工作量,提高了統(tǒng)計(jì)的準(zhǔn)確性,保障了公司的考勤管理工作的穩(wěn)定運(yùn)行,取得了較好的管理效能。

參考文獻(xiàn):

[1]唐勇.RFID身份識(shí)別考勤系統(tǒng)設(shè)計(jì)[J].2013(6).

[2]劉宇.基于WEB的企業(yè)定制考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].2013(11).

[3]楊洋.基于-NET的人事考勤管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)[J].2011(6).

猜你喜歡
數(shù)據(jù)處理
認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補(bǔ)與極大似然估計(jì)法*
ILWT-EEMD數(shù)據(jù)處理的ELM滾動(dòng)軸承故障診斷
MATLAB在化學(xué)工程與工藝實(shí)驗(yàn)數(shù)據(jù)處理中的應(yīng)用
Matlab在密立根油滴實(shí)驗(yàn)數(shù)據(jù)處理中的應(yīng)用
基于POS AV610與PPP的車輛導(dǎo)航數(shù)據(jù)處理
依托陸態(tài)網(wǎng)的GNSS遠(yuǎn)程數(shù)據(jù)處理軟件開(kāi)發(fā)
大兴区| 喀喇| 镇沅| 台中市| 西充县| 宝丰县| 张北县| 凌源市| 广宗县| 清丰县| 通榆县| 阿瓦提县| 邵阳县| 黄浦区| 岳池县| 永昌县| 三河市| 崇文区| 西贡区| 敖汉旗| 龙岩市| 禹州市| 洪泽县| 枣强县| 灌阳县| 湖北省| 南宫市| 赫章县| 吉首市| 汽车| 嘉义县| 枣阳市| 嵊泗县| 从江县| 卢氏县| 大石桥市| 开江县| 南皮县| 阳城县| 大安市| 兰溪市|