VBA Excel: Función para emitir el siguiente trimestre desde la fecha de entrada
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
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