=WEEKNUM(A2) 返回 A2 中日期的周数。默认情况下每周从星期日开始,第 1 周是包含 1 月 1 日的那一周。欧洲大部分地区使用的是 ISO 周数,每周从星期一开始:这种情况请用 =ISOWEEKNUM(A2)。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Date | WEEKNUM | ISOWEEKNUM | Day |
| 2 | 2026-03-02 | 10 | 10 | Mon |
| 3 | 2026-12-27 | 53 | 52 | Sun |
| 4 | 2026-12-31 | 53 | 53 | Thu |
| 5 | 2027-01-01 | 1 | 53 | Fri |
| 6 | 2027-01-03 | 2 | 53 | Sun |
两种算法在大多数日期上结果相同,只在新年前后出现分歧。星期五 2027-01-01 按 WEEKNUM 是第 1 周,因为第 1 周总是包含 1 月 1 日。按 ISOWEEKNUM 它属于 2026 年的第 53 周:ISO 第 1 周是包含当年第一个星期四的那一周,而那一周从 1 月 4 日星期一开始。星期日 2026-12-27 显示了另一个区别:WEEKNUM 已经进入第 53 周,因为它的每周从星期日开始。
WEEKNUM 的返回类型
WEEKNUM 的第二个参数决定每周从哪一天开始。类型 21 会切换到 ISO 算法,与 ISOWEEKNUM 相同,这在旧版 Excel 中很有用:ISOWEEKNUM 需要 Excel 2013 或更高版本。
| return_type | 每周开始于 | 第 1 周 |
|---|---|---|
| 1 或省略 | 星期日 | 包含 1 月 1 日 |
| 2 | 星期一 | 包含 1 月 1 日 |
| 11 至 17 | 星期一至星期日 | 包含 1 月 1 日 |
| 21 | 星期一 | 包含第一个星期四(ISO 8601) |
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Date | Type 1 | Type 2 | Type 21 | ISOWEEKNUM |
| 2 | 2026-01-04 | 2 | 1 | 1 | 1 |
| 3 | 2026-01-05 | 2 | 2 | 2 | 2 |
| 4 | 2027-01-01 | 1 | 1 | 53 | 53 |
星期日 2026-01-04 在类型 1 下开始了第 2 周,但在类型 2 下仍属于第 1 周,因为类型 2 的一周到星期日才结束。类型 21 和 ISOWEEKNUM 的结果总是一致。
一周的开始日期
按周分组的报表通常显示一周的第一天,而不是周数。用日期减去星期几即可:WEEKDAY(A2,3) 把星期一算作 0,所以 =A2-WEEKDAY(A2,3) 就是 A2 当天或之前的那个星期一。如果每周从星期日开始,就用 =A2-WEEKDAY(A2)+1。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Date | Week starts (Monday) | Week starts (Sunday) | Week ends (Sunday) |
| 2 | 2026-03-04 | 2026-03-02 | 2026-03-01 | 2026-03-08 |
| 3 | 2026-03-08 | 2026-03-02 | 2026-03-08 | 2026-03-08 |
| 4 | 2026-03-09 | 2026-03-09 | 2026-03-08 | 2026-03-15 |
| 5 | 2027-01-01 | 2026-12-28 | 2026-12-27 | 2027-01-03 |
星期三 2026-03-04 所在的那一周从星期一 2026-03-02 开始,到星期日 2026-03-08 结束。星期一对应的就是它自己。公式的结果是日期,所以需要设置日期格式;否则会显示 46083 这样的数字。返回类型的说明请看 WEEKDAY。
把周数转换成日期
反过来,从“2026 年第 12 周”求日期,要用到一条规则:1 月 4 日总是在 ISO 第 1 周中。先找到那一周的星期一,第 1 周之后每多一周就加 7 天。
| A | B | C | |
|---|---|---|---|
| 1 | Year | Week | Monday |
| 2 | 2026 | 12 | 2026-03-16 |
| 3 | 2026 | 1 | 2025-12-29 |
| 4 | 2027 | 1 | 2027-01-04 |
2026 年第 12 周从 2026-03-16 开始,2026 年第 1 周从 2025-12-29 开始,2027 年第 1 周从 2027-01-04 开始。一年的第一个 ISO 周可能从 12 月开始,所以标签中的年份和日期本身的年份并不总是一致。
练习:周数
| A | B | |
|---|---|---|
| 1 | Date | ISO week |
| 2 | 2026-05-24 | |
| 3 | 2023-03-15 | |
| 4 | 2026-11-08 |
轮到你了: 在 B2 中返回 A2 中日期的 ISO 周数,然后向下填充到 B4。
| A | B | |
|---|---|---|
| 1 | Date | Monday |
| 2 | 2026-05-22 | |
| 3 | 2026-05-24 | |
| 4 | 2026-05-25 |
轮到你了: 在 B2 中返回 A2 日期所在那一周的星期一,然后向下填充到 B4。每周从星期一到星期日。
常见错误:1 月出现第 53 周
按 YEAR(A2) 和 ISOWEEKNUM(A2) 分组,会把 2027 年 1 月 1 日放进“2027 年第 53 周”,而这一周并不存在。ISO 周属于它的星期四所在的年份,所以要从同一周的星期四取年份:YEAR(A2-WEEKDAY(A2,2)+4)。
| A | B | C | |
|---|---|---|---|
| 1 | Date | Wrong label | Right label |
| 2 | 2026-12-31 | 2026-W53 | 2026-W53 |
| 3 | 2027-01-01 | 2027-W53 | 2026-W53 |
| 4 | 2027-01-03 | 2027-W53 | 2026-W53 |
对于 2027 年 1 月 1 日,错误的标签是 2027-W53,正确的标签是 2026-W53,与 12 月 31 日属于同一周。在一年的另一端情况正好相反:星期一 2025-12-29 属于 2026 年的 ISO 第 1 周,正确的标签是 2026-W01。TEXT(...,"00") 让周数保持两位数,这样标签就能按顺序排序。
常见问题
Excel 中怎么根据日期得到周数?
=WEEKNUM(A2) 返回周数,每周从星期日开始,1 月 1 日所在的那一周是第 1 周。要得到欧洲大部分地区使用的 ISO 周数,请用 =ISOWEEKNUM(A2) 或 =WEEKNUM(A2,21)。
WEEKNUM 和 ISOWEEKNUM 有什么区别?
WEEKNUM 的第 1 周从 1 月 1 日开始,所以一年的第一周和最后一周可能不满 7 天。ISOWEEKNUM 遵循 ISO 8601:每周从星期一到星期日,第 1 周是包含当年第一个星期四的那一周,所以 1 月 1 日可能属于上一年的第 52 或 53 周。
Excel 中怎么求某一周的星期一?
=A2-WEEKDAY(A2,3) 返回 A2 日期当天或之前的那个星期一。类型为 3 的 WEEKDAY 把星期一算作 0,所以星期一会保持不变。把结果设置为日期格式。
Excel 中怎么把周数转换成日期?
对于 ISO 周,Y 年第 N 周的星期一是 =DATE(Y,1,4)-WEEKDAY(DATE(Y,1,4),3)+(N-1)*7。1 月 4 日总是在 ISO 第 1 周中,所以公式先退回到那一周的星期一,再往后推 N-1 周。
为什么 Excel 会显示第 53 周?
使用 WEEKNUM 时,12 月 31 日总是在第 53 周,因为第 1 周是 1 月 1 日所在的不完整的一周(如果是从星期六开始的闰年,比如 2028 年,就是第 54 周)。使用 ISOWEEKNUM 时,一年如果从星期四开始或在星期四结束,就有 53 周,2026 年就是这样。