VBA从一年中的周数获取开始日期

Tak*_*iii 1 excel vba excel-formula

我想检索一周的第一天的日期(一周从星期一开始)知道年份和周数。(1年52周)

Dim nYear As Integer, _
    nWeek, As Integer
    startDate As Date

    nYear = 2018
    nWeek= 1


'startDate = ?
Run Code Online (Sandbox Code Playgroud)

预期结果 :01/01/2018

有没有一种简单而动态的方法来做到这一点?

谢谢

Mag*_*ron 6

Dim nTrimester As Integer, _
    nYear As Integer, _
    nWeek As Integer, _
    wd As Integer, _
    startDate As Date, _
    inputDate As Date

nYear = 2019
nWeek = 1    

inputDate = DateSerial(nYear, 1, 1)
inputDate = DateAdd("ww", nWeek - 1, inputDate)
wd = Weekday(inputDate, vbMonday)   

startDate = DateAdd("d", 1 - wd, inputDate)
Run Code Online (Sandbox Code Playgroud)

编辑:上面的答案将一年中的第一周视为一年中第一天的那一周。根据 ISO 8601,一年的第一周是一年中的第一个星期四,因此,应该是

Dim nTrimester As Integer, _
    nYear As Integer, _
    nWeek As Integer, _
    wd As Integer, _
    startDate As Date, _
    inputDate As Date

nYear = 2021
nWeek = 1

inputDate = DateSerial(nYear, 1, 1)

If Weekday(inputDate, vbMonday) > 4 Then
    nWeek = nWeek + 1
End If
    
inputDate = DateAdd("ww", nWeek - 1, inputDate)
wd = Weekday(inputDate, vbMonday)

startDate = DateAdd("d", 1 - wd, inputDate)
Run Code Online (Sandbox Code Playgroud)

两种方法的区别在于,第一种方法是2021年第一周的第一天是2020-12-28,第二种方法是2021-01-04