小本
小本

各位地球人好~我來自銀河系的一顆藍色小行星 想建構一個小宇宙,這樣就能在不同行星間遊走 :D

Excel判斷閏年:Excel x 1900/1904日期系統

寫這篇文章,花了將近一個月的時間,從前置作業的找資料、函數確認、時間差換算等,待資料備齊後,才開始敲鍵盤讓資料反芻成文字。這篇大概是我的部落格中,最嘔心瀝血之作。

在blogger發佈後,這篇的瀏覽人次,以「Excel技巧」這個類別來看,是第一名。

後來有投稿到公司的月刊中,順手在文末的地方宣傳自己的部落格,但投稿時卻被說「內容寫的太深奧,沒人看得懂」「這些內容網路上都找得到資料阿」當時聽到覺得有點小受傷。

其實會寫這篇文章的主要動機是「Excel」,正因為接觸到它才讓我想深入了解閏年的由來、如何運用函數確認閏年、日期1900/1904的區別.. 等。而這裡的每個文字都是自我學習的一部分。
圖片來源:NASA Image and Video Library
閏年的由來:關於古埃及人的發現

曆法,最早是由古埃及人發明的,稱為「太陽曆」,也就是現在俗稱的「公曆」。古埃及人透過每年尼羅河的氾濫週期、天文上的觀測、以及埃及聖䴉(ㄒㄩㄢˊ)的歸來等,得知剛好每次氾濫的間隔期間,大約是365天。因此,當觀測到天狼星與太陽同時從東方升起的那一天,也正是新的一年的第一天(約公曆的7月19日前後)。


Excel的日期系統有2套,分別是1900年、1904年。一般在Windows作業系統裡,所使用的Excel都是1900年的日期系統,而這個年份表示紀元年(起始年)是從1900/1/1開始。

「 1900/1/1 = 0 」 Excel中的天數起始日,當日子隨著時間增加,天數也會跟著遞增。如下圖所示

日期格式(左)、通用格式(右),實際比照,概念會比較清楚。

Q:該如何判斷現在用的Excel是1900還是1904呢?有2種方式

方法1:設定儲存格格是確認
  • A3儲存格格式,設定為「日期格式」,並輸入數字「1」。
  • B3儲存格格式,設定為「通用格式」,並輸入數字「1」。

A3儲存格為「日期格式」,會自動帶出1900年,這表示日期系統是1900為紀元年的版本。

B3儲存格為「通用格式」,可以和A3儲存格做對照。

A3和B3儲存格分別輸入「1」之後,但因為設定的儲存格格式不同,而得到不同的結果。
方法2:從Excel檔案選項中做確認
  • 點選活頁簿左上角的「檔案」
  • 點選左下角的「選項」
  • 「進階」> 下拉至四分之三左右 >「計算此活頁簿時」>「使用1904年日期系統」

沒有打勾表示是「1900年日期系統」,反之,有打勾的是「1904年日期系統」。

微軟作業系統的Excel預設都是1900年日期系統

 日期系統的歷史:Lotus 1-2-3 與 Excel 的相遇

1982年,微軟推出第一款電子製表軟體「Multiplan」並在CP/M系統上搶得先鋒,但在MS-DOS系統敗給了Lotus 1-2-3。

「Lotus 1-2-3」是在1983年,由美國蓮花軟體公司發布與IBM個人電腦相容的電子試算表Lotus 1-2-3,在當時轟動一時,是世界上第一套銷售100萬套的軟體。

第一套殺手級的應用軟體,擁有三大功能:(1)強大的試算表、(2)圖形整合、(3)簡易資料庫,故稱為1-2-3。在Excel誕生前,Lotus 1-2-3可是是最受歡迎的電子表格軟體。也因此促使了微軟在1985年推出第一款Excel。

圖片來源:Google x Lotus 1-2-3
閏年問題:1900是否為閏年?

Lotus 1-2-3應用軟體的日期系統,設定1900年為閏年。Excel在當時為了要和領頭羊Lotus 1-2-3並駕齊驅,而使用了相同的日期系統,這麼一來使用者就可以在Excel讀寫Lotus 1-2-3。相反的,Excel也相容了此bug。

到了1988年,Excel的銷量超過了Lotus,使得微軟在PC成為了軟體王國的霸主。後續,Excel約每2年會推出新版本,其中也要兼容自家的老版本,1900日期系統的bug成了難解之謎,因為一旦糾正了這個bug,會出現許多問題:

  1. 日期將會誤差一天,修正資料費時費工。
  2. 某些函數(如WEEKDAY),計算結果將返回不同的值,會導致無法正常工作。
  3. 修正後,會破壞使用日期的序列與相容性。


1900年並非為閏年,而1904年則是為閏年。
  • Microsoft Excel for Windows 默認使用1900年日期系統

Excel將1900年系統認定為閏年,於是多出了1900年02月29日,導致無法正確計算1900年03月01日之前的日期,不過因為大部分的使用者不會使用1900年03月01日之前的日期,所以很少會產生這個問題。

  • Microsoft Excel for Macintosh 默認使用1904年日期系統

