从Excel中的年份和星期数中计算月份

在Excel 2007中,我有一个年份号码和星期号码,我想要计算出月份号码。

问题在于,在我的情况下,每周的开始是星期一,所以几个星期将会重叠。

例子:

Year: 2012 Week 1 started: Monday 2nd January Sunday 1st January was in week 52 of 2011 

所以给出如下:

 Year: 2011 Week: 10 

我怎样才能在3月7日开始的第10周,因此第10周是第3月。

感谢您的任何帮助。

我build议采取以下方法

  • 确定1月1日的(ISO)周(见本页 )[单元格C4 ]

    =INT((B4-DATE(YEAR(B4-WEEKDAY(B4-1)+4),1,3)+WEEKDAY(DATE(YEAR(B4-WEEKDAY(B4-1)+4),1,3))+5)/7) (假设B4 =DATE([Year],1,1)

  • 计算第1周开始的date[单元格D4中 ]

    =IF(C4=1,B4-WEEKDAY(B4,3),B4+7-WEEKDAY(B4,3))

  • 确定有问题的星期一和相应的月​​份

    =MONTH(D4+7*([Week]-1))

你其实可以做得更简单一点。 如果年份在A2 ,例如2012年,而周数在B2 ,则可以使用此公式得到该周的开始date

=DATE(A2,1,-2)-WEEKDAY(DATE(A2,1,3))+B2*7

格式为date

……显然你可以在MONTH函数中包装这个月份,即

=MONTH(DATE(A2,1,-2)-WEEKDAY(DATE(A2,1,3))+B2*7)

格式结果单元格一般

说明

上面find上一个星期的最后一个星期的date,然后加上星期数* 7给出相关星期的开始date。

ISO周年的第一天始终是12月29日至1月4日唯一的一个星期一,所以为了find这个date,我们可以在1月5日之前find星期一。

要在任何date之前find星期一,可以使用这个通用公式

=date-WEEKDAY(date-2)

所以如果date是A2中显示的那一年的5月1日,那就是

=DATE(A2,1,5)-WEEKDAY(DATE(A2,1,3))

…..但这给了今年的第一个星期一,所以如果我想要去年的最后一个星期一我可以减去7 – 一种方法是从5减去7得到-2因此:

=DATE(A2,1,-2)-WEEKDAY(DATE(A2,1,3))

ISO周总是包含1月4日,所以让我们从周一开始的周日(显然“年份”是年份的单元格):

 WEEKDAY(DATE(year;1;4)) 

这是我们需要从这个日子去find一个星期一(加一)的天数,

 DATE(year;1;4)-WEEKDAY(DATE(year;1;4))+1 

所以现在我们只需要依靠…

 DATE(year;1;4)-WEEKDAY(DATE(year;1;4))+1+weeknumber*7