Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 8117|回复: 4

[分享] [原创]在VBA中使用Datedif函数求时间间隔

[复制链接]
发表于 2007-5-21 16:15 | 显示全部楼层 |阅读模式
A1单元格内容为:2005-9-8,B3单元格内容为:2007-4-5,要求出它们间隔的年、月、日,在工作表中可以使用Datedif函数,而且结果非常精确,但在VBA中却比较麻烦。因为Datedif函数不能直接在VBA中使用,而使用VBA提供的函数却不能得到精确的计算结果。于是很多人在写代码时就自编一个函数来实现Datedif函数的功能,其实借助VBAEvaluate函数我们同样可以很方便地在VBA中使用Datedif函数:
一、求单元格时间间隔:
A1单元格内容为:2005-9-8B3单元格内容为:2007-4-5
Sub test1()
    MsgBox "间隔" & Application.Evaluate("=Datedif(a1,b3,""y"")") & ""
    MsgBox "间隔" & Application.Evaluate("=Datedif(a1,b3,""m"")") & ""
    MsgBox "间隔" & Application.Evaluate("=Datedif(a1,b3,""d"")") & ""
End Sub
二、求两个TextBox的时间间隔:
TextBox1单元格内容为:2005-9-8TextBox2单元格内容为:2007-4-5
       Sub test2()
           MsgBox "=Datedif(""" & TextBox1.Text & """,""" & TextBox2.Text & """,""y"")"
          MsgBox "间隔" & Application.Evaluate("=Datedif(""" & TextBox1.Text & """,""" & TextBox2.Text & """,""y"")") & ""
    End Sub
三、求两个变量的时间间隔:
       Sub test3()
         Dim time1, time2
         time1 = "2005-9-8"
         time2 = "2007-4-7"
        MsgBox "间隔" & Application.Evaluate("=Datedif(""" & time1 & """,""" & time2 & """,""y"")") & ""
End Sub

注:以上内容未在Office2007中进行测试!
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2007-5-21 19:03 | 显示全部楼层

VBA计算间隔

Msgbox vba.DateDiff("yyyy","2007-8-12","2009-3-22")'年

Msgbox vba.DateDiff("m","2007-8-12","2009-3-22")'月

Msgbox vba.DateDiff("w","2007-8-12","2009-3-22")'周

Msgbox vba.DateDiff("d","2007-8-12","2009-3-22")'日

Msgbox vba.DateDiff("q","2007-8-12","2009-3-22")'季

回复

使用道具 举报

 楼主| 发表于 2007-5-22 09:18 | 显示全部楼层

使用VBA提供的函数不能得到精确的计算结果:

 vba.DateDiff("yyyy","2007-8-12","2009-3-22")结果为2年,但在实际的工作中,例如计算"工龄","年龄"时,"2007-8-12"和"2009-3-22"只能算为1年,这就该用Datedif函数了!

回复

使用道具 举报

发表于 2007-5-22 11:38 | 显示全部楼层

QUOTE:
以下是引用extyg在2007-5-22 9:18:11的发言:

使用VBA提供的函数不能得到精确的计算结果:

 vba.DateDiff("yyyy","2007-8-12","2009-3-22")结果为2年,但在实际的工作中,例如计算"工龄","年龄"时,"2007-8-12"和"2009-3-22"只能算为1年,这就该用Datedif函数了!

没看清一楼的题意,贸然回帖,抱歉

时间间隔曾和不少人讨论过,比如2006-12-31 23:59至2007-1-1 0:00看从什么角度定位

谢谢分享代码

回复

使用道具 举报

发表于 2011-4-3 15:45 | 显示全部楼层
楼主给发给我一份服装进销存吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-29 19:38 , Processed in 0.214685 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表