Excel工資計算系統-搞定員工在職和離職的出勤計算公式

黴黴急火來找到

小陸:師傅,又遇到難題了,我的工作怎麼就這麼不順啊,一步一坎啊,今天主管讓我弄工資計算系統的中的計算工作日,滿足兩部分的需求,1:計算當月的工作日,2,計算一段時間的工作日,通常為一個月內容用於計算離職的員工工資使用,現在頭都大了,我是一點思路都沒有啊?

小陸:遇事不要慌,慌解決不了的任何問題,我們就先來思考一下前第1個問題吧,哪如果你不用電腦的話,你會怎麼解決這兩個問題呢?

黴黴:哪就簡單多了,我拿著日期看一下,一加就行了!

小陸:怎麼加?

黴黴:我可以直接數啊,把不是休息日的日期加起來就行啦,多簡單啊?

小陸:這樣想也對,不過如果告訴你一個有幾個休息日或節假日,讓你算工作日怎麼算呢?

黴黴:哪也簡單,看看這個月多少天,然後減去休息日或節假日總數就行了啊!

小陸:沒有錯,其實我們用軟件做的就是把我們的思路轉化成一個一個公式或數學表達!你有沒有發現,你說解決方法中核心的只有兩點,公式求月份天數和這個月的休息日的總數對吧?

黴黴:是啊,我好想明白一點,是不是用我們之前做的節假日的表來求啊,用contifs統計一下總天數,用總天數一減就成了,可總天數的怎麼求啊?

小陸:不復雜,需要兩個函數配合,一個函數就是eomonth函數,這個函數有兩個必填參數,start_date(開始日期),months(相隔月數),功能是求出與開始日期相隔幾個月後的月末日期,比如eomonth(2019/2/1,3) = 2019/5/31;然後再用day(eomonth(2019/2/1,3))這樣就能求出5月份的天數了,哪你知道怎麼求當月的天數嗎?

Excel工資計算系統-搞定員工在職和離職的出勤計算公式

EOMONTH函數語法結構圖

黴黴:參數的數字有什麼限制嗎?可以為0嗎?可以小於0嗎?

小陸:可以啊,不過小於0就是開始日期往前幾個的月的月末日期

黴黴:哪我知道了,當月的天數是不是就是=day(eomonth(today(),0) 或=day(eomonth(now(),0)。

小陸:聰明,哪你知道怎麼求節假日的總天數嗎?

黴黴:節假日的表在workdate裡A列,所以公式是不是這樣寫=COUNTIFS(workdate!A:A,">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1),workdate!A:A,"<="&EOMONTH(TODAY(),0))

Excel工資計算系統-搞定員工在職和離職的出勤計算公式

countifs函數使用語法結構示意圖

突然有人說:這麼複雜,讓我來給你展示一下操作什麼叫秒操作吧!這人正是小皮拉開黴黴,上手就開始操作:選中的workdate的A列數據,然後點擊【插入】下的插入數據透視表,在workdate表中選擇任意空單元格,然後點確定,右側出現“數據透視表字段”然後進行下列操作:

Excel工資計算系統-搞定員工在職和離職的出勤計算公式

數據透視表創建的具體操作步驟

操作完成後,只需在引用單元格輸入=VLOOKUP(MONTH(TODAY())&"月",workdate!R:S,2,0),是不是就很簡單呢?

小陸:沒有想到你操作這麼流暢,還這麼快,黴黴,以後你一定要跟陳曉皮多多學習一下操作技巧啊!

黴黴:可是…

小陸:黴黴現在你這塊挺欠缺的,以後有什麼問題,要第一個請教小皮哥啊!

小皮:不用客氣,有什麼事,以後儘管來找我,我一定幫到底,現在我還有點工作要忙,先走啦!小皮剛走,黴黴迫不及待的說:可是他的快捷操作並不能解決第二個問題啊?

小陸:他是不能解決你的第二個問題,但他的做法也有他的優勢,像這種數據變動不大,彙總花的時間可以忽略不計的時候,我們應該在做workdate的時候,就應該先吧數據彙總一下,這樣的對於以後的使用還是很方便的,至於第二個問題,就直接用公式法就好了,哪公式怎麼寫呢?

黴黴:通常離職話的,只需結束的日期變成離職日期就好了,比如2019/8/19離職,公式為=today(2019/8/19)- COUNTIFS(workdate!A:A,">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1),workdate!A:A,"<="&2019/8/19)就好了,求工作日來說哪那種方法更好呢?我覺得還是第一種公式法好啊,它的可使用的地方多!

小陸:其實方法沒有好壞,適合方好,在沒有規定你必須使用某個方法的情況下,什麼效率高就用什麼!你把剛才的想法整理一下,重新做一遍,發給你們主管吧!

黴黴:好的師傅,什麼你來我家給我補課啊?

小陸:這次你去我家……(本文完)

本故事純屬虛構,如有雷同純屬巧合!

演員/角色:陸之涵/小陸,郭知黴 /黴黴 姜度華/小度 陳曉皮/小皮


分享到:


相關文章: