将年和周数转换为日期

时间:2020-04-18 16:29:52

标签: excel vba

我正在使用表单元素创建日期选择器。您可以选择一年,一个月和一天。或者,您可以选择一年零一个星期。我在努力工作。

您选择开始年和开始周,然后选择结束年和结束周。

假设您选择4作为开始周,选择7作为结束周。然后,我希望将第4周的星期一作为开始日期,并把第7周的星期日作为结束日期。

我如何以YYYY-MM-DD格式获取这些日期?不知道从哪里开始!

我现在有四个下拉菜单。开始年,开始周,结束年和结束周。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

有很多很多方法可以解决此问题。我首先问自己:“如何给定日期和月份?如何获取日期?”然后从给定周数的基础上倒退,如何获取日期。答案很简单,涉及一个双For循环和VBA中Application.WorksheetFunction.WeekNum的使用。将一周的开始时间设置为星期一也将返回给定星期的星期一,因此无需为此付出额外的努力。

Sub Convert_Dates()

    'user inputs
    Dim lYear As Long: lYear = 2020
    Dim lWeekNum As Long: lWeekNum = 4


    Dim lMonth As Long, lDay As Long


    For lMonth = 1 To 12
        For lDay = 1 To 31
            If Application.WorksheetFunction.WeekNum(DateSerial(lYear, lMonth, lDay), vbMonday) = lWeekNum Then
                Debug.Print Format(DateSerial(lYear, lMonth, lDay), "YYYY-MM-DD")
                Exit Sub
            End If
        Next lDay
    Next lMonth

End Sub

输出为:

enter image description here

我确定您现在可以对其进行修改以满足您的需求。