首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateAdd语法

DateAdd语法
EN

Stack Overflow用户
提问于 2009-09-16 12:48:17
回答 4查看 7.1K关注 0票数 1

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

无论在句点参数中使用d、w还是y,它都提供了相同的结果。

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

代码语言:javascript
复制
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

结果:

代码语言:javascript
复制
 1 11/09/2009 11/09/2009 11/09/2009
代码语言:javascript
复制
 2 12/09/2009 12/09/2009 12/09/2009
代码语言:javascript
复制
 3 13/09/2009 13/09/2009 13/09/2009
代码语言:javascript
复制
 4 14/09/2009 14/09/2009 14/09/2009
代码语言:javascript
复制
 5 15/09/2009 15/09/2009 15/09/2009
代码语言:javascript
复制
 6 16/09/2009 16/09/2009 16/09/2009
代码语言:javascript
复制
 7 17/09/2009 17/09/2009 17/09/2009
代码语言:javascript
复制
 8 18/09/2009 18/09/2009 18/09/2009
代码语言:javascript
复制
 9 19/09/2009 19/09/2009 19/09/2009 

从文档中提取:返回包含添加指定时间间隔的日期的变体(日期)。

代码语言:javascript
复制
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   
...  
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-09-16 13:44:25

尽管DateAdd文档使用了令人困惑的语言。DateAdd不添加工作日。"W“只会增加n天(如您所发现)。您可以滚动自己的函数,或者执行以下操作:在Excel中,转到Tools>Add Ins并打开用于VBA的分析工具包。在VBE中,转到Tools>References并设置对atpvbaen.xls的引用。现在,您可以在VBA中使用WorkDay函数。

代码语言:javascript
复制
Public Sub Test()
    MsgBox CDate(Workday(Date, 3))
End Sub
票数 4
EN

Stack Overflow用户

发布于 2009-09-16 12:56:04

周是"ww“,年份是"yyyy”。

修正代码:

代码语言:javascript
复制
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函数的语法是:

代码语言:javascript
复制
DateAdd ( interval, number, date )

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

代码语言:javascript
复制
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

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

日期是应将间隔添加到的日期。

票数 0
EN

Stack Overflow用户

发布于 2009-09-16 12:56:45

您的示例将向今天的三个不同版本添加相同的数字。"d“表示当前日期。"w“表示一周中的一天,例如周日(默认)为1。"y“代表一年中的一天。9月16日是今年365天中的259天。

为了得到你想要的东西,你要这样做:

代码语言:javascript
复制
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

产出:

代码语言:javascript
复制
 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 

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1432746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档