本技巧的目的:掌握日期、时间的如何从文本转换到日期、时间的方式,计算各种与日期、时间相关值。
使用代码助手,可以让代码的输入方便快捷,不用记很多英语就能够完成代码,绝对是新手的福利。
日期、时间转换
首先来看下,为什么要转换? 原来的日期数据是这样的:

执行排序代码后的结果:
n = sht.Range("a" & Rows.Count).End(xlUp).Row 'A列最大行 sht.Range("a1").Resize(n).Sort Header:=xlYes, key1:=sht.Range("a1"), order1:=xlAscending '排序
1. 如果是在excel中,可以这样排序: 

2. 使用代码排序,需要先进行转换:
转换代码: 
转换后不设置格式是这样的结果: 
设置成日期格式后就是需要的结果: 
这时再执行排序代码后: 
日期、月份、季度、年份的计算

Excel 函数:

使用2个函数:
DatePart: 返回一个包含已知日期的指定时间部分的值 DatePart(interval,date[,firstdayofweek[,firstweekofyear]])
datePart("q","2020-9-5") 返回季度:3 datepart("m","2020-1-20") 返回月份: 1
datepart("y","2020-3-6") 返回按年计算第几天:66 datePart("d","2020-9-25") 返回天数:25
datepart("w","2020-5-28",vbmonday) 返回星期几: 4 datepart("ww","2020-5-2") 返回第几周: 18

注释:
本例设置了单元格格式,中文星期,所以 Weekday 要设置为 vbSunday, 中文显示 星期一,数值是 2 datepart ,输出星期时参数也同上, 根据需要是显示数字, 还是中文, 来选择参数
计算指定日期的月末、月初

Excel 函数:
本月初:=EOMONTH(A2,-1)+1 本月末:=EOMONTH(A2,0)
下月初:=EOMONTH(A2,0)+1 下月末:=EOMONTH(A2,1)
代码: 
DateSerial 函数:返回包含指定的年、月、日的日期 DateSerial(year, month, day)
两个日期间的间隔的计算

Excel 函数:
间隔天数:=DATEDIF(A2,B2,"d") 代码:
语法:参数同 DatePart 函数 DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
增加间隔日期的计算

Excel 函数:
增加1个月:=EDATE(A2,1) 20个工作日后:=WORKDAY(A2,20)
代码: 
DateAdd 函数:返回加上一段时间间隔的日期。 语法:DateAdd(interval, number, date)
|