VBA Excel: Funzione per emettere il prossimo trimestre dalla data di ingresso
Domanda
Sto lavorando in VBA per Excel e ho bisogno dell'uso di una funzione che posso inserire una data nel formato della data di Excel convertita (come 40736).E la data della data del trimestre successivamente seguendo la data di input nel formato YYYMMDD, in cui i trimestri sono 1 gennaio, Apr 1, Jul 1 e ott 1. Tutti i calcoli devono essere eseguiti in VBA, non nel foglio di lavoro. Ad esempio: il mio ingresso potrebbe essere 40736 (la data di Excel che corrisponde al 7/12/2011. Vorrei che il mio risultato sia 201111001, che corrisponde al seguente trimestre.
Non sono davvero sicuro di come affrontare questo, quindi qualsiasi aiuto con strategie o persone proposte di codice sarebbe fantastico.Grazie
Soluzione
Ecco una leggera variazione del codice di Martin per dare il primo giorno del Next Quarter:
Function GetQuarterDate2(InDate As Date) As Date
Dim Quarter As Integer
Dim OutDate As Date
Dim yr As Long
Quarter = DatePart("q", InDate)
yr = Year(InDate)
If Quarter = 1 Then
OutDate = DateSerial(yr, 4, 1)
ElseIf Quarter = 2 Then
OutDate = DateSerial(yr, 7, 1)
ElseIf Quarter = 3 Then
OutDate = DateSerial(yr, 10, 1)
ElseIf Quarter = 4 Then
OutDate = DateSerial(yr + 1, 1, 1)
End If
GetQuarterDate2 = OutDate
End Function
. Altri suggerimenti
Di seguito dovrebbe funzionare, fornire la tua data come argomento Indate;
Function GetQuarterDate(InDate As Date) As Date
Dim Quarter As Integer
Dim OutDate As Date
Quarter = DatePart("q",InDate)
If Quarter = 1 Then
OutDate = DateSerial(DatePart("yyyy",InDate),1,1)
ElseIf Quarter = 2 Then
OutDate = DateSerial(DatePart("yyyy",InDate),4,1)
ElseIf Quarter = 3 Then
OutDate = DateSerial(DatePart("yyyy",InDate),7,1)
ElseIf Quarter = 4 Then
OutDate = DateSerial(DatePart("yyyy",InDate),10,1)
End If
GetQuarterDate = OutDate
End Function
.