編按:哈嘍,大家好,!今天是部落窩函數(shù)課堂第4課,,我們將認(rèn)識(shí)DATEDIF函數(shù)!DATEDIF函數(shù)不僅可以用來(lái)計(jì)算年齡,、工齡,、工齡工資、項(xiàng)目周期,,還可以用來(lái)做生日倒計(jì)時(shí)提醒,,項(xiàng)目竣工日倒計(jì)時(shí)提醒等等。用上它,,您再也不會(huì)缺席那些重要的日子,,不論是親人生日、項(xiàng)目竣工日,,還是兒女的畢業(yè)典禮日,。 ———————————————————— DATEDIF函數(shù)和我們平時(shí)見(jiàn)到的函數(shù)有所不同。大家都知道,,一般我們只要在EXCEL中輸入函數(shù)字母的前幾位,,EXCEL就會(huì)自動(dòng)彈出該函數(shù),然而這個(gè)函數(shù)字母都輸完了,,EXCEL仍沒(méi)有任何提示,。有的小伙伴可能都會(huì)懷疑是否有這個(gè)函數(shù)。其實(shí)DATEDIF函數(shù)是EXCEL隱藏函數(shù),,在幫助和插入公式里面是沒(méi)有的,,只能純手工輸入。 DATEDIF函數(shù)不僅可以用來(lái)計(jì)算年齡,、工齡,、工齡工資、項(xiàng)目周期,,還可以用來(lái)做生日倒計(jì)時(shí)提醒,,項(xiàng)目竣工日倒計(jì)時(shí)提醒等等。下面我們就來(lái)認(rèn)識(shí)認(rèn)識(shí)它,。 一,、 初識(shí)DATEDIF DATEDIF函數(shù)用于計(jì)算兩日期之差,返回兩個(gè)日期之間的年,、月,、日間隔數(shù) 函數(shù)結(jié)構(gòu):DATEDIF(起始日期,結(jié)束日期,返回類型) 1.參數(shù)解釋: 1)起始日期和結(jié)束日期 起始日期,、結(jié)束日期作為需要計(jì)算差異的兩個(gè)日期。 這兩個(gè)日期的輸入方法如下: 可以直接輸入帶引號(hào)的日期,,例如"2017/10/16",。注意起始日期不能早于1900年,結(jié)束日期要大于起始日期,。 也可以直接引用單元格中的日期 還可以利用其他函數(shù)得到,,例如TODAY() (注意:范例當(dāng)日是2019年2月15日) 2)返回類型 返回類型用于設(shè)置結(jié)算結(jié)果的類型。返回類型是文本,,輸入時(shí)須要帶雙引號(hào),。 y:返回兩個(gè)日期之間相差整年數(shù)(不足一年的不計(jì)) m:返回兩個(gè)日期之間相差整月數(shù)(不足一月的不計(jì)) d:返回兩個(gè)日期之間相差的天數(shù) ym:計(jì)算兩日期之間略去整年差異后的整月數(shù)差異。譬如,,兩個(gè)日期(2017-4-20,2019-2-20)相差1年10月,略去整年差異1年,,則ym的結(jié)果就是10月,。再譬如,兩個(gè)日期(2018-4-20,2019-2-20)相差10月,,則ym的結(jié)果是10月,。 yd:計(jì)算兩日期之間略去整年差異后的天數(shù)差異。譬如,,兩個(gè)日期(2017-4-20,2019-2-20)相差1年零306天,,略去整年差異1年,則ym的結(jié)果就是306天,。 md:計(jì)算兩日期之間略去整年和整月差異后的天數(shù)差異,。譬如,兩個(gè)日期(2017-4-20,2019-2-25)相差1年10月零5天,,略去整年和整月差異1年10月,,則md的結(jié)果就是5天。 2.舉個(gè)栗子 DATEDIF("2017/2/15","2019/2/15","y"),,計(jì)算"2017/2/15"與"2019/2/15"之間相差幾個(gè)整年,。這里相差兩個(gè)完整的年,所以等于2,。 DATEDIF("2017/1/6","2019/2/15","d"),,計(jì)算"2017/1/6"與"2019/2/15"之間相差的天數(shù),等于770,。 DATEDIF("2017/1/6","2019/2/15","ym"),,計(jì)算兩日期之間除開整年外的間隔月數(shù)。兩日期之間實(shí)際相差25月,,包含了2個(gè)整年(24月),,所以ym類型返回值為25-24=1,。 DATEDIF("2017/1/6","2019/2/15","yd"),計(jì)算兩日期之間除開整年外的間隔天數(shù),。兩日期之間實(shí)際相差770天,,包含了2個(gè)整年(730天),所以yd類型返回值為770-730=40,。 3.使用要點(diǎn) 1)雙引號(hào) 到這里,,相信小伙伴們對(duì)于DATEDIF函數(shù)已經(jīng)有了初步的認(rèn)識(shí),可以寫幾個(gè)公式練練手啦,。寫公式中需注意雙引號(hào)的使用,。 (1)如果第1、2參數(shù)是直接輸入日期,,則日期必須帶雙引號(hào),。 (2)第3參數(shù)是文本,一定要記得帶上雙引號(hào),。 2)錯(cuò)誤類型 DATEDIF函數(shù)如果發(fā)生錯(cuò)誤,,通常有以下三類: 二、DATEDIF函數(shù)實(shí)際應(yīng)用例舉 1.根據(jù)出生日期計(jì)算年齡 已知下面員工的出生日期,,求他們今年的年齡,。 公式:=DATEDIF(D2,TODAY(),"y") TODAY()函數(shù)獲取的是系統(tǒng)當(dāng)前日期,列舉的實(shí)例為2019/2/15日的計(jì)算結(jié)果,,并不一定和小伙伴們得到的結(jié)果相符哦~ 怎么樣,?是不是很簡(jiǎn)單呢? 2.根據(jù)身份證號(hào)碼計(jì)算年齡 上一例中已經(jīng)有了出生日期,,所以直接用DATEDIF函數(shù)套用TODAY函數(shù)即可計(jì)算出年齡,。如果只有身份證號(hào)碼,要計(jì)算年齡,,就需要把出生日期從身份證號(hào)碼中提取出來(lái)后再計(jì)算,。公式如下: 公式解析: 使用MID函數(shù)提取出身份證號(hào)碼中出生日期的8位數(shù)字。 用TEXT函數(shù)讓這8位數(shù)字以"0-00-00"的格式顯示,,得到像日期格式的文本,,然后在TEXT函數(shù)前加上負(fù)負(fù)得正的運(yùn)算,將文本轉(zhuǎn)換為日期,。 最后將上面得到的日期作為DATEDIF函數(shù)的起始日期,,將TODAY()作為結(jié)束日期,設(shè)置返回類型為“y”,即可計(jì)算出兩日期之間相差的整年數(shù)——年齡,。 3.根據(jù)入職日期計(jì)算員工工齡(以年月日的形式展現(xiàn)) 用例1計(jì)算年齡的方法,,如果知道員工入職的時(shí)間,即可計(jì)算出按整年計(jì)的員工工齡,。但如果需要計(jì)算出詳細(xì)的員工工齡,,如多少年多少月多少天,,該怎么做呢?答案如下: 公式雖長(zhǎng),,卻特別好理解,。首先用三個(gè)DATEDIF函數(shù)分別計(jì)算出兩日期之間相差幾年幾月幾日,最后再用文本連接符“&”進(jìn)行連接,,得到結(jié)果,。 4.計(jì)算工齡工資 根據(jù)2019年國(guó)家出臺(tái)的工齡工資規(guī)定,員工連續(xù)工作滿一年 50元/月,;連續(xù)工作滿兩年 100元/月,;連續(xù)工作滿三年 150元/月;連續(xù)工作滿四年180元/月,,以此類推,,累計(jì)十年封頂。 小伙伴是不是一頭霧水呢,?沒(méi)事,,我們一步一步來(lái),首先計(jì)算工齡(按整年計(jì)算),。 公式:=DATEDIF(C2,D2,"y") 接著,,來(lái)到我們的重頭戲,,計(jì)算工齡工資,。 公式:=IF(E2 這里我們借助了IF函數(shù)和MIN函數(shù)。 根據(jù)2019年國(guó)家出臺(tái)的工齡工資規(guī)定,,1-3年工齡工資每年是以50來(lái)遞增的,,4-10年的工齡工資每年是以30來(lái)遞增的。我們可以使用IF函數(shù)分開判斷,。 首先判斷工齡E2是否小于4,,小于4則表示員工工齡工資是以每年50來(lái)遞增,返回“50*E2”的結(jié)果,;如果工齡E2不小于4,,工齡工資則是在150的基礎(chǔ)上以每年30來(lái)遞增,返回“150+30*(MIN(10,,E2)-3)”的結(jié)果,。 因?yàn)楣g工資只能累計(jì)十年,大于十年的工齡工資與十年的工齡工資一致,,所有我們使用MIN函數(shù)返回10和E2中的最小值作為工齡,。 5.制作員工生日提醒 下面是一張員工的信息表,我們想做一個(gè)生日提醒,,提前7天提醒某員工的生日快到了,。 提示:和IF函數(shù)結(jié)合使用,,快開動(dòng)腦筋想一想吧~ 公式:=IF(DATEIF(D3-7,TODAY(),"yd") 是不是感覺(jué)這個(gè)公式很燒腦? 我們?nèi)粘S?jì)算距離生日的天數(shù)都是用即將到來(lái)的生日日期減去今天的日期,。而這個(gè)公式與我們的習(xí)慣不同,,它用今天的日期減去出生日期進(jìn)行計(jì)算,并且還將出生日期減少了7天,。 為何能這樣做,? 首先我們來(lái)看看yd返回類型下不同的當(dāng)前日期與出生日期的間隔天數(shù)規(guī)律。下表以出生日期1999年2月22日為例,,展示了昨天,、今天、明天,、后天等距離出生日期的天數(shù),。 N16單元格公式= DATEDIF($J$13,N15,"yd"),$J$13代表出生日期,,N15代表不同的當(dāng)前日期,。 很明顯,生日當(dāng)天間隔為0,;小于生日日期的,,日期越趨近生日,間隔天數(shù)越大越趨近365,;大于生日日期的,,日期越趨近生日,間隔天數(shù)越小越趨近0,。 其次,,在這種情況下,直接套用IF函數(shù)根據(jù)間隔天數(shù)是否小于等于7來(lái)給出生日提醒的公式=IF(DATEDIF($J$13,N15,"yd") 最后,,那怎么才能提前7天提醒,?有兩種方法。第一種,,設(shè)法讓間隔天數(shù)0-7提前7天出現(xiàn),。這時(shí),要么把起始日期減少7天($J$13-7),,要么把結(jié)束日期增加7天(N15+7),,如下: 起始日期減少7天后的間隔天數(shù) 起始日期減少7天后的生日提醒 第二種,修改判斷條件,,把=358即可,。如下: 修改判斷條件后,生日當(dāng)天不會(huì)提醒。 Ok,,到這里,,相信大家就理解前面的公式了。在此基礎(chǔ)上,,我們可以修改公式,,讓提醒更人性化: =IF(DATEDIF(D3-7,TODAY(),"yd") 再多說(shuō)兩句:如果按平常思路用即將到來(lái)的生日日期減去當(dāng)前日期來(lái)計(jì)算距離生日的天數(shù),生日提醒公式該怎么寫呢,?答案如下: =IF(DATEDIF(TODAY(),IF(TEXT(D3,"M月DD日")月DD日"),YEAR(TODAY()+365),YEAR(TODAY()))&"年"&TEXT(D3,"M月DD日"),"yd") 這是一個(gè)非常長(zhǎng)的公式?。?! 長(zhǎng)就長(zhǎng)在即將到來(lái)的生日日期提取,。 公式中的IF(TEXT(D3,"M月DD日")月DD日"),YEAR(TODAY()+365),YEAR(TODAY()))&"年"&TEXT(D3,"M月DD日")用于獲取即將到來(lái)的生日日期。意思是:如果出生日期中的月日數(shù)小于今日的月日數(shù),,說(shuō)明今年的生日已經(jīng)過(guò)去了,,新的生日日期應(yīng)該是YEAR(TODAY()+365)&"年"&TEXT(D3,"M月DD日";反之,,說(shuō)明今年的生日還沒(méi)過(guò),,生日日期應(yīng)該是YEAR(TODAY())&"年"&TEXT(D3,"M月DD日"。 YEAR(TODAY())提取今年的年份,,加上365,,則得到明年的年份。 TEXT(D3,"m月dd日")提取出生日期中的月份和號(hào)數(shù),。 到此,,DATEDIF函數(shù)就介紹完畢。不論是計(jì)算年齡,、工齡,、工齡工資,,還是給出生日提醒,,都可以用DATEDIF實(shí)現(xiàn)。當(dāng)然,,DATEDIF也完全可以用來(lái)計(jì)算項(xiàng)目用時(shí),、距離完工日天數(shù),做完工倒計(jì)時(shí)提醒,。如果你是做人事,、做工資核算、做項(xiàng)目管理的,,那么趕緊操練起來(lái)吧,! ****部落窩教育-excel函數(shù)DATEDIF技巧**** 原創(chuàng):壹仟伍佰萬(wàn)/部落窩教育(未經(jīng)同意,請(qǐng)勿轉(zhuǎn)載) |
|
來(lái)自: 部落窩教育BLW > 《部落窩excel/VBA》