Excel vba季度报表

Excel vba季度报表,excel,vba,finance,Excel,Vba,Finance,有谁能告诉我一个VBA函数或按钮,它只能按季度计算季度回报率,即第一季度回报率基于1月至3月的回报率,没有重复观察 我现在使用的函数只是从1月到3月的平均值,但实际的计算单元是在4月 我要问的一个例子是图片链接。我希望函数在我选择的时间段内运行 多谢各位 编辑:我请求代码方面的帮助,因为我是vba新手,所以我还不能自己完成 edit2:我从类中改编的代码如下: Option Explicit Public Sub QuarterReturns() Dim rng As Range

有谁能告诉我一个VBA函数或按钮,它只能按季度计算季度回报率,即第一季度回报率基于1月至3月的回报率,没有重复观察

我现在使用的函数只是从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:年和月函数

如果您有一个日期列,而您现在没有-您需要将该列更改为实际表示日期对象的列,您可以通过组合以下内容来获得季度:

=YEAR(A1)&"-Q"&((MONTH(A1)+2)/3)
基本上,年函数得到年,月函数得到月数。在此基础上,我使用一些基本的数学和字符串组合得到如下结果:

2018-Q2

构建块2-CountIf/suif/AverageIf

Excel有一些非常棒的xxxIf函数,可以获得某个范围的平均值/总和/计数/等,但仅限于满足特定条件的值

因此,在您的例子中,如果您将所有2018-Q2记录相加,只需使用SUMIF函数将所有值相加,其中条目等于“2018-Q2”


希望这能帮助你完成任务。如果没有,我会鼓励你把问题分解成更小的子任务,用谷歌搜索这些子任务——如果你找不到某个特定任务的任何东西,就只问这个部分的问题。问:嘿,我如何求VBA中三个单元格的和?比嘿,给我写这个函数要好得多:-

你在找人给你写VBA代码吗?或者你是在问是否有一个现有的函数可以满足你的需求?那是什么日期格式?YYDDMM?@Kevin如果我没有解释清楚,我很抱歉。我正在寻求代码方面的帮助,因为我是vba新手,所以我还不能独自完成它。@BruceWayne是YYMM。我并不总是认为vba就是答案。您可以使用数据透视表来完成此操作,因为您可以按季度选择日期。您只需将日期转换为实际日期。非常感谢您的回答,这确实很有帮助。唯一的问题是我在vba中真的需要它,那么你有什么方法可以帮助我编写代码吗?那么,最后一段就是你想要的。将任务分解为尽可能小的组件/任务/元素。如果你知道如何做这些,太好了!如果没有,用谷歌搜索。老实说,如果你发现问题的某一部分没有得到答案,那就很可疑了,然后继续问关于Stackoverflow的具体问题。顺便说一句,这就是你通常需要处理编程的方式。不要认为我需要编写一个执行XYZ的程序。相反,想一想,要完成XYZ,我需要先做A,然后是B或C,最后是D和E。那么,我怎么做A呢?你把任务分解得越小,你就会发现自己做得越好。