vba季度回报

问题描述 投票:-3回答:1

任何人都可以告诉我一个VBA功能或按钮,它只按季度计算季度回报(即,第一季度回报基于1月至3月回归),没有重叠观察。

我现在使用的功能只是AVERAGE,例如,从1月到3月返回,但实际计算单元格是4月份。

我要问的一个例子是图片链接。我希望该函数在我选择的时间段内运行。

enter image description here

非常感谢你!

编辑:我正在寻求代码的帮助,因为我是vba的新手,所以我不能自己做。

edit2:我从课程改编的代码是这样的:

 Option Explicit

 Public Sub QuarterReturns()
    Dim rng As Range
    Set rng = Range("B2")
    Dim i As Long, n As Long

    n = rng.End(x2Down).Column - rng.Row + 1
    Set rng = rng.Resize(n, 1)

    Dim returns As Variant
    returns = rng.Value2

    Dim quarter As Variant

    ReDim quarter(1 To n - 1, 1 To 1)
    For i = 1 To n - 1
        ror(i, 1) = prices(i + 1, 1) / prices(i, 1) - 2#
    Next i
    rng.Offset(1, 2).Resize(n - 1, 2).Value2 = quarter
End Sub
excel vba finance
1个回答
1
投票

好的,所以第一点:StackOverflow不是代码编写服务。问我们,“嘿,有人可以给我写一些做X的东西吗?”很可能会让你受到嘲笑/责骂/等等。

也就是说,我将帮助你提供两个可以帮助你自己到达终点的积木。

Prereq:VBA在Excel中过度使用。 Excel在公式中具有惊人的强大功能。在这种情况下,您实际上可以使用零代码获得所需内容,并且只能获得一个额外(计算)列。这可能是一个更好的解决方案的原因是因为带有VBA宏的Excel文档往往被禁用(出于很好的理由),并且很难看到幕后做了什么。通过计算列,有兴趣挖掘数字背后的人可以轻松地看到正在发生的事情,而无需深入研究代码。

构建块#1:年和月功能。

如果你有一个日期列(你现在没有 - 你需要将该列更改为实际代表日期对象的那个),你实际上可以通过汇总类似于以下内容来获得Quarter:

=YEAR(A1)&"-Q"&((MONTH(A1)+2)/3)

基本上,YEAR()函数获取年份,MONTH()函数获取月份数。从那里,我只是使用一些基本的数学和字符串组合来得到如下结果:

2018-Q2

Building Block#2 - CountIf / SumIf / AverageIf

Excel有一些非常好的xxxIf()函数,它们将获得范围的平均值/ sum / count / etc,但仅适用于满足特定条件的值。

因此,在您的情况下,如果您对所有2018-Q2记录求和,则只需使用SUMIF()函数将所有值相加,其中条目等于'2018-Q2'。

希望能帮助你完成任务。如果没有,我实际上鼓励你将问题分解为更小的子任务,谷歌那些子任务 - 如果你找不到任何特定任务,请问一个关于那个部分的问题。问:“嘿,我如何在VBA中总结三个单元?”比“嘿,为我写这个功能”要好得多:-)

© www.soinside.com 2019 - 2024. All rights reserved.