Pergunta

Estou trabalhando em vba para excel e preciso usar uma função que possa inserir uma data que esteja no formato da data convertida do excel (como 40736).E imprima a data do trimestre imediatamente após a data de entrada no formato aaaammdd, onde os trimestres são 1º de janeiro, 1º de abril, 1º de julho e 1º de outubro.Todos os cálculos precisam ser feitos em vba, não na planilha.Como um exemplo:minha entrada pode ser 40736 (a data do Excel que corresponde a 12/07/2011.Gostaria que minha produção fosse 20111001, que corresponde ao trimestre seguinte.

Eu realmente não tenho certeza de como abordar isso, então qualquer ajuda com estratégias ou pedaços de código propostos seria ótimo.Obrigado

Foi útil?

Solução

Aqui está uma pequena variação do código de Martin para dar o primeiro dia do próximo trimestre:

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

Outras dicas

O procedimento abaixo deve funcionar, forneça sua data como argumento 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top