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

È stato utile?

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
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top