我正在尝试根据=TODAY()
日期和下一个x季度来计算当前的FY季度(10月1日开始),结果是:
Q2 2017
Q3 2017
Q4 2017
Q1 2018
...
Qx 20xx
使用这个公式:
="Q" & ROUNDDOWN(MOD((TODAY()-DATE(YEAR(TODAY()-365),10,1)+K6*(365/4))/(365/4),4)+1,0)&" "&YEAR(TODAY()+K6*(365/4))
结果是:
K6=X Result
0 Q2 2017
1 Q3 2017
2 Q4 2017
3 Q1 2017 * should be 2018
4 Q2 2018
5 Q3 2018
6 Q4 2018
7 Q1 2018 * should be 2019
8 Q2 2019
问题1:这些年份在它们应该改变之前的四分之一,并且
问题2:这是一个糟糕的公式 - 是否有办法让它更简单?
完全披露,我打算在VBA FOR x = 0...
循环中实现使用此公式,从今天起x =四分之一,并相应地设置单元格的公式。
编辑:或者,如何仅使用VBA生成所需的输出,并将所需的单元格设置为文本字符串?代表FY Quarter的字符串可以使我的应用程序更稳定。
答案 0 :(得分:4)
将此功能添加到模块表
Function NextQuarter(ByVal iCQ As Integer) As String
Dim qtrd As Date
Dim qtr As Integer
qtrd = DateAdd("m", 3 + (3 * iCQ), Now())
qtr = (Month(qtrd ) + 2) \ 3
NextQuarter = "Q" & qtr & " " & Year(qtrd )
End Function
在您的手机中使用公式" = NextQuarter(K6)"
答案 1 :(得分:1)
尝试下面的VBA代码(我将结果放在A列,第2行):
Option Explicit
Sub FormatQandY()
Dim x As Long
For x = 0 To 10 '<-- loop from today 10 Q ahead
Cells(x + 2, 1) = "Q" & WorksheetFunction.RoundUp((Month(DateAdd("m", x * 3, Date))) / 3, 0) & "-" & Year(DateAdd("m", x * 3, Date))
Next x
End Sub