前景提要
我們終於完成了VBA函數篇的分享,在函數篇中,我們需要的都是一些非常基礎的知識,這些非常基礎的知識,可能大家並不是很感興趣,畢竟能夠解決的問題並不是很多,後面我將會儘量將知識點和實際的場景相結合,儘量幫助大家解決更多的問題,本篇章我們主要分享的是一些日期和時間相關的知識,希望可以解決大家在日常工作中在時間處理上面的一些問題,如果大家有什麼相關的問題,也可以提出來,我儘量幫助大家解決。
場景說明
今天我們要分享的是兩日期之間的計算,這在HR日常的工作中是經常需要用到的,比方說計算某員工在崗多久了,或者說某客戶上次購買產品到現在相差了多久,以此來計算出客戶的購買頻率等,日期之間的計算有很多種不同的結果,有時候我們想要大致的結果,比方說相差多少月,但是有時候我們需要得到兩個日期相差了多少天,這就比較麻煩了,其實我們可以使用datediff來幫助我們實現這個作用,一起來看看例子吧。
比較具有代表性的例子,就是HR日常工作中的在職員工的在崗時間,或者說是工齡計算了,俗話說鐵打的營盤流水的兵,人員流動已經成為了常態,每個員工的入職時間又不盡相同,每次核算員工在崗時間的時候,對於很多的HR來說都是非常頭疼的問題,公司結構比較穩定的還好說,基本上人員流動性不算很大,但是在很多的工廠、車間,人員的流動性就非常的大了,一次10+人員的進進出出,算了一批還有一批,下次核算的時候,又有新人進,舊人走,永遠都是一個頭疼的問題,不要怕,今天小編就來將給為HR帶出苦海
假設現在我們手上有這樣的一份入職人員的登記表,因為各個公司要求不同,可能有時候需要按照天數來結算,有時候有需要按照月份來結算,而在年後的時候,需要發年終獎的時候,就需要按照工齡,就是年來計算了,所以為了方便,小便一次性的將常用的天,月,年三種不同的計算方式都展示出來了,大家各取所需。
首先我們來計算下計算下員工在崗的天數,按照天數來計算的情況也不是沒有,一般比方說業務量大的時候,臨時招聘了一批臨時工,臨時工都是按照天來結算的,這個時候我們就需要得到這些員工在崗工作了多少天,來看代碼
Sub test()
Dim i&
l = Cells(Rows.Count, 7).End(xlUp).Row
For i = 2 To l
Cells(i, 8) = DateDiff("d", Cells(i, 7), Now()) & "天"
Next i
End Sub
看看結果
是不是成功的算出了在崗時間的天數,如果覺得不太相信的話,我們找一個比較好計算的例子,A22,是4-1入職的,小編寫這篇文章的時候是4-15,15-1=14就得到了該員工的在崗時間是14天了,再挑一個遠一點的,A23,3-9入職的,到4-9是正好1個月30天,再加上今天的7天,正好等於37天,所以結果是非常正確的。
那我們繼續,我們來算下入職有多少個月,這個一般用在員工轉正或者是員工考核的時候會使用到,比方說3月轉正,入職半年即6個月之後,需要得到什麼業務水平之類的,我們來看看代碼
Sub test()
Dim i&
l = Cells(Rows.Count, 7).End(xlUp).Row
For i = 2 To l
Cells(i, 9) = DateDiff("m", Cells(i, 7), Now()) & "月"
Next i
End Sub
來看看結果
是不是成功的計算出來了入職有多少月,依然我們挑幾個來檢驗下結果,A23,入職3月,今天是4月,1個月,正確,A21,1-1入職,入職應該是3個月,沒錯,因為4月還沒有過完,所以入職應該是3個月,如果各位HR的算法是本月也算上的話,可以在結果上+1就可以了。
哇,來到了激動人心的時刻了,計算入職多少年了,這個一般都是和年終獎掛鈎的哇,小編小小激動了一下,那麼入職多少年要如何來計算呢?
Sub test()
Dim i&
l = Cells(Rows.Count, 7).End(xlUp).Row
For i = 2 To l
Cells(i, 10) = DateDiff("yyyy", Cells(i, 7), Now()) & "年"
Next i
End Sub
看看結果
準確的得到了我們想要的結果。是不是很完美。
代碼解析
今天的代碼解析,我們主要將兩個知識點,
一個是獲得當前的時間,想要獲得在崗時間,肯定是用今天的日期減去入職的日期了,入職日期已經登記了,那麼今天的日期如何獲取呢?
=Now()
就是這麼簡單,上面的代碼中的每個截圖都提供了當前的時間時間作為參考,以方便大家進行核對。
然後就是兩個時間的相減了,datediff方法
他需要提供三個參數,第一參數就是單位名稱,就是你想要獲得的計算結果的單位名稱,是天,年,月,時,分,秒都可以,不要以為我是瞎說的哦,甚至還可以計算出兩個日期相隔多少個星期,是不是很棒的一個方法呢,常見單位如下,「d」:天「yyyy」:年,「m」:月「h」:小時,「n」:分鐘,「s」:秒
第二個和第三個參數就更加簡單了,就是提供兩個日期,開始日期和結束日期就可以了,記得順序,小的日期在前,大的日期在後。