如果引用带有日期的单元格,我将使用以下公式来计算日历周:
=INT((A1-DATE(YEAR(A1);1;1)-WEEKDAY(A1))/7)+2
但它不能正常工作。如果我输入,24.08.2012
我会得到日历第 35 周,但实际上是第 34 周。
有人知道发生了什么问题吗?
答案1
此公式将为您提供 ISO 周数 [每年的第 1 周从 12 月 29 日或之后的第一个星期一开始,每周有 7 天]
=INT((A1-WEEKDAY(A1;2)-DATE(YEAR(A1+4-WEEKDAY(A1;2));1;4))/7)+2
正如 Andreas 所说,在 Excel 2010 中,您可以使用 WEEKNUM 函数获得相同的结果
=WEEKNUM(A1;21)
答案2
我假设上述公式仅适用于美国日期,因为第一个日历周总是从 1 月 1 日开始。在欧洲则有所不同(用 VB 术语来说:前四天)。
在 VBA 中可以这样做:
Format(datefield, "ww", vbMonday, vbFirstFourDays)
Excel 2010 带有用于日历周的内置函数。
答案3
对于 Excel 2007=WEEKNUM(A1,1)
和 =WEEKNUM(A1)
回报34
,而=WEEKNUM(A1,2)
回报35
,当A1
是 24.08.12(见隆·德·布鲁因)。
答案4
在选择日期和年份时,您的公式给我带来了分号错误。而必须使用逗号。另外,我不知道您是否对 A1 进行了特定的格式设置,但 2012 年 8 月 24 日在 Excel 2013 中默认不是有效日期。但是,在更改日期格式和逗号后,您的公式可以在新的 Excel 工作簿中使用。
=INT((A1-DATE(YEAR(A1),1,1)-WEEKDAY(A1))/7)+2