DateAdd的语法

我正在尝试使用Excel的DateAdd函数来查找下一个工作日

它提供了相同的结果,无论您使用d,w或y作为句号参数。

我尝试了下面的代码,并在所有3列中得到相同的结果。

Sub test() Dim i As Integer For i = 1 To 9 Debug.Print i; Debug.Print DateAdd("d", i, #9/10/2009#); Debug.Print DateAdd("w", i, #9/10/2009#); Debug.Print DateAdd("y", i, #9/10/2009#) Next i End Sub 

结果:
1 11/09/2009 11/09/2009 11/09/2009
2 12/09/2009 12/09/2009 12/09/2009
3 13/09/2009 13/09/2009 13/09/2009
4 14/09/2009 14/09/2009 14/09/2009
5 15/09/2009 15/09/2009 15/09/2009
6 2009年9月16日16/09/2009 16/09/2009
7 17/09/2009 17/09/2009 17/09/2009
8 18/09/2009 18/09/2009 18/09/2009
9 19/09/2009 19/09/2009 19/09/2009

从文档中提取:返回包含添加了指定时间间隔的date的Variant(Date)。

 Syntax DateAdd(interval, number, date) ... interval Required. String expression that is the interval of time you want to add. .... The interval argument has these settings: Setting Description yyyy Year q Quarter m Month y Day of year d Day w Weekday ww Week ... 

尽pipeDateAdd文档有混淆的语言。 DateAdd不会添加工作日。 “W”只会添加n天(正如您发现的那样)。 您可以滚动您自己的function,或执行以下操作:在Excel中,转到工具>添加,然后打开VBA的分析工具包。 在VBE中,转至工具>参考,并设置对atpvbaen.xls的引用。 现在您可以在VBA中使用WorkDayfunction。

 Public Sub Test() MsgBox CDate(Workday(Date, 3)) End Sub 

一周是“ww”,一年是“yyyy”。

更正后的代码:

 Sub test() Dim i As Integer For i = 1 To 9 Debug.Print i; Debug.Print DateAdd("d", i, #9/10/2009#); Debug.Print DateAdd("ww", i, #9/10/2009#); Debug.Print DateAdd("yyyy", i, #9/10/2009#) Next i End Sub 

从文档:

DateAdd函数的语法是:

 DateAdd ( interval, number, date ) 

间隔是您希望添加的时间/date间隔。 它可以是以下值之一:

 Value Explanation yyyy Year q Quarter m Month y Day of the year d Day w Weekday ww Week h Hour n Minute s Second 

数字是您希望添加的时间间隔的数量。

date是应该添加时间间隔的date。

您的示例将在今天的三个不同版本中添加相同的编号。 “d”表示当前date。 “w”表示星期几的星期几(默认)。 “y”表示一年中的某一天。 9月16日是今年365天的259天。

为了得到它看起来像你要做的事情:

 Sub test() Dim i As Integer For i = 1 To 9 Debug.Print i; Debug.Print DateAdd("d", i, #9/10/2009#) ' adds i days Debug.Print DateAdd("ww", i, #9/10/2009#) ' adds i weeks Debug.Print DateAdd("yyyy", i, #9/10/2009#) ' adds i years Next i End Sub 

输出:

  1 9/11/2009 9/17/2009 9/10/2010 2 9/12/2009 9/24/2009 9/10/2011 3 9/13/2009 10/1/2009 9/10/2012 4 9/14/2009 10/8/2009 9/10/2013 5 9/15/2009 10/15/2009 9/10/2014 6 9/16/2009 10/22/2009 9/10/2015 7 9/17/2009 10/29/2009 9/10/2016 8 9/18/2009 11/5/2009 9/10/2017 9 9/19/2009 11/12/2009 9/10/2018 

编辑:看看这里的一些工作日math

DateAdd(“w”不能按预期方式工作 – 微软承认并发布了解决方法https://support.microsoft.com/en-us/kb/115489