
編按:面對新的統計需求,很多人會一下變懵,不知如何辦。如果涉及的統計有一千多行數據,哭的心思都有了:什么時候才能下班喲!今天老菜鳥通過考勤統計分析表實例分享自己面對新統計需求的解決方法:簡化數據、找數據規律、做輔助列。任何復雜的統計,只要采取這樣的方法,大多幾分鐘就會搞定。

考勤管理,是企業勞動紀律管理的最基本工作,公司領導要求人力資源每周按部門匯總一份考勤打卡情況通報,格式如下:

通報表可以更為宏觀的看到考勤紀律的執行情況,是非常好的一個管理工具,但是負責制作報表的伙伴卻是異常煩惱。不為別的,就是不知道該如何下手,無奈之下,找到老菜鳥求助。
我們先來看看從考勤軟件導出的數據源吧:

整個表有二十多列,一千多行,如果僅靠手工統計,難度確實不小。如果是你接到這個任務時,會如何著手開始統計呢?
其實問題并沒有看上去那么復雜,關鍵是找到思路。思路決定出路,最終完成這個統計表并沒有用什么高大上的函數,也不是像有些伙伴猜的那樣,用VBA去解決,只是用了幾個常用的函數IF、COUNTIF、SUM和SUMIF就搞定了。是不是很想知道方法呢?
拿到數據,切忌盲目動手,而是首先整理數據。就當前通報表來說,數據源中對我們有用處的列并不多,只需要保留部門、工號、上下班的打卡結果這四列即可:

看上去清爽了很多吧?刪去了無用數據之后,就需要分析具體的統計思路,同時在數據源中尋找可以利用的規律。很容易看到,每個工號對應的打卡結果都是6行2列(12個單元格)的一個數據區域:

我們需要根據這12個單元格中的信息進行分類統計,按照要求分為正常和異常兩類。其中異常包括了:缺卡、請假、遲到和早退四種情況,只要沒有異常即可視為正常。
根據統計要求添加輔助列。輔助列的作用就是簡化問題的難度系數,在這個問題中我們可以這樣設置:

在繼續往下前,需要理清楚這里統計的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項異常都進行了統計。

從結果來看,這四項異常數據的統計結果是正確的。
這個公式的核心是COUNTIF,當區域中符合條件的個數大于0時,得到1,否則得到0。注意區域和條件的寫法,$C2:$D7鎖定了列,G$1鎖定了行,這樣公式在右拉和下拉的時候就不用再去修改了。
異常的統計,只要后面四項之和大于0就算異常1人,公式為:=IF(SUM(G2:J7)>0,1,0)。這個公式很簡單了,相信大家都能明白。

到這一步,正常的統計更沒什么難度:

選中統計好的6個單元格,雙擊J2單元格的右下角,公式會自動向下填充至數據的最后一行,可以瀏覽一下結果:

咦!早退和遲到的統計結果出現了錯誤,怎么解決?
有些朋友可能想到了用通配符,沒錯,就是通配符,不過不用修改公式,只需要將表頭修改一下就好了:

看明白了吧,在表頭“遲到”和“早退”的兩邊都加上*,統計結果就正確了。
數據源經過以上處理以后,要做出最終的統計表,已經完全不是問題了:

在職人數公式:=COUNTIF(數據源!A:A,匯總!B4)/6。至于為什么要除以6,不難理解。
正常打卡人數:=SUMIF(數據源!A:A,B4,數據源!E:E),SUMIF最基本的用法哦;
占比:=D4/C4
后面的幾列都是用SUMIF統計人數,用除法計算占比。
最后總結一下:
今天的通報表乍一看很棘手,平時工作可能也會遇到類似的情況。解決的辦法就是:首先排除無用的數據,然后是尋找數據規律,根據統計需要使用輔助列,最后通過一些基本的操作,例如累計、排序、合并,還有填充等,完成任務。
今天的分享重在體會問題的解決過程,涉及到的公式都非常簡單,相信大家在動手練習的過程中一定會有很多收獲的。
****部落窩教育-excel表格拆分技巧****
原創:老菜鳥/部落窩教育(未經同意,請勿轉載)
更多教程:部落窩教育(http://www.itblw.com)
微信公眾號:exceljiaocheng