如何将日历周转换为Excel中的日期?

时间:2012-06-12 11:41:56

标签: excel date excel-formula

我有一周的编号和一年,并希望在Microsoft Excel中计算该特定周的星期一日期。

Year   Week   Date (Monday)
2012   1      January 2, 2012
2013   16     April 15, 2013
2014   42     October 13, 2014

我可以使用什么公式将日历周转换为特定日期?

8 个答案:

答案 0 :(得分:49)

对于ISO周数,您可以使用此公式获取星期一

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

假设A2中的年份和B2中的周数

这与我在这里的答案相同https://stackoverflow.com/a/10855872/1124287

答案 1 :(得分:1)

以下公式适用于每年。你不需要再调整它了。 前提条件是星期一是你一周的第一天。

If A2 = Year and Week = B2
=IF(ISOWEEKNUM(DATE($A$2;1;1)-WEEKDAY(DATE($A$2;1;1);2)+1)>1;DATE($A$2;1;1)-WEEKDAY(DATE($A$2;1;1);2)+1+B2*7;DATE($A$2;1;1)-WEEKDAY(DATE($A$2;1;1);2)-6+B2*7)

答案 2 :(得分:1)

如果您正在寻找相反的方法来获取周数的日期,我在网上找到了一个解决方案,并略有改动:

Function fnDateFromWeek(iYear As Integer, iWeek As Integer, iWeekDday As Integer)
  ' get the date from a certain day in a certain week in a certain year
  fnDateFromWeek = DateSerial(iYear, 1, (iWeek * 7) _
          + iWeekDday - Weekday(DateSerial(iYear, 1, 1)) + 1)
End Function

我拿了formular from asap-utilities.com/并更改了

DateSerial(iYear, 1, ((iWeek - 1) * 7) 

DateSerial(iYear, 1, (iWeek * 7)

更新

至少对于德国来说,这个公式并不像2016年闰年那样预期所以我把它改成了这个

Function fnDateFromWeek(iYear As Integer, iWeek As Integer, iWeekDday As Integer)
' get the date from a certain day in a certain week in a certain year

    If iYear = 2016 Then
        curDate = DateSerial(iYear, 1, ((iWeek) * 7) _
          + iWeekDday - Weekday(DateSerial(iYear, 1, 1)) + 1)
    Else
        curDate = DateSerial(iYear, 1, ((iWeek - 1) * 7) _
          + iWeekDday - Weekday(DateSerial(iYear, 1, 1)) + 1)
    End If
    fnDateFromWeek = curDate
End Function

这可能仍然是错误的,但我的有限测试给出了预期的结果:

Sub TestExample()
      Debug.Print Format(fnDateFromWeek(2014, 48, 2), "ddd dd mmm yyyy") ' mo 24 Nov 2014
      Debug.Print Format(fnDateFromWeek(2015, 11, 6), "ddd dd-mmm-yyyy") ' fr 13 Mar 2015
      Debug.Print Format(fnDateFromWeek(2016, 36, 2), "ddd dd-mmm-yyyy") ' Mo 05 Sep 2015
End Sub

答案 3 :(得分:1)

如果您的周数在A1中且年份在A2中,则以下代码段可以为您提供整周的日期

=$A$1*7+DATE($B$1,1,-4) through =$A$1*7+DATE($B$1,1,2)

当然完成从-4到2的系列,你将从星期日到星期六开始约会。

希望这有帮助。

答案 4 :(得分:0)

如果周数在A1而年份在A2,您可以尝试:

A1*7+DATE(A2,1,1)

答案 5 :(得分:0)

一个简单的解决方案就是做这个公式:

A1*7+DATE(A2,1,1)

如果它返回星期三,只需将公式更改为:

(A1*7+DATE(A2,1,1))-2

这仅适用于一个日历年内的日期。

答案 6 :(得分:0)

如果A1的周数和年份为wwYY格式的3或4位整数,则公式为:

=INT(A1/100)*7+DATE(MOD([A1,100),1,1)-WEEKDAY(DATE(MOD(A1,100),1,1))-5

工作日的减法可确保您返回一周的一致开始日期。使用最后的减法来调整开始日期。

答案 7 :(得分:0)

=(MOD(R [-1] C-1100)* 7 + DATE(INT(R [-1] C / 100 + 2000),1,1)-2)

yyww作为给定周数:2014年第51周将是1451