VBA知識--日期


日常工作中,我們時常需要對數據按周或月或年來分類,從而生成相關圖表。所以在VBA編程中,日期函數是一個非常重要的知識點,VBA里面的日期函數和excel函數的用法並不完全一樣。本章節將就日期函數的運用做一個歸納總結。

  •  當月或上個月的第一天和最后一天

這里主要用到DateSerial 函數:DateSerial(yearmonthday)。每個月的最后一天實際上就是下個月的day為0(注意:不是當月的day為31,因為有的月份是30天)。

firstday_PastM = DateSerial(Year(Date), Month(Date) - 1, 1) '上個月第一天,Date函數返回當前的系統日期
lastday_PastM = DateSerial(Year(Date), Month(Date), 0) '上個月最后一天
firstday_CurrentM = DateSerial(Year(Date), Month(Date), 1) '當月第一天
lastday_CurrentM = DateSerial(Year(Date), Month(Date)+1, 0) '當月最后一天
  •   當天周數或周幾

當天周數要用到DatePart函數:DatePart (interval, date, [ firstdayofweek, [ firstweekofyear ]])。DatePart 函數是一個非常強大的函數,通過它我們可以得到所在天所屬周數、月數、季度等等,其語法包介紹如下:

Part 說明
interval 必需。 表示您要返回的時間間隔的字符串表達式
date 必需。 要計算的 Variant (Date) 值。
firstdayofweek 可選。 一個指定一周的第一天的常量。 如果未指定,則會假定為星期日。
firstweekofyear 可選。 一個指定一年的第一周的常量。 如果未指定,則會假定 1 月 1 日出現的那一周為第一周。

interval 參數具有以下設置:

Setting 說明
yyyy
q 季度
m
y 每年的某一日
d
w 工作日
ww
h 小時
n 分鍾
s

 

firstdayofweek 參數具有以下設置:

常量 說明
vbUseSystem 0 使用 NLS API 設置。
vbSunday 1 周日(默認)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

 

firstweekofyear 參數包含以下設置:

表 4
常量 說明
vbUseSystem 0 使用 NLS API 設置。
vbFirstJan1 1 從 1 月 1 日所在的周開始(默認)。
vbFirstFourDays 2 從至少包含新的一年中的四天的那一周開始。
vbFirstFullWeek 3 從每年的第一個完整的星期開始。

這個時候interval選用ww,DatePart就要表示第幾周, WeekNum = VBA.DatePart("ww", Date, vbMonday, vbFirstFourDays) 這就表示把星期一當作每周的第一天。

 

另外,我們可以用weekday函數來精確找到上一周的第一天和第二天。

firstdayW = Date - Weekday(Date) - 6 。'Weekday(date[,firstdayofweek]), 可選參數默認周日為第一天

lastdayW = Date - Weekday(Date)

  •  日期格式轉換

日期格式:cdate函數將有效的日期和時間表達式轉換為類型日期,一般用format(cdate(dt),”yyyy-mm-dd hh:mm:ss”)

Range(Cells(2, "o"), Cells(RowLast, "S")).NumberFormat = "@" '將格式設為文本格式,以便數據格式符合SPC要求
Cells(i, "n") = CDate(Right(Cells(i, "n"), 4) & "/" & Mid(Cells(i, "n"), 4, 2) & "/" & Left(Cells(i, "n"), 2)) '將日期文本格式轉換為標准的日期格式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM