Pregunta

Estoy trabajando en VBA para Excel y necesita el uso de una función que pueda ingresar una fecha que se encuentra en el formato de la fecha convertida de Excel (como 40736).Y salga de la fecha del trimestre inmediatamente después de la fecha de entrada en el formato YYYMMDD, donde los cuartos son 1 de enero, 1 de abril, julio y octubre 1. Todos los cálculos deben realizarse en VBA, no en la hoja de trabajo. Como ejemplo: mi entrada puede ser 40736 (la fecha de Excel que corresponde al 7/12/2011. Me gustaría que mi salida sea 2011001, que corresponde con el siguiente trimestre.

Realmente no estoy seguro de cómo enfocar esto, por lo que cualquier ayuda con las estrategias o los bolos de código propuestos sería genial.Gracias

¿Fue útil?

Solución

Aquí hay una ligera variación del código de Martin para dar el primer día del Siguiente 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

Otros consejos

El siguiente debería funcionar, suministre su fecha 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top