在Excel中日期是獨特的存在,不過你可別被它的外表騙了,它的本質就是數字,它也有自己專有名詞叫數字序列,每個序列對應距離1900年1月0日的天數;而實際它比現實中的天數卻多了一天,因為軟體中設定1900是閏年,沒錯就是2月29日這個實際並不存在的日期(詳情可以翻看Excel基礎知識中關於時間日期的前世今生,溯本求源!一文)。今天我們就來匯總一下,日期的函數有哪些?都可以用來幹什麼吧?
日期函數
日期三賤客:year,month,day
我們知道日期構成的三部分(暫忽略時間的部分)年,月,日;對應函數有year,month,day,在詳解之前,我們先來一張他三的語法結構圖:
它們共性就是只有1個參數,這個參數官方的解釋為serial_number:數字序列,其實就是日期。在Excel中,日期默認的格式支持以「-」或「/」為分隔符的數字序列,正確的格式為「2019/3/13」或「2019-3-13」,但如果你輸入了「2019-3/3」或"2019/3-13"依然能識別為日期,哪如果作為函數的參數是否好用的呢?接下來我們就一起去驗證一下吧。
通過表格的數據可以看出,Excel在識別數據的時候,帶有一定數據容錯能力,不過這種能力也只限於日期格式符合規定的分隔符"/"和"-"內。
通過表格的數據可以看出,函數帶入參數時有一定數據容錯能力,不過這種能力也只限於日期格式符合規定的分隔符"/"和"-"內。日期除了分隔符,我們還需要注意數字的規則,每部分的數字除了滿足相應的日期規則外,格式上的疏忽也能導致在參與計算時出錯,比如我們使用拼接從身份證中提取的出生年月
=MID(G13,7,4)&"/"&MID(G13,11,2)&"/"&MID(G13,13,2)
結果為1952/08/07,實際上它卻不是日期格式,如果我們負號轉數字的方法將公式改為
=--( MID(G13,7,4)&"/"&MID(G13,11,2)&"/"&MID(G13,13,2))
而得到的結果就是數字而不是需要日期格式;如果你說可以通過右鍵設置的方法來顯示為日期啦,雖然聽著可行,實際操作有問題,我們設計製作的某個功能,總不能在最後一步需要自己設置一下格式來完成吧!通過上面的操作我們發現函數有容錯功能,哪麼問題來了,有沒有可以將提取數字設置為日期的函數呢?哪就是我們後面要講的DATE函數。
DATE函數
參數:3個必填參數,分別對應按年月日的順序, 1參會作為年份, 2參會作為月份, 3參會識別為日期,
功能:通過輸入指定的參數返回相應的日期
語法結構圖如下:
注意:
1. 參數YEAR範圍:從1-9999,不符合日期的的規定的年份會直接與1900相加,而>=1900的則所見即所得。
2. 月份和日期並沒有嚴格的限制,只要為>=0的整數,超出的月份或日期的日常值會通過日期規則計算出一個正確的日期。
了解完這些,我們再來看看上面的例是不是就很簡單了,只需將公式改為=date(mid(g13,7,4),mid(g13,11,2),mid(g13,13,2))就能直接返回日期是不是很方便呢?通過date設置的日期,你就可以放心大膽在功能中使用,不用擔心上面的問題發生,這也是為什麼我經常使用它的原因之一。除了上面的函數經常用到外,我們還有一個常用的函數需要了解一下,就是今天的日期函數
今天函數:TODAY
參數:無
功能:返回系統的當前的日期
你要這麼簡單的函數我們有什麼可講的嗎?當然我們不是講它的功能,而是講它的用法,它的用法常見於求合同的到期是否到期,是否為退休員工,項目是否逾期完成等,比如我們在計算實際年齡需要對比年月日,比如b2的數據為1952/8/7,我們通常會用=if(date(year(today),month(b2),day(b2))>today(),year(today())-year(b2),year(today())-year(b2)-1),如果不用if就可以修改為=year(today)-year(b2)-(month(b2)>month(today())-(month(b2)=month(today())*(day(b2)>day(today());哪麼還有更簡單的方法嗎?當然有了,不過非本文的內容,我們下文分解!
如果你對我的文章有什麼意見,歡迎下方留言指正,如果對你有些許幫助,歡迎你關注我,特別注釋:本文是為想學Excel的小白準備,如果你是高手的,請略過!