我正在使用vba for excel,需要使用一个函数,我可以输入excel转换日期格式的日期(例如40736)。并在输入日期之后立即以yyymmdd格式输出季度的日期,其中季度为1月1日,4月1日,7月1日和10月1日。所有计算都需要在vba中完成,而不是在工作表中完成。 举个例子:我的输入可能是40736(与2011年7月7日相对应的excel日期。 我希望我的输出为20111001,与下一季相对应。
我真的不确定如何处理这个,所以任何有关策略或提议的代码的帮助都会很棒。感谢
答案 0 :(得分:2)
以下是马丁代码的略微变化,以便给出下一个季度的第一天:
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
答案 1 :(得分:1)
以下内容应该有效,将您的日期作为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