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)
使用VBA可以将日期转换为isoWeeknumber,您只需要以下DatePart函数(其中DT是感兴趣的日期):
isoWeekNumber = DatePart("ww", DT, vbMonday, vbFirstFourDays)
Run Code Online (Sandbox Code Playgroud)
如果你想使用其他的定义比ISO 8601规定,调查一些其他选项FirstDayOfWeek和FirstWeekOfYear
当涉及到周数时要小心,因为周围有不同的定义。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)