VBA将日期转换为周数

USE*_*423 6 excel vba date excel-vba

在VBA中,我想将日期03/11/2017(DD/MM/YYYY)转换为该日期的周数.

到目前为止,我有以下代码:

   'geting the date out of the string
    HeadlineTemp = Mid(VRHeadline, InStr(VRHeadline, "[") + 1, 10)
   'switch "." to "/"
    HeadlineTemp = Replace(HeadlineTemp, ".", "/")
   'convert to a date
    FristVRFirstKW = CDate(HeadlineTemp)
Run Code Online (Sandbox Code Playgroud)

现在,我需要一个函数将该日期转换为年份的周数.第一周是星期一.

Vit*_*ata 13

要将周数作为第一天的星期一,请使用以下内容:

WorksheetFunction.WeekNum(now, vbMonday)
Run Code Online (Sandbox Code Playgroud)


Ron*_*eld 6

使用VBA可以将日期转换为isoWeeknumber,您只需要以下DatePart函数(其中DT是感兴趣的日期):

isoWeekNumber = DatePart("ww", DT, vbMonday, vbFirstFourDays)
Run Code Online (Sandbox Code Playgroud)

如果你想使用其他的定义比ISO 8601规定,调查一些其他选项FirstDayOfWeekFirstWeekOfYear


Fun*_*mas 5

当涉及到周数时要小心,因为周围有不同的定义。Excel 定义与 ISO 定义不同。要获取 ISO 周数,请使用(从http://www.rondebruin.nl/win/s8/win001.htm复制)

Public Function IsoWeekNumber(d As Date) As Integer
    Dim d2 As Long
    d2 = DateSerial(Year(d - Weekday(d - 1) + 4), 1, 3)
    IsoWeekNumber = Int((d - d2 + Weekday(d2) + 5) / 7)
End Function
Run Code Online (Sandbox Code Playgroud)