早期Macintosh計算機不支持1904/01/01之前的日期。此設計是在排除1900年不是閏年的問題。


該如何判斷年份是否為閏年?
  • 微軟 x 閏年判斷解說

步驟1:該年份是否能被「4」整除,「是」請移至步驟2;「否」請移至步驟5。

步驟2:該年份是否能被「100」整除,「是」請移至步驟3;「否」請移至步驟4。

步驟3:該年份是否能被「400」整除,「是」請移至步驟4:「否」請移至步驟5。

步驟4:該年份為閏年 (有366天)。

步驟5:該年份不是閏年 (有365天)。

閏年確認步驟圖
  • 判斷年份是否為閏年公式:A2儲存格:輸入想確認的年份;閏年公式解說<傳送門>

函數公式「=IF(OR(A2-ROUNDDOWN(A2/400,0)*400=0,AND(A2-ROUNDDOWN(A2/4,0)*4=0,A2-ROUNDDOWN(A2/100,0)*100<>0)),"閏年","平年")」

設定好公式後,只要輸入想確認的年份,公式就會自動帶出答案。
關於閏年
圖片來源:維基百科 x 計算平閏年圖表
  • 閏年的制定與地球公轉有關

地球繞行太陽公轉一周的時間為一年,一般認知為365天,但實際公轉所需的時間為365.24219日,也就是每年會多出0.24219天(約5小時48分46秒)。

  • 歷年與回歸年的時間差

歷年:一年的長度為365天,也稱之為「平年」。

曆法上規定一個平年的時間為365天,實際上是比回歸年少算了約5小時48分46秒。

回歸年:一年的實際長度為365.24219天。

年的的制定是利用太陽運動而來,一回歸年是指太陽在天上運行,連續兩次通過春分點的間隔時間,稱為一個回歸年(tropical year),實際長度為365.24219天,這是真正一年的長度。


「百年不閏,四百年再閏」的規則。那麼,四千年呢?
  • 四年一閏

當經過了一年,歷年的時間差,會少回歸年0.24219天(約5小時48分46秒),

等到了第四年,這個時間差便會累積至0.96876天(約23小時15分1秒),

回歸年會少歷天將近一天的時間。因此,制定每四年一閏來平衡。

但是,歷年比回歸年少約0.03124天(約45分)。

  • 百年不閏,四百年再閏

以歷年來看,按照「每四年一閏」的規律,等到了第一百年時,

歷年+閏年將累積成36,525日(365*100+25),

比起回歸年的天數多出約0.781天(約18小時44分39秒)。

到了第四百年時,則會憑空多出3.124天的時間差。

所以,第一百年時,是不閏年的,等到第四百年時再閏。

  • 四千年不閏 (按邏輯推敲)

承上述「百年不閏,四百年再閏」的規則,實際上還有0.124天(約2小時58分34秒)的時間差。

等到了第四千年時,回歸年會多歷年1.24天(約1天14分24秒),回歸年整整會多出一天來,

所以,到四千年的時後,是不閏年的。

※「四千年不閏」目前尚未有情報顯示四千年是不閏年的。

畢竟,這中間還要考量一些天文之類的專業問題,而且四千年離距今還有1981年之久。


閏年試算表:在曆法中便有此一說「四年一閏,百年不閏,四百年再閏」。

KNB碎碎唸:

此篇版本為第三版,若對我第一版的文章有興趣,可以到<傳送門>來收看。

第二版的文章,因為是投稿在公司的期刊中,所以不太方便公開第二版。我個人是偏愛第三版啦~畢竟有增添小故事及若干張圖片,文章的整體性較完整,所以自己是對第三版的滿度比較高。

  • 如果資料有我理解錯誤的地方,或者有其他任何建議,都歡迎來提點指教喔;或者,各位對於閏年有甚麼其他想法,可以在下方留言一起討論喔。


課外補充:

01# 泛科學「閏年怎麼來?為什麼是2月29日?事情沒有你想的那麼簡單」

02# 中央氣象局數位科普網「農曆為何要有閏月的安排?」

引用資料:

01# 微軟「Excel incorrectly assumes that the year 1900 is a leap year」

02# 微軟「Differences between the 1900 and the 1904 date system in Excel」

03# 微軟「在Excel中的日期系統」

04# 微軟「判斷年份是否為閏年的方法」

05# 微軟「變更日期系統、格式或兩位數年份解釋」

06# 「為什麼微軟Office的檔案格式如此複雜?」

07# 維基百科「閏年」

08# 維基百科「Lotus 1-2-3」

09# 維基百科「Microsoft Excel」

10# 臺北市立天文科學教育館

11# 科普中國-科學原理一點通

函數說明:

1. 2019/08/18 Excel函數-031_mod-數學與三角函數

2. 2019/08/18 Excel函數-032_or-邏輯 

3. 2019/08/18 Excel函數-033_and-邏輯 

4. 2019/08/24 Excel活用-007_閏年公式 

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

第一个支持了这篇作品
加载中…

发布评论