Excel [函数-VBA对对碰]datedif与datediff(日期间隔计算)

     前言:excel某些工作表函数功能在VBA同样也可以实现,但具体怎么实现呢?有哪些工作表函数可以在VBA语句中直接使用呢!为了让VBA初学者了解在工作表中实现的功能在VBA中如何实现,兰色特把有相似或相同功能的excel函数和VBA函数或语句进行对比说明,构成了“VBA-Excel函数对对碰系列。希望大家能够喜欢。


      本期对比内容:Datedif Datediff


      实现的功能:计算起始日期的间隔年\\日数


      实例:


               1、计算2007-8-22008-2-1的月份数


                       在工作表中:=DATEDIF("2007-8-2","2008-2-1","m")   结果为5


                       VBA代码中:=DateDiff("m", #8/2/2007#, #2/1/2008#)   结果为6


               2计算2007-8-22008-2-1的天数


                       在工作表中:=DATEDIF("2007-8-2","2008-2-1","D")   结果为183


                       VBA代码中:=DateDiff("D", #8/2/2007#, #2/1/2008#)   结果为183


               3计算2007-8-22008-2-1的年数


                       在工作表中:=DATEDIF("2007-8-2","2008-2-1","Y")   结果为0


                       VBA代码中:=DateDiff("YYYY", #8/2/2007#, #2/1/2008#)   结果为1


      简评: 二者参数相似,但有以下不同:


              1、参数顺序不同


              2、在计算年和月的间隔数且不为整年或整月时,VBA中的datediff计算的结果往往比工作表函数datedif计算出的值大1


              3、年月日代码不尽相同,详参阅帮助文件


              4datediff可以计算两个日期隔多少个星期(周),而datedif不能。



文章來源:http://www.excelpx.com/thread-37205-1-1.html




<h1>两个指定日期间的时间间隔数目的VBA函数:DateDiff</h1>









[日期:2008-01-29] 来源:  作者: [字体: ]


返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。


语法


DateDiff(<i>interval, date1, date2</i>[<i>, firstdayofweek</i>[, <i>firstweekofyear</i>]])


DateDiff 函数语法中有下列命名参数:





部分 描述


















<i>interval</i> 必要。字符串表达式,表示用来计算<i>date1</i><i>date2 </i>的时间差的时间间隔
<i>Date1□date2</i> 必要;Variant (Date)。计算中要用到的两个日期。
<i>Firstdayofweek</i> 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。
<i>firstweekofyear</i> 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。



设置


<i>interval </i>参数的设定值如下:





设置 描述










































yyyy
q
m
y 一年的日数
d
w 一周的日数
ww
h
n 分钟
s



<i>firstdayofweek </i>参数的设定值如下:





常数 值 描述










































vbUseSystem 0 使用 NLS API 设置。
vbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六






常数 值 描述






















vbUseSystem 0 用 NLS API 设置。
vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。
vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。
vbFirstFullWeek 3 从第一个无跨年度的星期开始。



说明


DateDiff 函数可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。


为了计算 <i>date1</i><i>date2 </i>相差的日数,可以使用“一年的日数”(y) 或“日”(d)。当 <i>interval</i> 是“一周的日数”(w) 时,DateDiff 返回两日期间的周数。如果 <i>date1</i> 是星期一,DateDiff 计算到 <i>date2</i> 为止的星期一的个数。这个数包含 <i>date2</i> 但不包含 <i>date1</i>。不过,如果 <i>interval</i> 是“周”(ww),则 DateDiff 函数返回两日期间的“日历周”数。由计算 <i>date1</i><i>date2 </i>之间星期日的个数而得。如果 <i>date2 </i>刚好是星期日,则 <i>date2</i> 也会被加进 DateDiff 的计数结果中;但不论 <i>date1 </i>是否为星期日,都不将它算进去。


如果 <i>date1 </i><i>date2 </i>来得晚,则 DateDiff 函数的返回值为负数。


<i>firstdayofweek</i> 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。


如果 <i>date1 </i>或 <i>date2 </i>是日期文字,则指定的年份成为该日期的固定部分。但是,如果 <i>date1 </i>或 <i>date2 </i>用双引号 (" ") 括起来,且年份略而不提,则在每次计算表达式 <i>date1 </i>或 <i>date2 </i>时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。


在计算 12 月 31 日和来年的 1 月 1 日的年份差时,DateDiff 返回 1 表示相差一个年份,虽然实际上只相差一天而已。


<h2>DateDiff 函数示例</h2>

本示例使用 DateDiff 函数来显示某个日期与今日相差几天。


Dim TheDate As Date    ' 声明变量。 Dim Msg TheDate = InputBox("Enter a date") Msg = "Days from today: " & DateDiff("d", Now, TheDate) MsgBox Msg 

文章來源:http://www.51vba.com/show.aspx?id=510&cid=34

留言

這個網誌中的熱門文章

歐姆龍 HEM-7600T 評價,購買心得分享(打臉文)

超任 三國志3代,登入武將金手指

年青人眼鏡評價(負評),辛酸血淚史分享文