我在VBA中工作以获得Excel,需要使用我可以输入Excel转换日期格式的日期(例如40736)的函数。并在yyymmdd格式之后的输入日期之后产出本季度的日期,季度为1月1日,4月1日,7月1日和10月1日。所有计算都需要在VBA中完成,而不是工作表。 例如:我的输入可能是40736(与7/12/2011对应的Excel日期。 我想我的产出到20111001,它与以下季度相对应。

我真的不确定如何甚至习惯这种情况,所以任何对策略或提出的代码的法律的帮助都会很大。谢谢

有帮助吗?

解决方案

这里是Martin的代码的轻微变化,给出下一个季度的第一天:

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
.

其他提示

以下应该工作,将您的日期提供为参与论点;

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
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top