小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【VBA研究】VBA中日期和時間相關的計算

 L羅樂 2016-05-15

作者: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) & _
           '時:' & Hour(Now) & Chr(10) & _
           '分:' & Minute(Now) & Chr(10) & _
           '秒:' & Second(Now)
  MsgBox '當前日期:' & Now & Chr(10) & _
           '年:' & Year(Now) & Chr(10) & _
           '月:' & Month(Now) & Chr(10) & _
           '日:' & Day(Now)

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)


 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多