VBA中日期和时间相关的计算

作者:iamlaosong

1、日期转换

很简单,直接用转换函数就可以了,例如:CDate("2012-12-31")

2、日期之间的天数

用datediff函数,注意,工作表单元格中用的函数名称是datedif,少了一个f,而且参数顺序也不一样。例如:

dt = Cells(2, 1)     ‘ 单元格内容:2013-1-1 09:35:08

dd = DateDiff("D", CDate("2012-12-31"), dt)

其中的“D”也可以换成其他字母,比如“W”表示计算两个日期之间周数。

日期之间的天数最简单的就是直接相减,如果日期中包含时间,则需要用datevalue转换后才能计算,例如:

dt = Cells(2, 1)     ‘ 单元格内容:2013-1-1 09:35:08

dd = DateValue(dt) - CDate("2012-12-31")

3、时间差计算

时间差计算一般用TimeValue()函数将时间转换成时间值,然后计算。例如:

dt2 = Cells(2, 1)     ‘ 单元格内容:2013-1-1 09:35:08

dt3 = Cells(3, 1)     ‘ 单元格内容:2013-1-1 11:55:18

interval=TimeValue(dt3)-TimeValue(dt2)

这个值在0-1之间,利用这个值可以干很多事,例如,用时间值乘以24再取整就是时间从0点开始的小时值,乘以24*60再取整就是时间从0点开始的分钟值,乘以24*60*60就是时间从0点开始的秒值。再比如,以10分钟作为间隔,一天的间隔数就是144,那么任意一个时间值乘以24*6再取整就得到从0点开始这个间隔的数量。

4、关于取整

INT(12.56)=12:直接取整数部分,CInt(12.56)=13:小数部分四舍五入;

Ceiling(12.56,1)=13:向上进,只要有小数,整数部分都加1,Ceiling(12.05,1)=13,当然,这个函数功能比较强大,取整只是一个应用;

round(12.56,0)=13:小数部分四舍五入,同样,该函数有两个参数,取整只是一个应用。

5、关于Round函数进行四舍五入

Round函数进行四舍五入并不是逢5就入,例如:round(0.5)=0、 round(1.5)=2 、 round(2.5)=2 、round(3.5)= 4 、round(4.5)=4 ,难到还分奇偶?答案是确实分奇偶,在VBA中Round函数是采用“银行家舍入”,建议大家在VBA中慎重使用Round函数来四舍五入。什么是“银行家舍入”呢,定义如下:

四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一”。这个四舍五入法是一个国际标准,大部分的编程软件都使用的是这种方法,据说国际上一般都是用这种方法的。

如果在Excel VBA中进行四舍五入处理,也可以直接调用Excel工作表函数,达到直接四舍五入的目的Application.Round(A,B)


 

VBA中日期和时间相关的计算

上一篇:03.处理dwg文件并最终形成shp文件


下一篇:高等数学公式