vba季度回报

时间:2019-03-13 15:28:01

标签: excel vba finance

任何人都可以告诉我一个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

1 个答案:

答案 0 :(得分:1)

好吧,所以第一点:StackOverflow不是代码编写服务。问我们,“嘿,有人可以给我写X吗?”很可能会让你被嘲笑/冷笑/等等。

也就是说,我将为您提供两个构建模块,它们可能会帮助您自己到达终点。

先决条件:VBA在Excel中已被过度使用。 Excel在公式内具有惊人的强大功能。在这种情况下,您实际上可以使用零代码和仅一个附加的(计算的)列来获得所需的内容。之所以可能是一个更好的解决方案,是因为带有VBA宏的Excel文档往往被禁用(出于很好的理由),并且很难看到幕后的工作。通过计算列,有兴趣挖掘数字背后的人就可以轻松了解发生了什么,而不必深入研究代码。

Building Block#1:年和月功能。

如果您有日期列(您现在不知道-您需要将该列更改为实际代表日期对象的内容),则可以通过组装类似以下内容的方法来获得季度:

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

基本上,YEAR()函数获取年份,而MONTH()函数获取月份。从那里开始,我只需要使用一些基本的数学运算和字符串组合即可得到类似这样的结果:

  

2018年第二季度

Building Block#2-CountIf / SumIf / AverageIf

Excel具有一些非常出色的xxxIf()函数,该函数将获取某个范围的平均值/总和/计数/等,但仅针对满足特定条件的值。

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

希望可以帮助您完成任务。如果不是,我实际上鼓励您将问题分解为较小的子任务,然后用谷歌搜索这些子任务-如果您找不到特定任务的任何内容,请询问有关该部分的问题。问,“嘿,我怎么对VBA中的三个单元求和?”比“嘿,为我编写此功能”要好得多:-)