「這個日期是星期幾?」「這是今年的第幾週?」排班表、週報、每週銷量統計,都會用到這兩個問題。今天要整理的是 WEEKDAY、WEEKNUM 和 ISOWEEKNUM。
這三個函式本身都很短,難的是第二個參數 type:同一天在不同 type 下會得到不同的數字,而且週數的算法有兩套(Sheets 的 type 1/2 跟 ISO),跨年那幾天會差到一整年。這篇把每個 type 的結果都列成表,當工具書放著,需要的時候回來查。
把日期拆成年、月、日的 YEAR、MONTH、DAY 在 日期與時間入門 講過了,這邊不重講。
怎麼選
| 要的東西 | 用哪個 | 重點 |
|---|---|---|
| 星期幾(數字) | WEEKDAY | 預設週日是 1,台灣習慣用 type 2(週一是 1) |
| 一年的第幾週 | WEEKNUM | 要選週從哪天開始,1 月 1 日所在的那週是第 1 週 |
| ISO 規則的第幾週 | ISOWEEKNUM | 週一起算,含該年第一個星期四的那週是第 1 週 |
後面的範例日期都用 2026/10/11,這天是週日,序號 46306。
星期幾
WEEKDAY
WEEKDAY 會把日期換成 1 到 7(type 3 是 0 到 6)的編號,代表星期幾。
語法:
- 日期:要判斷的日期。
- 類型:選填,決定哪一天是 1。不填就是 1,週日是 1、週六是 7。
2026/10/11 是週日,來看看各個 type 的結果:
| type | 編號規則 | 2026/10/11(週日) |
|---|---|---|
| 1(預設)、17 | 週日 = 1,週六 = 7 | 1 |
| 2、11 | 週一 = 1,週日 = 7 | 7 |
| 3 | 週一 = 0,週日 = 6 | 6 |
| 12 | 週二 = 1,週一 = 7 | 6 |
| 13 | 週三 = 1,週二 = 7 | 5 |
| 14 | 週四 = 1,週三 = 7 | 4 |
| 15 | 週五 = 1,週四 = 7 | 3 |
| 16 | 週六 = 1,週五 = 7 | 2 |
先手算 type 2:週一 1、週二 2、週三 3、週四 4、週五 5、週六 6、週日 7,週日當然是 7。
週一為 1 的星期編號
=WEEKDAY(DATE(2026,10,11), 2)你應該會得到 7!不填第二個參數的話:
預設 type 1,週日為 1
=WEEKDAY(DATE(2026,10,11))結果是 1。
我個人幾乎都用 type 2,因為台灣的週一到週五是上班日,「編號大於 5 就是週末」這句話最好寫。type 12 到 16 這種從週二、週三開始算的,我沒在工作上用過,知道有就好。
type 3 是 0 到 6,不是 1 到 7,拿來當 INDEX、CHOOSE 的位置用的時候要小心差 1。
第幾週
WEEKNUM
WEEKNUM 回傳日期落在一年的第幾週,在 type 1、2、11 到 17 這幾種類型下,1 月 1 日所在的那一週一律是第 1 週;type 21(ISO 週)是例外,後面會看到。
語法:
- 日期:要判斷的日期。
- 類型:選填,決定每週從哪天開始。1(預設)和 17 是週日起算,2 和 11 是週一起算,12 到 16 依序是週二到週六起算,21 是 ISO 週(跟
ISOWEEKNUM一樣)。
「1 月 1 日所在那週是第 1 週」這個規則有個後果:如果 1 月 1 日剛好是週五,那一週只有 2 天(週日起算時是週五、週六)或 3 天(週一起算時是週五、週六、週日)也算第 1 週,上一年最後幾天會落在去年的第 53 週,例如表格裡的 2026/12/31。來看幾個日期:
| 日期 | 星期 | type 1 | type 2 | type 21 |
|---|---|---|---|---|
| 2026/10/11 | 週日 | 42 | 41 | 41 |
| 2026/10/12 | 週一 | 42 | 42 | 42 |
| 2026/12/31 | 週四 | 53 | 53 | 53 |
| 2027/01/01 | 週五 | 1 | 1 | 53 |
| 2024/12/30 | 週一 | 53 | 53 | 1 |
| 2021/01/03 | 週日 | 2 | 1 | 53 |
2026/10/11 和 2026/10/12 只差一天,但跨過了週一。週日起算的 type 1 把週日當新的一週開頭,所以週日 10/11 就已經是 42;週一起算的 type 2 要到 10/12 才進到 42。
週日起算,預設 type 1
=WEEKNUM(DATE(2026,10,11))結果是 42。
週一起算,type 2
=WEEKNUM(DATE(2026,10,11), 2)結果是 41。
表格裡 2027/01/01 這列要多看一眼:type 1、2 說它是 2027 年的第 1 週,type 21 卻說它是第 53 週。這就是下一個函式的故事。
要注意,WEEKNUM 只回傳週數,不會告訴你這是哪一年的第幾週。年度的邊界要自己處理,後面「年週代碼」那一節有寫法。
ISOWEEKNUM
ISOWEEKNUM 回傳 ISO 8601 規則下的週數:週一是一週的開頭,含有該年第一個星期四的那一週是第 1 週。
語法:
- 日期:要判斷的日期。沒有第二個參數。
結果跟 WEEKNUM(日期, 21) 一致,所以你拿到的週數永遠不會出現「只有 2 天的第 1 週」。代價是年頭年尾的幾天會算進隔壁年:
2027/01/01 在 ISO 規則下屬於 2026 年的最後一週
=ISOWEEKNUM(DATE(2027,1,1))結果是 53。2027/01/01 是週五,它所在的那週(2026/12/28 到 2027/01/03)的星期四是 2026/12/31,所以整週算在 2026 年。2026 年因為 1 月 1 日是週四,剛好有 53 週。
倒過來也一樣:
2024/12/30 在 ISO 規則下屬於 2025 年第 1 週
=ISOWEEKNUM(DATE(2024,12,30))結果是 1。2024/12/30 是週一,那週的星期四是 2025/01/02,所以它是 2025 年的第 1 週,雖然日期還在 2024 年。
跟歐洲的公司或系統對週數的時候,用 ISOWEEKNUM。只是自己的週報要標「第幾週」,前後一致最重要;我個人偏向 ISOWEEKNUM,因為跨年那幾天的歸屬至少有標準可以查。
組合起來用
判斷平日或週末
週一起算的 type 2 讓週末變成「編號大於 5」。A2 放 2026/10/10(週六):
週六、週日顯示假日,其餘顯示平日
=IF(WEEKDAY(A2, 2) > 5, "假日", "平日")A2 是週六,得到「假日」。換成 2026/10/12(週一),就是「平日」。這個判斷不含國定假日,要排除國定假日請看 年資、工作日、到期日 裡的 NETWORKDAYS。
這個月的第幾週
想知道某天是當月的第幾週(週一起算),就拿這天的週數,減掉當月 1 日的週數,再加 1:
算 A2 是該月的第幾週,週一起算
=WEEKNUM(A2, 2) - WEEKNUM(DATE(YEAR(A2), MONTH(A2), 1), 2) + 12026/10/01 是週四,屬於第 40 週,2026/10/11 是第 41 週,所以 10/11 是 10 月的第 2 週(41 - 40 + 1)。2026/10/12 是第 42 週,就是第 3 週。
因為 WEEKNUM 的 type 2 是以 1 月 1 日所在的週當第 1 週,同一個月的兩個日期一定在同一年,所以這個算式不會有跨年的問題。
年週代碼
做週報常常想要「2026-W41」這種代碼。直覺會寫 YEAR(A2) 接 ISOWEEKNUM(A2),但 2027/01/01 這天會得到 2027-W53,世界上沒有這個週。
ISO 規則下,一週所屬的年份是「這週星期四」所在的年份。把日期推到同一週的星期四,再取年份就對了。WEEKDAY(A2, 2) 是週一 1 到週日 7,所以星期四的日期是 A2 - WEEKDAY(A2, 2) + 4:
ISO 年週代碼,例如 2026-W41
=YEAR(A2 - WEEKDAY(A2, 2) + 4) & "-W" & TEXT(ISOWEEKNUM(A2), "00")A2 是 2027/01/01(週五):WEEKDAY 是 5,減 5 加 4 是減 1 天,得到 2026/12/31,年份 2026,週數 53,結果是 2026-W53。A2 是 2026/10/11 的話,結果是 2026-W41。
下一個週五
想從某天往後找下一個週五(含當天),用 WEEKDAY(..., 2) 算出離週五還差幾天,除以 7 取餘數:
A2 之後(含當天)的第一個週五
=A2 + MOD(5 - WEEKDAY(A2, 2), 7)A2 是週日 2026/10/11,WEEKDAY 是 7,5 - 7 = -2,MOD(-2, 7) 是 5,加 5 天是 2026/10/16。如果 A2 本來就是週五,MOD(0, 7) 是 0,結果就是當天。
要把星期幾顯示成「一」「二」這樣的中文,可以看 TEXT 實戰 裡 MID 搭配 WEEKDAY 的寫法。
以後排班或做週報,先決定好「一週從哪天開始」,整份試算表的 type 統一就不會亂。試著用用看吧!
我是喜特先生,Mr. Sheet,我們下個教學見!
接下來可以
相關文章
查看所有文章日期與時間入門:日期序號、DATE、TODAY 與文字日期
從日期序號開始,認識 DATE、TODAY、NOW、YEAR、MONTH、DAY,學會日期加減、分辨文字日期和真日期,並搞清楚顯示格式和儲存格的值是兩回事。
年資、工作日、到期日:日期計算實戰
用 DATEDIF 算員工年資,用 NETWORKDAYS 和 WORKDAY 搭配假日清單算工作日,再用 EDATE 和 EOMONTH 算合約到期日與月底結帳日。
日期函式的陷阱:2/29 週年、月底、季末、DATEDIF 與週末字串
整理 DATE、EDATE、EOMONTH、DATEDIF、NETWORKDAYS.INTL、WORKDAY.INTL 常踩的坑:年份小於 1900 被加 1900、2/29 的週年日、月底連續推算、帶時間的月底篩選、DATEDIF 的 MD 單位、週末字串漏引號、補班日,以及 TODAY 讓結果每天都變。
留言討論
共 0 則留言
