VBA Excel:从输入日期输出下一季度的功能

时间:2014-08-01 17:49:21

标签: excel vba excel-vba

我正在使用vba for excel,需要使用一个函数,我可以输入excel转换日期格式的日期(例如40736)。并在输入日期之后立即以yyymmdd格式输出季度的日期,其中季度为1月1日,4月1日,7月1日和10月1日。所有计算都需要在vba中完成,而不是在工作表中完成。 举个例子:我的输入可能是40736(与2011年7月7日相对应的excel日期。 我希望我的输出为20111001,与下一季相对应。

我真的不确定如何处理这个,所以任何有关策略或提议的代码的帮助都会很棒。感谢

2 个答案:

答案 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