作者:iamlaosong VBA中取當前日期的函數(shù)是Date,當前時間的函數(shù)是Time,當前日期和時間一起取是Now。日期轉(zhuǎn)換成年月日的函數(shù)分別是:Year、Month、Day,參數(shù)可以用Date或Now取出的值。時間轉(zhuǎn)換成時分秒的函數(shù)分別是:Hour、Minute、Second,參數(shù)可以用Time或Now取出的值。 例如: MsgBox '當前時間:' & Now & Chr(10) & _
1、日期轉(zhuǎn)換 很簡單,直接用轉(zhuǎn)換函數(shù)就可以了,例如:CDate('2012-12-31') 2、日期之間的天數(shù) 用datediff函數(shù),注意,工作表單元格中用的函數(shù)名稱是datedif,少了一個f,而且參數(shù)順序也不一樣。例如: dt = Cells(2, 1) ' 單元格內(nèi)容:2013-1-1 09:35:08 dd = DateDiff('D', CDate('2012-12-31'), dt) 其中的“D”也可以換成其他字母,比如“W”表示計算兩個日期之間周數(shù)。 日期之間的天數(shù)最簡單的就是直接相減,如果日期中包含時間,則需要用datevalue轉(zhuǎn)換后才能計算,例如: dt = Cells(2, 1) ' 單元格內(nèi)容:2013-1-1 09:35:08 dd = DateValue(dt) - CDate('2012-12-31') 實際上,DateValue函數(shù)的值就是被轉(zhuǎn)換日期距1900-1-1的天數(shù)加1,也就是說日期1900-1-1的DateValue函數(shù)值就是1,在此日期之前的日期Excel是不認的。 3、時間差計算 時間差計算一般用TimeValue()函數(shù)將時間轉(zhuǎn)換成時間值,然后計算。例如: dt2 = Cells(2, 1) ' 單元格內(nèi)容:2013-1-1 09:35:08 dt3 = Cells(3, 1) ' 單元格內(nèi)容:2013-1-1 11:55:18 interval=TimeValue(dt3)-TimeValue(dt2) TimeValue的值在0-1之間,表示0-24小時,實際上就是當前時間占24小時的比例。利用這個值可以干很多事,例如,用時間值乘以24再取整就是時間從0點開始的小時值,乘以24*60再取整就是時間從0點開始的分鐘值,乘以24*60*60就是時間從0點開始的秒值。再比如,以10分鐘作為間隔,一天的間隔數(shù)就是144,那么任意一個時間值乘以24*6再取整就得到從0點開始這個間隔的數(shù)量。 注意:TimeValue的數(shù)據(jù)類型是Single,如果單元格中只輸入時間,也是給Single類型變量賦值。例如: tt = Cells(2, 1) ' 單元格內(nèi)容:12:00:00,賦值后tt的值是0.5 我們計算兩個時間差,也就是計算兩個浮點數(shù)之差,比如程序的運行時間,將這個差值乘以24就是時間差以小時為單位,乘以24*60就是以分為單位,乘以24*60*60就是以秒為單位。 時間之間的也可以直接相減,但數(shù)據(jù)類型必須正確,效果和使用TimeValue函數(shù)一樣。 4、關于取整 INT(12.56)=12:直接取整數(shù)部分,CInt(12.56)=13:小數(shù)部分四舍五入; Ceiling(12.56,1)=13:向上進,只要有小數(shù),整數(shù)部分都加1,Ceiling(12.05,1)=13,當然,這個函數(shù)功能比較強大,取整只是一個應用; round(12.56,0)=13:小數(shù)部分四舍五入,同樣,該函數(shù)有兩個參數(shù),取整只是一個應用。 5、關于Round函數(shù)進行四舍五入 Round函數(shù)進行四舍五入并不是逢5就入,例如:round(0.5)=0、 round(1.5)=2 、 round(2.5)=2 、round(3.5)= 4 、round(4.5)=4 ,難到還分奇偶?答案是確實分奇偶,在VBA中Round函數(shù)是采用“銀行家舍入”,建議大家在VBA中慎重使用Round函數(shù)來四舍五入。什么是“銀行家舍入”呢,定義如下: “四舍六入五考慮,五后非零就進一,五后為零看奇偶,五前為偶應舍去,五前為奇要進一”。這個四舍五入法是一個國際標準,大部分的編程軟件都使用的是這種方法,據(jù)說國際上一般都是用這種方法的。 如果在Excel VBA中進行四舍五入處理,也可以直接調(diào)用Excel工作表函數(shù),達到直接四舍五入的目的Application.Round(A,B)
|
|
來自: L羅樂 > 《生日提醒和合同到期提醒》