我正在尝试使用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 16/09/2009 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 从文档中提取:返回包含添加指定时间间隔的日期的变体(日期)。
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
... 发布于 2009-09-16 13:44:25
尽管DateAdd文档使用了令人困惑的语言。DateAdd不添加工作日。"W“只会增加n天(如您所发现)。您可以滚动自己的函数,或者执行以下操作:在Excel中,转到Tools>Add Ins并打开用于VBA的分析工具包。在VBE中,转到Tools>References并设置对atpvbaen.xls的引用。现在,您可以在VBA中使用WorkDay函数。
Public Sub Test()
MsgBox CDate(Workday(Date, 3))
End Sub发布于 2009-09-16 12:56:04
周是"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 )interval是您希望添加的时间/日期间隔。它可以是下列值之一:
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数字是您希望添加的间隔数。
日期是应将间隔添加到的日期。
发布于 2009-09-16 12:56:45
您的示例将向今天的三个不同版本添加相同的数字。"d“表示当前日期。"w“表示一周中的一天,例如周日(默认)为1。"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 编辑:看看这里的一些工作日数学
https://stackoverflow.com/questions/1432746
复制相似问题