für ein bestimmtes Jahr, können Sie es wie folgt tun:
DateAdd("ww", WeekNumber - 1, DateSerial(2017, 1, 5))
Und um es zu testen:
Debug.Print Format(DateAdd("ww", WeekNumber - 1, DateSerial(YearNumber, 1, 5)), "ddd d MMM yy")
Wenn andere suchen in diesem und don‘ t wollen einen Donnerstag oder nicht an 2017 arbeiten:
Ändern Sie die 5 nach Ihren Bedürfnissen!
Oder nutzen Sie die unten Funktion GetDayFromWeekNumber
-Code testen:
Sub test()
Debug.Print Format(GetDayFromWeekNumber(2017, 1, 4), "ddd d MMM yyyy")
End Sub
Und die generische Funktion GetDayFromWeekNumber
:
Public Function GetDayFromWeekNumber(InYear As Integer, _
WeekNumber As Integer, _
Optional DayInWeek1Monday7Sunday As Integer = 1) As Date
Dim i As Integer: i = 1
If DayInWeek1Monday7Sunday < 1 Or DayInWeek1Monday7Sunday > 7 Then
MsgBox "Please input between 1 and 7 for the argument :" & vbCrLf & _
"DayInWeek1Monday7Sunday!", vbOKOnly + vbCritical
'Function will return 30/12/1899 if you don't use a good DayInWeek1Monday7Sunday
Exit Function
Else
End If
Do While Weekday(DateSerial(InYear, 1, i), vbMonday) <> DayInWeek1Monday7Sunday
i = i + 1
Loop
GetDayFromWeekNumber = DateAdd("ww", WeekNumber - 1, DateSerial(InYear, 1, i))
End Function
Wenn 'C13 = 1 'und' C14 = 2017', (erste Woche 2017), Ihre Formel gibt '29. Dezember 2016'. Ist es das was du willst? –
Da dies in Bezug auf das Jahr, in dem Sie es verwenden, nicht stabil war, habe ich es mit einer richtig funktionierenden Funktion ergänzt! ;) – R3uK