此问题在此处已有答案:
how can I calculate a Start and End Date based on Quarter End(3个答案)
5天前关闭。
我需要以YYYYMMDD格式自动计算最近的结束日期(也称为QRT_END)。因此,由于我们处于20221120,结束日期将是今天之前的上一个季度结束日期,即20220930。
我需要添加到下面的VBA语法中,但不要对其进行大幅度更改。应尽可能保留以前的语法。问题是,对于10月(第10个月)或之前的任何月份,它都能正常工作,并显示正确的上一季度末,如20220331、20220630。但是,当它在11月或12月运行时,它会错误地添加“0”,例如:今天运行时显示为202201030。它应该显示为20220930。
之所以存在“0”,是因为前3个季度的日期不能为2022331、2022630或2022930,而应显示为20220331、20220630或20220930。在下一年的1月、2月或3月运行时,应显示为20221231。
Private Function getQRT_END() As String
Dim endmonth As Variant
Dim endyear As Variant
Dim Day As Variant
endmonth = Month(Date) - 1
If endmonth = 0 Then
endyear = Year(Date) - 1
endmonth = 12
day = 31
Else
endyear = Year(Date)
If endmonth = 3 Then
day = 31
Else
day = 30
End if
endmonth = “0” & endmonth
End If
getQRT_END = endyear & endmonth & day
End Function
2条答案
按热度按时间bis0qfac1#
而不是...
试试这个...
pvabu6sv2#
这似乎更简单:
它依赖于VBA(和Excel)行为,其中任何月份的第0天都是上个月的最后一天。
使用
Mod
函数可以计算从当前月份减去多少个月。