2012-06-01 1374 views
8

在Excel 2007中,我有一个年份和周数,并且想要计算月份数。计算excel中年份和周数的月份

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

例子:

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

因此,考虑以下:

Year: 2011 
Week: 10 

我怎样才能制定出每周10开始在3月7日,因此10周在本月3号。

感谢您的帮助。

回答

4

我建议以下办法

  • 确定1月1日的(ISO)本周(见this page)在细胞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周开始的日期[单元格D4]

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

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

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

+0

伟大的答案谢谢,花了一点工作,D4是一年的第1周时,计算月计算。对于我来说这个工作,我注意到它有像2012年那样的闰年问题,第18周从4月30日开始,但上述公式在第4周时应该是第4周。幸运的是,我不必太精确与此,再次感谢。 – Pricey

+0

有趣的是,它似乎为我工作。 2012年,第18周的C4评估为52(1月1日是2011年第52周)。 D4为2012年1月2日星期一,(D4 + 7 *(18-1))为4月30日。也许我必须翻译公式才会犯错误。如果你让我知道错误在哪里,我会更新这篇文章。 –

+0

啊我知道我的问题是什么。公式中的单元格B1提到了第1周的内容。对于该特定单元格,我没有任何价值,我假设它是B4,因此我调整了它,现在它可以工作。 – Pricey

24

实际上,你可以做到这一点多一点简单的星期一。如果Year在A2,例如2012年,和周数为B2你可以得到一周的开始日期与此公式

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

格式日期

......显然你可以用这一个月函数获得一个月,即

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

格式结果细胞一般

说明

上述发现最后周一前一年的日期,然后添加周数* 7将有关星期的开始日期。

第一个 ISO周的一年中的每一天始终是12月29日至1月4日的唯一一个星期一,因此要找到该日期我们可以在1月5日之前找到星期一。

要找到周一立即任何日期之前,你可以使用这个通用公式

=date-WEEKDAY(date-2)

因此,如果日期是在A2显示今年1月5日这是一样

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

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

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

+0

谢谢,这些东西让我误解了实际发生的事情,从一年的第一个月开始减去-2,然后减去当年一月第三天的星期几......然后在一周内加上星期*天。你的答案看起来不错,更清洁+1。谢谢 – Pricey

+3

谢谢 - 我添加了一个解释...... –

+1

采取一些让你的头绕着逻辑,但干净和简单的公式很好的答案 – MikeT

0

ISO星期总是包含1月4日,让我们得到它的工作日开始,周一(显然是“年”是与去年的细胞):

WEEKDAY(DATE(year;1;4)) 

这是多少天,我们需要从该日起回去找一个星期一(加一)

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

所以,现在我们只需要依靠...

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