轉自EXCEL不加班
沒想到3-4年過去了,還是有學員喜歡用這樣的考勤表。
這是2016年盧子幫HR做的一個考勤模闆。
這是學員現在做的模闆,是不是挺像的?
這是從考勤機導出的記錄,上下班可能存在多次打卡這種情況,怎麼轉變成上面的模闆呢?
勤涉及到的知識非常多,盧子一個個慢慢講。
1.将日期時間轉變成9/1\n日這種格式
9/1就是月/日,\n是固定字符,日代表星期幾。
這裡借助TEXT函數轉換,m就是月,d就是日,!\!n就是強制顯示\n的意思,aaaa就是星期幾。
=TEXT(D2,"m/d!\!naaa")
2.将日期時間中的時間提取出來
TEXT函數非常強大,可以轉換很多種格式,提取時間也是可以的。h就是小時,m就是分鐘。
=TEXT(D2,"hh:mm")
3.根據姓名和日期,判斷上下班
上班就是每個人員每天第一次打卡時間。
下班就是每個人每天最後一次打卡時間。當然,這個下班的判斷不需要太精确,把不是上班的全部歸為下班就可以。因為後面借助LOOKUP函數,是查找最後一個滿足條件的值,不管中間有多少次打卡,都會查找到最後一次。
這樣判斷起來就簡單一些。
借助COUNTIFS函數判斷是不是第一次打卡,如果是就返回上班,否則返回下班。
=IF(COUNTIFS(B$2:B2,B2,G$2:G2,G2)=1,"上班","下班")
準備工作做完,剩下的就是将這些數據引用到模闆中。
4.引用每個人每天的打卡時間
需要同時借助3個條件查找,姓名、日期、上下班。
=IFERROR(LOOKUP(1,0/((LOOKUP("座",$A$3:$A3)=全體人員!$B$2:$B$115)*(全體人員!$G$2:$G$115=G$2)*(全體人員!$I$2:$I$115=$F3)),全體人員!$H$2:$H$115),"")
LOOKUP("座",$A$3:$A3)的意思就是讓合并單元格都填充上姓名。
LOOKUP函數有很多種語法,剩下的就是經典的查找模式。
=LOOKUP(1,0/((查找值1=查找區域1)*(查找值2=查找區域2)*(查找值n=查找區域n)),返回區域)
最後,嵌套IFERROR函數是讓沒有對應值的顯示空白,這樣比較美觀。
考勤表真的是Excel中一個非常難的問題,涉及到的知識超級多,每個公司用的考勤表基本不一樣,增加學習的難度。
陪你學Excel,一生夠不夠?
,