weeknum函数计算日期在当年周次,需指定返回类型;默认以周日为起点、1月1日所在周为第1周;iso 8601标准用返回类型21,以周一为起点且第1周含首个周四;自定义起始日需结合weekday等函数偏移日期;跨年周次需额外校验年份。

WEEKNUM函数用于计算指定日期在当年所属的周次,其结果取决于所选的返回类型和一周的起始日。以下是实现周次统计的具体方法:
一、使用WEEKNUM函数基础语法
WEEKNUM函数根据给定日期和参数决定该日期属于当年第几周。默认情况下,它将1月1日所在周视为第1周,且以周日为每周起点。若需调整起始日或周定义方式,必须通过第二个参数指定返回类型。
1、在目标单元格中输入公式:=WEEKNUM(日期, 返回类型)。
2、日期可为单元格引用(如A2)或DATE函数生成的日期值(如DATE(2024,3,15))。
3、返回类型填入数字1至21之间的整数,例如填1表示周日为每周第一天、第1周包含1月1日;填21表示ISO 8601标准(周一为每周第一天,第1周包含当年第一个周四)。
二、按ISO 8601标准计算周次
ISO 8601标准规定:每周从周一算起,第1周是包含当年第一个周四的那周。此标准下,12月29日至1月4日之间的日期可能归属不同年份的第1周或第52/53周,WEEKNUM函数可通过设置返回类型21实现该逻辑。
1、在单元格中输入:=WEEKNUM(A2,21),其中A2为含日期的单元格。
2、确认该日期是否落在12月29日至1月3日之间,若结果为1但年份与原日期年份不同,则说明该周实际属于下一年的第1周。
3、如需同时返回对应年份,可配合YEARFRAC或自定义公式判断,但WEEKNUM本身不输出年份信息。
三、自定义每周起始日(非周日/周一)
当业务要求以其他星期几(如周六)作为每周起点时,WEEKNUM不直接支持任意起始日,需结合其他函数构造等效逻辑。常用替代方式是先将日期偏移,再调用WEEKNUM计算。
1、假设以周六为每周第一天,先将原始日期减去相应天数使其对齐到周六:例如,用=WEEKNUM(A2-CHOOSE(WEEKDAY(A2,2),5,4,3,2,1,0,6),1)。
2、其中WEEKDAY(A2,2)返回1(周一)至7(周日),CHOOSE根据其值决定向前偏移天数,使结果日期落在前一个周六。
3、偏移后使用WEEKNUM以周日为起点计算,即可等效获得以周六开头的周序号。
四、处理跨年周次的校验方法
某些日期(如1月1日前后)可能被WEEKNUM归入上一年或下一年的周次,但函数本身仅返回数字,不体现年份变化。需额外逻辑识别真实归属年份。
1、判断日期所在周是否包含当年1月1日至1月3日之间的周四:可用=IF(WEEKDAY(DATE(YEAR(A2),1,4),2)=4,YEAR(A2),IF(WEEKDAY(DATE(YEAR(A2),1,4),2)辅助估算。
2、更可靠的方式是使用ISOWEEKNUM函数(Excel 2013及以上版本),它专为ISO标准设计,自动处理跨年逻辑,公式简化为:=ISOWEEKNUM(A2)。
3、若必须用WEEKNUM且需跨年标识,可构建复合公式,例如结合YEAR与WEEKNUM结果对比判断是否应归属前一年。










