Menu

Excel 根据日期求星期几:TEXT 和 WEEKDAY

=TEXT(A2,"dddd") 返回 A2 中日期的星期名称,例如 Monday,=WEEKDAY(A2) 则以数字形式返回。还包括简写名称、WEEKDAY 的返回类型和判断周末。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=TEXT(A2,"dddd") 返回 A2 中日期的星期名称,例如 Monday。要以数字形式得到星期几,=WEEKDAY(A2) 对星期日返回 1,依次到星期六返回 7。

根据日期求星期名称
B2
ABC
1DateDayWEEKDAY
22026-03-02Monday2
32026-03-06Friday6
42026-03-07Saturday7
52026-03-08Sunday1
62026-12-25Friday6
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

2026-03-02 是星期一,所以 WEEKDAY 返回 2(星期日算作 1)。2026 年的圣诞节是星期五。修改 A 列中的任意日期,星期名称都会随之变化。TEXT 返回的是文本,适合用作标签和报表;如果星期几要参与计算,比如判断周末,请用 WEEKDAY。

简写星期名称和其他格式

格式代码决定显示名称的哪一部分:"dddd" 是完整名称,"ddd" 是前三个字母,而 "dd" 或 "d" 返回的则是当月的第几天。组合多个代码,可以用文字写出完整的日期。

星期的格式代码
C2
ABCD
1Dateddddddddddd, mmmm d
22026-03-02MondayMonMonday, March 2
32026-07-04SaturdaySatSaturday, July 4
42026-10-31SaturdaySatSaturday, 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
同样的日期,三种编号方式
C2
ABCD
1DateType 1Type 2Type 3
22026-03-02210
32026-03-06654
42026-03-07765
52026-03-08176
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

对于 3 月 2 日星期一,三种类型分别返回 2、1 和 0。对于 3 月 8 日星期日,分别返回 1、7 和 6。在美国以外,大多数人需要的是类型 2:星期一是 1,只有星期六和星期日大于 5。

判断日期是不是周末

使用类型 2 时,星期六是 6,星期日是 7,所以 WEEKDAY(A2,2)>5 在周末为 TRUE。把它放进 IF 得到标签,或者把它用作条件格式规则(开始 > 条件格式 > 新建规则 > 使用公式确定要设置格式的单元格),给周末的行加上底色。

判断并突出显示周末
C2
ABC
1DateWeekend?Label
22026-03-05FALSEWeekday
32026-03-06FALSEWeekday
42026-03-07TRUEWeekend
52026-03-08TRUEWeekend
62026-03-09FALSEWeekday
72026-03-10FALSEWeekday
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

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。

练习:星期名称和周末

轮到你了:星期名称
B2
AB
1DateDay
22026-04-16
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 B2 中显示 A2 中日期的完整星期名称,例如 Monday。

轮到你了:是不是周末
B2
AB
1DateWeekend?
22026-04-16
32026-04-17
42026-04-18
52026-04-19
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 B2 中,如果 A2 中的日期是星期六或星期日,就返回 TRUE,否则返回 FALSE,然后向下填充到 B5。

为什么 TEXT 返回的星期几不对

如果 A 列中存的是当月的第几天(1、2、15),而不是完整的日期,TEXT 会把每个数字当作 1900 年 1 月(Excel 日历的起点)中的某一天,返回的星期名称和你的月份毫无关系。

日数不是日期
B2
ABC
1TypedTEXTBuilt with DATE
215SundayWednesday
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

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 构造日期。

Coddy 编程语言插图

和 Coddy 一起学编程

开始