excel內建了多種資料型別,我們今天簡單介紹一下日期這個型別。
excel中,日期這一資料型別只能表示公元2023年1月1日開始到公元2023年12月31日為止的日期。不在此範圍內的日期,例如2023年的某一天,只能以文字這一資料型別表示,而不能以日期這一資料型別表示。不能表示有兩重意思:
excel不能對範圍外的日期進行日期型別特有的操作和計算。
比如,我們用可以對兩個日期型別軋差求其中過去的天數;
也可以對某個日期型別使用weekday()函式求它是週幾。
但是這樣的操作,無法適用於早於2023年1月1日和晚於2023年12月31日的日期。
如果將「1898-1-5」這樣的日期的格式設定為長、短日期,會報錯。
設定日期型別通常可以使用如下方法:
按照一定標準直接輸入excel可識別的日期。
例如:在國內,可以直接以「yyyy-mm-dd」或「yyyy年mm月dd日」的格式錄入支援範圍內的日期,excel可以自動將錄入的內容設定為日期格式。
對已經存在的文字型別或數值型別,可以將其格式設定為長/短日期。
如果它在支援範圍內,excel直接轉換;如果不在支援範圍內,excel返回錯誤。
根本上來說,在excel中,每個日期型別被表示為距離2023年1月0日的天數的方式。對於乙個數值型整數1,如果我們將它的型別設定為日期,就會得到2023年1月1日。如下圖所示:對於32,應當是2023年的第32天,顯然是2月1日。
圖01 數值轉換成日期:
這一處理方式帶來這樣的功能:
對數值軋差可以很簡單的求解兩個日期之間的天數。
可以用小數表示時間。
例如1.5表示1天及12小時。
這些就是日期的基本內容。
excel為日期這一資料型別提供了多種操作和函式。我們這裡介紹比較常用的一些。
計算兩個日期之間的天數:
如果我們用乙個日期減去另乙個日期,可以得到兩者之間相隔的天數。
例如:使用」1990-1-2」-「1990-1-1」,得到的結果是1,也就是兩者之間相隔1天。
在實際應用的時候我們要注意如果要計算兩個日期之間如果算頭算尾共有多少天,就要對軋差的結果加1,否則結果是錯誤的。
例如:想要知道2023年共計多少天,可以」2000-12-31」-「2000-1-1」+1,也可以」2001-1-1」-「2000-1-1」。
year(), month(), day():
這三個函式從乙個日期型別中提取其年、月、日的數值。
注意:這幾個函式也可以接受乙個數值,excel會首先試圖將數值轉換為日期型別並進行計算;
如果數值超出日期型別支援的範圍會返回#num!錯誤。
date(year, month, day):
接受年、月、日的數值,返回乙個對應的日期型別。
today():
返回今天的日期,注意它只能返回系統設定的「今日」,不保證結果真的是現實中的今日。
相似的,now()函式按系統設定返回當前日期和時間,注意:
它返回錄入公式後的日期和時間後保持不變,直到a.對工作表進行重新計算或b.重新開啟工作簿時自動重新整理。
下面我們看幾個對於日期的具體應用
既然日期是excel支援的資料型別,vlookup函式就可以直接查詢某個日期對應的資料。這裡,我們介紹乙個特殊的用法:通過將vlookup函式的第四個引數設定為true來進行查詢。
我們看這樣乙個問題:某家企業維護了一張人員統計表,記錄了每個時點的人員總數。每當有人員變動(入職、離職、退休等情況),該企業負責人員就將當天的人數記錄到台賬中,例如:
圖02 vlookup函式查詢日期 資料:
現在的問題是:如何查詢任意一天的人數?例如2023年1月1日開始到2023年5月2日結束的這幾天,該企業一直有50人;2023年5月3日開始直到2023年7月4日結束的這段時間,該企業一直有53人。這樣的問題可以通過將vlookup函式的第四個引數設定為true,即進行模糊查詢的方式處理。
vlookup函式的模糊查詢,根據excel的幫助文件,功能如下:
如果為true或省略,則返回精確匹配值或近似匹配值。也就是說,如果找不到精確匹配值,則返回小於lookup_value(也就是第乙個引數,作者注)的最大數值。table_array(也就是第二個引數,作者注)第一列中的值必須以公升序排列;否則vlookup可能無法返回正確的值。a列資料恰好是公升序排列的那麼,如果我們想要查詢2023年11月4日的員工人數,我們這樣設定公式:
=vlookup(date(2000,11,4),$a:$b,2,true)
即可。vlookup函式將查詢到不大於2023年11月4日的最大值,也就是2023年7月5日,並返回其對應的第二列的值。
這個公式,有時可以很方便的從乙個按照日期排序的參數列中查詢到適用的引數。例如,中國人民銀行會公布歷年來基準利率的數值,但其中往往只有基準利率調整當天的日期和基準利率。通過vlookup函式的設定,我們可以簡單地提取任意一天的基準利率。唯一要注意的是:因為我們要查詢乙個日期,vlookup函式的第乙個引數或者引用乙個存放了日期型別的單元格;要麼用date函式生成乙個日期型別。
簡單地對起止日軋差計算天數差,會因為閏年的問題難以準確處理(當然忽略小數取證的話也是可以的)。後來我的解決思路是「化歸轉化」,我們求間隔的月數,對月數按「3、6、12、24、36、60」來分類。注意到1年=12個月,很顯然,求間隔月數的公式為:
=12*(year(截止日期)-year(開始日期))+(month(截止日期)-month(開始日期))
有時我們解決問題不一定要直接解決,進行一定的化歸轉化可以更簡單地解決問題。
有時分發給他人的工作表返回時會發現需要錄入日期的單元格被錄入了「2000.5.1」這樣的形式。excel是無法自動識別這種格式的。對此我們可以簡單地用ctrl+f召喚出查詢替換對話方塊,用「-」替換「.」即可。
為了避免第3點中提到的問題,我們可以限制其他人必須錄入乙個日期型別資料,甚至可以約束錄入的日期型別的起止範圍。具體地:
第一步,開啟資料有效性/資料驗證對話方塊:
圖03 開啟資料驗證對話方塊:
第二步,在彈出的資料有效性/資料驗證對話方塊中,將「允許」設定為日期,將「資料」設定為自己需要的型別。例如這裡我們設定「介於」後可以通過設定開始日期和結束日期的方式來約束單元格可以錄入的日期範圍。
圖04 資料驗證對話方塊:
通過設定單元格的資料有效性,我們可以約束其他人的資料錄入行為,避免產生錄入資料型別、值等的錯誤。
以上就是excel中日期型別的簡單介紹。
說說 Python 的對映資料型別
mutable mju t bl adj.capable of or subject to change or alteration.它們之間的類關係如下圖所示 箭頭從子類指向父類,抽象類和抽象方法的名稱以斜體顯示。這些介面定義了構建乙個對映型別所需要的介面與方法。可以通過 isinstance 方...
SQL Server日期資料型別DATE的使用
在sql server 較高版本,如sql 2008新增加了乙個日期資料型別date,它很容易地幫insus.net解決乙個問題。專案中需要做每天的報表,即是說要搜尋出每天的記錄。比如使用者輸入某一天,搜尋出某一天的資料出來,不管搜尋日期字段是否為純日期還是帶有時間的。以前使用between謂詞等。...
資料型別JSON格式
1.從結構上看,所有的資料最終都可以分成三種型別 第一種型別是scalar 標量 也就是乙個單獨的string 字串 或數字 numbers 比如 北京 這個單獨的詞。第二種型別是sequence 序列 也就是若干個相關的資料按照一定順序並列在一起,又叫做array 陣列 或list 列表 比如 北...