Vba 根据今天的数据计算当前和随后的财年季度';日期

Vba 根据今天的数据计算当前和随后的财年季度';日期,vba,excel,date,Vba,Excel,Date,我试图根据=TODAY()日期和下一个x季度数计算当前财年季度(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

我试图根据
=TODAY()
日期和下一个x季度数计算当前财年季度(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=quarters,并相应地设置单元格的公式

编辑:或者,如何仅使用VBA生成所需输出,并在所需单元格中设置为文本字符串?表示FY季度的字符串可能会使我的应用程序更加稳定。

尝试下面的VBA代码(我将结果放在第2行的A列中):

选项显式
子格式Qandy()
暗x等长
对于x=0到10',请尝试下面的VBA代码(我将结果放在第2行的A列中):

选项显式
子格式Qandy()
暗x等长

对于x=0到10'将此函数添加到模块工作表中

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)”

将此函数添加到模块工作表中

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

在您的单元格中,当第一季度开始时(10月或1月-有时财年与日历年不匹配),使用公式“=NextQuarter(K6)”

。如果它与日历年相同,那么为什么不在计算中删除“+1”:“
=”Q”和舍入(MOD((今天()-日期(今天()-365),10,1)+K6*(365/4))/(365/4),4),0)和“&”年(今天()+K6*(365/4))
当第一季度开始时(10月或1月-有时财年与日历年不匹配)。如果它与日历年相同,那么你为什么不在计算中删除“+1”:(MOD((今日()-DATE(year)(今日()-365),10,1)+K6*(365/4))/(365/4),4),0)和“&year(今日()+K6*(365/4))
Genious!优雅,可重复使用-这正是我所需要的。我在VBA函数解决方案上的无效尝试并不比产生原始帖子的公式好多少。事后来看,在探索问题时,将结果设置为相应单元格中的
字符串
,更适合我的预期用途。令人惊叹的和蔼可亲!优雅,可重复使用-这正是我所需要的。我在VBA函数解决方案上的无效尝试并不比产生原始帖子的公式好多少。事后来看,在探索问题时,将结果设置为相应单元格中的
字符串
,更适合我的预期用途。令人惊叹的