Lee*_*Mac 1 ms-access vba access-vba
我希望根据当前日期计算上个季度的开始日期。
哪里
Q1 = Jan-Mar
Q2 = Apr-Jun
Q3 = Jul-Sep
Q4 = Oct-Dec
Run Code Online (Sandbox Code Playgroud)
因此,如果当前日期为8th Jan 2018,则该函数将返回date 1st Oct 2017。
我已经编写了以下代码,但是,这看起来笨拙又笨拙,并且我觉得可能有更好的编写方法(例如,使用dateadd)。
Function LMLastQuarterStart() As Date
Dim mo As Integer
Dim yr As Integer: yr = Year(Date)
Select Case Month(Date)
Case 1 To 3: mo = 10: yr = yr - 1
Case 4 To 6: mo = 1
Case 7 To 9: mo = 4
Case Else: mo = 7
End Select
LMLastQuarterStart = DateSerial(yr, mo, 1)
End Function
Run Code Online (Sandbox Code Playgroud)
我会很感激所提供的任何建议/建议。
您要查找的函数(带有)DateAdd如下:
Public Function LastQuarter(theDate As Date) As Date
LastQuarter = DateAdd("q", DatePart("q", theDate) - 2, DateSerial(Year(theDate), 1, 1))
End Function
Run Code Online (Sandbox Code Playgroud)
说明:
DateSerial(Year(theDate), 1, 1)) 返回本年度的第一季度。
DateAdd("q", DatePart("q", theDate), ThatDate)添加当前季度,返回下一个季度(例如,第一季度->第二季度)。因此,-2减去两个季度。
关于笨拙:此功能可能更短,可能包括更少的操作,但更难理解。这可能相关也可能不相关。
关于参数:我已经花了一些时间,既方便测试,又让您保持可变。您可以做到这一点。
感谢Gustav提出使用建议DatePart而不是Format
| 归档时间: |
|
| 查看次数: |
797 次 |
| 最近记录: |