=TEXT(A2,"dddd") 返回 A2 中日期的星期名称,例如 Monday。要以数字形式得到星期几,=WEEKDAY(A2) 对星期日返回 1,依次到星期六返回 7。
| A | B | C | |
|---|---|---|---|
| 1 | Date | Day | WEEKDAY |
| 2 | 2026-03-02 | Monday | 2 |
| 3 | 2026-03-06 | Friday | 6 |
| 4 | 2026-03-07 | Saturday | 7 |
| 5 | 2026-03-08 | Sunday | 1 |
| 6 | 2026-12-25 | Friday | 6 |
2026-03-02 是星期一,所以 WEEKDAY 返回 2(星期日算作 1)。2026 年的圣诞节是星期五。修改 A 列中的任意日期,星期名称都会随之变化。TEXT 返回的是文本,适合用作标签和报表;如果星期几要参与计算,比如判断周末,请用 WEEKDAY。
简写星期名称和其他格式
格式代码决定显示名称的哪一部分:"dddd" 是完整名称,"ddd" 是前三个字母,而 "dd" 或 "d" 返回的则是当月的第几天。组合多个代码,可以用文字写出完整的日期。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Date | dddd | ddd | dddd, mmmm d |
| 2 | 2026-03-02 | Monday | Mon | Monday, March 2 |
| 3 | 2026-07-04 | Saturday | Sat | Saturday, July 4 |
| 4 | 2026-10-31 | Saturday | Sat | Saturday, October 31 |
星期名称跟随 Excel 的语言:德语版 Excel 写作 Montag,代码是 "TTTT"。日语版 Excel 是个例外:"dddd" 仍然返回 Monday,日语名称有自己的代码。=TEXT(A2,"aaa") 显示 月,=TEXT(A2,"aaaa") 显示 月曜日,=TEXT(A2,"m/d(aaa)") 得到日本常用的标签 3/2(月)。同样的代码也可以用在自定义数字格式中。
如果要让单元格中保留日期、只是显示星期几,就用数字格式代替公式:开始 > 数字格式 > 其他数字格式 > 自定义,输入 dddd 或 ddd yyyy-mm-dd。单元格中存的仍然是日期,所以求和、查找和排序都照常工作。
WEEKDAY 函数和返回类型
WEEKDAY(serial_number, [return_type]) 返回这一天在一周中的位置。第二个参数决定一周从哪一天开始。
| return_type | 数字 |
|---|---|
| 1 或省略 | 星期日 1 至星期六 7 |
| 2 | 星期一 1 至星期日 7 |
| 3 | 星期一 0 至星期日 6 |
| 11 | 星期一 1 至星期日 7(与 2 相同) |
| 12 至 17 | 星期二 1 至星期一 7,依此类推,直到 17:星期日 1 至星期六 7 |
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Date | Type 1 | Type 2 | Type 3 |
| 2 | 2026-03-02 | 2 | 1 | 0 |
| 3 | 2026-03-06 | 6 | 5 | 4 |
| 4 | 2026-03-07 | 7 | 6 | 5 |
| 5 | 2026-03-08 | 1 | 7 | 6 |
对于 3 月 2 日星期一,三种类型分别返回 2、1 和 0。对于 3 月 8 日星期日,分别返回 1、7 和 6。在美国以外,大多数人需要的是类型 2:星期一是 1,只有星期六和星期日大于 5。
判断日期是不是周末
使用类型 2 时,星期六是 6,星期日是 7,所以 WEEKDAY(A2,2)>5 在周末为 TRUE。把它放进 IF 得到标签,或者把它用作条件格式规则(开始 > 条件格式 > 新建规则 > 使用公式确定要设置格式的单元格),给周末的行加上底色。
| A | B | C | |
|---|---|---|---|
| 1 | Date | Weekend? | Label |
| 2 | 2026-03-05 | FALSE | Weekday |
| 3 | 2026-03-06 | FALSE | Weekday |
| 4 | 2026-03-07 | TRUE | Weekend |
| 5 | 2026-03-08 | TRUE | Weekend |
| 6 | 2026-03-09 | FALSE | Weekday |
| 7 | 2026-03-10 | FALSE | Weekday |
3 月 7 日星期六和 3 月 8 日星期日这两行被突出显示了。规则中 A 前面的 $ 让一行中的每一列都读取 A 列的日期。如果要统计两个日期之间的工作日天数,而不是逐个判断,请用 NETWORKDAYS:参见 NETWORKDAYS 和 WORKDAY。
把星期数字变成自定义标签
当你需要 TEXT 生成不了的标签时,比如 Mo、Tu 或班次名称,就把 WEEKDAY 的数字交给 CHOOSE,它会取出对应位置的项:=CHOOSE(WEEKDAY(A2,2),"Mo","Tu","We","Th","Fr","Sa","Su")。使用类型 2 时列表从星期一开始,所以星期三返回 We。
练习:星期名称和周末
| A | B | |
|---|---|---|
| 1 | Date | Day |
| 2 | 2026-04-16 |
轮到你了: 在 B2 中显示 A2 中日期的完整星期名称,例如 Monday。
| A | B | |
|---|---|---|
| 1 | Date | Weekend? |
| 2 | 2026-04-16 | |
| 3 | 2026-04-17 | |
| 4 | 2026-04-18 | |
| 5 | 2026-04-19 |
轮到你了: 在 B2 中,如果 A2 中的日期是星期六或星期日,就返回 TRUE,否则返回 FALSE,然后向下填充到 B5。
为什么 TEXT 返回的星期几不对
如果 A 列中存的是当月的第几天(1、2、15),而不是完整的日期,TEXT 会把每个数字当作 1900 年 1 月(Excel 日历的起点)中的某一天,返回的星期名称和你的月份毫无关系。
| A | B | C | |
|---|---|---|---|
| 1 | Typed | TEXT | Built with DATE |
| 2 | 15 | Sunday | Wednesday |
15 被当作 1900 年 1 月 15 日,Excel 认为那天是星期日。用 DATE(2026,4,A2) 构造真正的日期,就会发现 2026 年 4 月 15 日是星期三。以文本存储的日期也会出现同样的问题:用 =ISNUMBER(A2) 检查,真正的日期会返回 TRUE。
常见问题
Excel 中怎么根据日期得到星期几?
=TEXT(A2,"dddd") 返回完整名称(Monday),=TEXT(A2,"ddd") 返回简写(Mon)。要得到数字,请用 =WEEKDAY(A2,2),它把星期一算作 1,星期日算作 7。
Excel 中 WEEKDAY 返回什么?
一个 1 到 7 的数字。没有第二个参数时,星期日是 1,星期六是 7。WEEKDAY(A2,2) 让星期一为 1、星期日为 7,WEEKDAY(A2,3) 让星期一为 0、星期日为 6。
Excel 中怎么判断一个日期是不是周末?
=WEEKDAY(A2,2)>5 对星期六和星期日返回 TRUE。用 IF 包起来就能得到标签:=IF(WEEKDAY(A2,2)>5,"Weekend","Weekday")。
怎么在同一个单元格中同时显示日期和星期几?
给单元格设置自定义数字格式:开始 > 数字格式 > 其他数字格式 > 自定义,然后输入 ddd yyyy-mm-dd。单元格中存的仍然是日期,所以读取它的公式照常工作。
为什么 TEXT 返回的星期几不对?
这些单元格中是日数(1 到 31)或文本,而不是日期。TEXT 会把数字 15 当作 Excel 日历中的第 15 天,即 1900 年 1 月 15 日,Excel 认为那天是星期日。请使用真正的日期,或者用 DATE 构造日期。