祝各位新年快樂!歡迎來到 2023。
一年的開頭,不免俗自我介紹一下。喜特先生是一個分享 Google 試算表功能、函式、進階技巧和各類應用的全中文教學品牌。除了固定在每週日晚上七點,在方格子發文之外,也開放讀者詢問各種試算表相關的問題。
我的文章是公開免費的、都沒有設定付費閱讀,不過如果你覺得我的教學有稍稍幫忙到你,讓你的試算表人生變得更輕鬆,歡迎你贊助!
回顧一下我的 2022,一邊上班、一邊寫作,從三月開始週更,不知不覺就寫了 41 篇。託大家的福,我多了 3 位新訂閱的讀者、收了幾筆抖內、有 70 多位追蹤、閱讀人次也衝破了 7 萬人,的確實現了我內容變現的小小夢想,謝謝方格子、也謝謝大家支持。
今年除了會繼續維持週週更新之外,也希望有那個肝、有更多力氣推出更多內容跟服務!還請大家多多支持 🙏
那麼,2023 到了,今年有什麼新規劃嗎?或是有什麼重要的日子值得倒數一下呢?我們可以在試算表用三個方法,計算兩個日期的相差天數,當然計算倒數日也可以的,例如:
- 我幾歲了?(幾年幾月幾日?)
- 今天離大考還有幾天?
- 跟老伴在 2008/02/14 結婚,到現在已經多久了?
- 2023/01/01 到 2023/12/31 有幾個工作天?
那我們就馬上來看看怎麼做吧!
TODAY 函式
先認識一個等等偶爾會出現的好朋友,TODAY 函式。我們可以用 TODAY 函式取得今天的日期,而且什麼設定也沒有,只要在儲存格上面寫:
=TODAY()
就可以了!像這樣,然後 Enter 敲下去就好了:
方法一、兩個日期相減
最簡單又直接的方法,就是直接把兩個日期拿出來相減囉。
你可以直接在試算表上輸入日期,像是這樣:
然後在 C1 上,寫 B1 減去 A1:
=B1 - A1
就會得到:
這樣就是相差 364 天了。嗯?那如果是 A1 減 B1 呢?
=A1 - B1
就會出現負數了。這是為什麼呢?在 Google 試算表裡面,日期其實算是一種數字來處理,有個要訣是:
日期越早,數字越小。
日期越晚,數字越大。
因為剛剛我們把 2023 年 1 月 1 日(小)減去 2023 年 12 月 31 日(大),就會得到負數了。你當然也可以把剛剛提到的 TODAY 函式用上去,像是:
=TODAY() - B1
就知道 B1 上面的日期跟今天相隔多少天了。你當然也可以直接在函式裡寫日期,並且用雙引號括起來:
=TODAY() - "2022/01/01"
不過如果你想看到相差的「月數」或「年數」的話,我們就可以用第二個方法「DATEDIF」。
方法二、DATEDIF
第二種方法是利用 DATEDIF 函式,一樣取得兩個日期之間的相差多少「時間單位」,例如相差幾「天」、幾個「月」、幾「年」這樣。
使用方法也很簡單:
=DATEDIF(開始日期, 結束日期, 時間單位代號)
開始日期和結束日期就像剛剛那樣,填入儲存格或是直接輸入日期都可以。這樣至於時間單位代號的話,有以下幾個,都要用雙引號包好。
- Y:傳回開始日期和結束日期之間的整年數。
- M:傳回開始日期和結束日期之間的整月數。
- D:傳回開始日期和結束日期之間的天數。
- MD:傳回開始日期和結束日期之間的天數(日期中的月和年都會被忽略)。
- YM:傳回開始日期和結束日期之間的整月數(日期中的日和年都會被忽略)。
- YD:傳回開始日期和結束日期之間的天數(日期中的年會被忽略)。
欸?MD、YM、YD 又是什麼?我粗暴的理解是覺得它們有點像是取餘數的概念,得出兩個日期相差的單位。舉個例來說,這個是 MD,把 2023 年跟月份忽略、只算日期(01 跟 31)之間的相差天數:
=DATEDIF("2023/01/01", "2023/03/31", "MD")
=30
這個是 YM,把日期中的日(01 跟 31)和年(2000 跟 2023)都會被忽略,只計算相差的月數。
=DATEDIF("2000/01/01", "2023/03/31", "YM")
=2
最後是 YD,日期中的年會被忽略,算出兩個日期之間相差的天數。
=DATEDIF("2020/05/05", "2023/06/30", "YD")
=56
使用方法也跟剛剛一樣,例如我這邊有 A1 跟 B1 兩個日期,要取得兩個日期之間的差距:
在 C1 輸入:
=DATEDIF(A1, B1, "D")
我們就會得到:
這樣就好了!
方法三、NETWORKDAYS.INTL
最後一個是可以排除週末(一週中休息的日子)和假日,得到兩個日期間相差工作日的函式,叫「NETWORKDAYS.INTL」,超聰明!
不過要輸入的參數有一點點複雜,我們來看看:
=NETWORKDAYS.INTL(開始日期, 結束日期, [週末], [假日])
開始日期跟結束日期都跟剛剛一樣,應該是沒問題。
- [週末]:選填,等等會輸入特定的東西,代表一週中哪幾天是週末(休息日)。預設是「1」,代表週六跟週日休息。
- [假日]:選填,指定有假日日期的儲存格範圍。
因為這兩個參數是選填,如果什麼不填就是回傳「不考慮在週六跟週日休息的狀況下,在兩個日期間的工作日有多少唷」。
週末參數
指定週末的參數有兩種方法,一種是輸入數字、一種是輸入字串。
輸入數字
這方法有一點點複雜,建議直接查表:
例如說,我想知道 2023/01/01 到 2023/12/31 之間,在星期六跟星期日休息的狀況下有幾個工作天,就在「週末」的參數寫 1:
=NETWORKDAYS.INTL("2023/01/01", "2023/12/31", 1)
=260
又或是只有星期日休息,那就是在週末的參數寫 11:
=NETWORKDAYS.INTL("2023/01/01", "2023/12/31", 11)
=312
但我個人覺得這方法不太直覺、沒那麼喜歡,而且表也沒有包含像是「週休三日」、「每週一、三、五休息」這種狀況,所以我想介紹下一個方法:
輸入字串
用這個方法的話,需要輸入 7 個數字、並且用雙引號括起來以表示字串。看起來會像是這樣:
"0000011"
"0101010"
"1111100"
雙引號裡面的數字代表一個星期裡的每一天,從左到右開始算,第一個數字代表星期一、第二個數字代表星期二、第三個數字代表星期三,以此類推。還有,這些數字只能寫 0 跟 1,0 代表上班、1 代表休息。我們看幾個例子:
"0000011" --> 每星期六、每星期日休息
"0101010" --> 每星期二、每星期四、每星期六休息
"1111100" --> 每星期一到五休息
舉個例子,計算在每星期六、星期日休息的狀況下,2023 年 1 月 1 日到 12 月 31 日的工作日有多少個:
=NETWORKDAYS.INTL("2023/01/01", "2023/12/31", "0000011")
=260
計算每星期五、星期六、星期日休息的狀況下,計算 2023 年 1 月 1 日到 12 月 31 日的工作日有多少個:
=NETWORKDAYS.INTL("2023/01/01", "2023/12/31", "0000111")
=208
假日參數
你還可以告訴 NETWORKDAYS.INTL 函式,有哪幾天是國定假日,在計算工作日的時候把它排除。在這邊要指定一個儲存格範圍,範圍裡面需要有我們想指定的日期,像是這樣(以台灣的國定假日為例):
等等就可以在 NETWORKDAYS.INTL 指定 B 欄這個範圍,告訴試算表要排除這些日期、不列入工作日。舉例來說,假設每週六、日休息,並排除我們指定的假日:
=NETWORKDAYS.INTL("2023/01/01", "2023/12/31", "0000011", B2:B)
=194
跟著做做看吧!也歡迎讓我知道你有什麼問題唷。
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
我是喜特先生,Mr. Sheet,我們下個教學見!