任何人都可以告诉我一个VBA功能或按钮,它只按季度计算季度回报(即,第一季度回报基于1月至3月回归),没有重叠观察。
我现在使用的功能只是AVERAGE,例如,从1月到3月返回,但实际计算单元格是4月份。
我要问的一个例子是图片链接。我希望该函数在我选择的时间段内运行。
非常感谢你!
编辑:我正在寻求代码的帮助,因为我是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
好的,所以第一点: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中总结三个单元?”比“嘿,为我写这个功能”要好得多:-)