Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从excel中的年和周数计算月份_Excel_Date_Week Number - Fatal编程技术网

从excel中的年和周数计算月份

从excel中的年和周数计算月份,excel,date,week-number,Excel,Date,Week Number,在Excel2007中,我有一个年数和周数,我想算出月数 我的问题是,在我的例子中,每周的开始是星期一,因此一些星期会在几年中重叠 示例: 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个月 感谢您在这方面的帮助。我建议采用以下方法 确定1月1日的(IS

在Excel2007中,我有一个年数和周数,我想算出月数

我的问题是,在我的例子中,每周的开始是星期一,因此一些星期会在几年中重叠

示例:

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个月


感谢您在这方面的帮助。

我建议采用以下方法

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

    =INT((B4-日期(年)(B4-工作日(B4-1)+4),1,3)+工作日(日期(年)(B4-工作日(B4-1)+4,1,3))+5)/7)
    (假设B4
    =日期([年],1,1)

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

    =IF(C4=1,B4-工作日(B4,3),B4+7-工作日(B4,3))

  • 确定相关周的星期一和相应月份

    =月份(D4+7*([周]-1))


    • 实际上,您可以更简单地执行此操作。如果年份在
      A2
      ,例如2012年,周数在
      B2
      中,则可以使用此公式获得该周的开始日期

      =日期(A2,1,-2)-工作日(日期(A2,1,3))+B2*7

      格式为日期

      ……显然,您可以将其包装在一个月函数中以获取月份,即

      =月份(日期(A2,1,-2)-工作日(日期(A2,1,3))+B2*7)

      将结果单元格格式化为常规格式

      解释

      上面找到上一年最后一个星期一的日期,然后加上周数*7,给出相关周的开始日期

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

      要查找任何日期前的星期一,可以使用此通用公式

      =日期工作日(日期-2)

      所以如果日期是A2中显示的一年中的1月5日,则与

      =日期(A2,1,5)-工作日(日期(A2,1,3))

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


      =日期(A2,1,-2)-工作日(日期(A2,1,3))

      ISO周始终包含1月4日,因此让我们从周一开始计算工作日(显然“年”是带年份的单元格):

      这是我们需要从该日期返回以查找星期一(加一)的天数

      所以现在我们只需要依靠

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

      回答得很好,谢谢。在计算月份时,我们花了点时间计算出D4是一年中的第一周。为我做这项工作,我确实注意到它在闰年(如2012年)中存在问题,第18周从4月30日开始,但上面的公式返回第5周,而第5周应该是第4周。幸运的是,我不需要太准确地描述这一点,所以再次感谢。有趣的是,这似乎对我有用。2012年,第18周C4评估为52周(2011年1月1日为第52周)。D4为2012年1月2日星期一,(D4+7*(18-1))应为4月30日。也许我犯了一个错误,因为a必须翻译公式。如果你让我知道错误在哪里,我会更新帖子。啊,我知道我的问题是什么。在计算第1周的公式中,有一个对B1单元格的引用。我没有那个特定单元格的任何值,我假设它是B4,所以我调整了它,它现在可以工作了。谢谢,修复了它!原来公式中还有一个错误(+WEEKDAY而不是-WEEKDAY)。谢谢,这东西让我对实际发生的情况感到困惑,-2从一年的第一个月开始,然后减去那一年的1月3日的WEEKDAY num。。。然后将周数*天数相加。你的答案看起来不错,而且更清晰+1。谢谢你能理解其中的逻辑,但是一个干净简单的公式是很好的答案
      DATE(year;1;4)-WEEKDAY(DATE(year;1;4))+1
      
      DATE(year;1;4)-WEEKDAY(DATE(year;1;4))+1+weeknumber*7