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

我有一个星期的数字和一个年份,并希望计算在Microsoft Excel的特定周的星期一的date。

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

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

对于ISO周数,你可以使用这个公式来得到星期一

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

假设A2为一年,B2为一周

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

如果你正在寻找相反的date从一个weeknumber我find了一个解决scheme在线,并稍加改变:

 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 

我从asap-utilities.com/拿到了这个公式,然后改了

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

 DateSerial(iYear, 1, (iWeek * 7) 

更新

看来,至less在德国,公式的工作不像预期的闰年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 

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

 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 

如果星期数是A1A2是一年,你可以尝试:

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

一个简单的解决办法是做这个公式:

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

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

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

这只适用于一个日历年内的date。

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

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

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

 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) 

如果你的周数是A1,而这个年份是A2,下面的代码可以给你整整一周的date

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

当然,完成从-4到2的系列,你将有周日到周六的date。

希望这可以帮助。

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

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

星期一的减法可以确保您返回一周的一致开始date。 使用最后的减法来调整开始date。