从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