2009-09-16 6 views
1

J'essaie d'utiliser Excel la fonction DateAdd pour trouver le jour ouvrable suivant.Syntaxe de DateAdd

Il fournit le même résultat que vous utilisiez d, w ou y pour l'argument period.

J'ai essayé le code suivant, et obtenir des résultats identiques dans les 3 colonnes.

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 

Résultat:
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

Extrait de la documentation: Retourne une variante (date) contenant une date à laquelle un intervalle de temps spécifié a été ajouté.

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 
... 
+0

Je sais ce que ww et yyyy faire ce n'est pas la question je veux!. le jour ouvrable suivant (ou jour ouvrable) –

+0

@Patrick jour ouvrable! = jour ouvrable L'ajout d'un jour de la semaine à une date est simplement incrémenté au jour suivant de la semaine, par exemple l'ajout d'un jour au vendredi donne une date pour samedi. un jour, pouvez-vous signaler toute documentation qui pourrait suggérer le contraire? – Glen

+0

Édité ma réponse un petit peu ... – Buggabill

Répondre

4

Malgré la langue confuse de la documentation DateAdd. DateAdd fait pas ajouter des jours de travail."W" ajoutera seulement n nombre de jours (comme vous avez découvert). Vous pouvez soit lancer votre propre fonction, soit effectuer les opérations suivantes: Dans Excel, accédez à Outils> Ajouter une application et activez l'outil d'analyse pour VBA. Dans le VBE, accédez à Outils> Références et définissez une référence à atpvbaen.xls. Vous pouvez maintenant utiliser la fonction WorkDay dans VBA.

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

Il est "ww" pour la semaine et "yyyy" pour l'année.

code corrigé:

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 

De la documentation:

La syntaxe de la fonction DateAdd est:

DateAdd (interval, number, date) 
intervalle

est l'intervalle de temps/date que vous souhaitez ajouter. Il peut s'agir de l'une des valeurs suivantes:

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 

nombre est le nombre d'intervalles que vous souhaitez ajouter.

La date est la date à laquelle l'intervalle doit être ajouté.

0

Votre exemple va ajouter le même nombre à trois versions différentes d'aujourd'hui. "d" représente la date actuelle. "w" représente le jour de la semaine tel que 1 pour dimanche (par défaut). "y" représente le jour de l'année. Le 16 septembre est le jour 259 de 365 cette année.

Afin d'obtenir ce qu'il ressemble à vous allez pour le faire:

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 

Sorties:

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 

EDIT: Jetez un oeil here pour un peu de maths de journée de travail

+0

Incorrect. Les arguments représentent un intervalle, "w" étant un jour de la semaine, comme indiqué dans la documentation. –

+0

Des docs ... Pour ajouter des jours à "date", vous pouvez utiliser Jour de l'année ("y"), Jour ("d") ou Jour de la semaine ("w") La fonction DateAdd ne sera pas renvoyer une date non valide L'exemple suivant ajoute un mois au 31 janvier: DateAdd ("m", 1, "31-Jan-95") Dans ce cas, DateAdd renvoie le 28-Feb-95 au lieu du 31-Feb-95. Si la date est 31-Jan-96, il retourne 29-Feb-96 parce que 1996 est une année bissextile. De ma fenêtre immédiate: ? DateAdd ("ww", 2, # 9/10/2009 #) 24/09/2009 – Buggabill