优秀的编程知识分享平台

网站首页 > 技术文章 正文

「Excel-VBA」功能模块-时间与日期-02-获取周次

nanyue 2024-08-06 18:12:44 技术文章 6 ℃
  • 系统环境: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日的为第1周
  2. 第一个一周中有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。排版和细节略作修改,发于头条

最近发表
标签列表