- 系统环境:Windows 10
- Excel:2016版本
这个系列集锦一些常用的功能模块,在一些项目中会穿插应用
功能模块中又包括很多子模块,本文涉及的是:时间与日期
今天讲讲获取时间对应的周次,介绍几个函数实现该功能:DatePart,Format,WeekNum
Part 1:方法一
- 设置几个时间值,设置不同参数,通过DatePart返回对应的周次
Sub test_code()
date_time = #1/2/2017#
zhouci_1 = DatePart("ww", date_time, vbMonday, vbFirstJan1)
zhouci_2 = DatePart("ww", date_time, vbMonday, vbFirstFourDays)
Debug.Print ("zhouci_1=" & zhouci_1)
Debug.Print ("zhouci_2=" & zhouci_2)
End Sub
说明
- DatePart(返回数据指定, 拟解读时间, 每周开始的第一天, 判别每年第一周方法)
- 常见每年第一周指定方法:
- 包含1月1日的为第1周
- 第一个一周中有4天在新的一年中的那一周为第一周
Part 2:方法二
Sub test_code2()
Dim date_i As Date
Set sht = ThisWorkbook.Worksheets("示例")
For i = 3 To 8 Step 1
date_i = sht.Cells(i, "A")
'DatePart
zhouci = DatePart("ww", date_i, vbMonday, vbFirstFourDays)
sht.Cells(i, "B") = zhouci
'Format
zhouci = Format(date_i, "ww", vbMonday, vbFirstFourDays)
sht.Cells(i, "C") = zhouci
'WeekNum
zhouci = Application.WeekNum(date_i, 2)
sht.Cells(i, "D") = zhouci
Next i
End Sub
从结果上看,Application.WeekNum(date_i, 2),还是以1月1号所在周次为第1周;不是以周日为每周的开始,这里也有一个参数2,那是不是也可以实现DatePart的效果呢?
Format可以实现DatePart的效果
以上,为本次的介绍内容,下回见。
本文首发于微信公众号:Excel高效办公之VBA。排版和细节略作修改,发于头条