【问题标题】:Run moving average on times series across in intervals of 5 looping through to the last column以 5 的间隔在时间序列上运行移动平均值,循环到最后一列
【发布时间】:2017-10-10 13:41:36
【问题描述】:

'理想情况下,我想循环到下面输出范围的最后一列 (E6),然后在移动平均周期的 5、10、15、20、25 到 50 个间隔内运行移动平均线。 .

基本上我想在这里整理一下代码。我不是专业的编码员。不胜感激。

C列是价格数据 E6 是我希望它填充到最后一个移动平均线的位置,即 50

工作表名称是“数据”

Sub Mov_Avgs()

'last row
Dim Lastrow As Long
Lastrow = Range("C" & Rows.Count).End(xlUp).Row

Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Range("E6"), 5, False, False, False

Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Range("F6"), 10, False, False, False

Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Range("G6"), 15, False, False, False

Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Range("H6"), 20, False, False, False

Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Range("I6"), 25, False, False, False

Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Range("J6"), 30, False, False, False

Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Range("K6"), 35, False, False, False

Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Range("L6"), 40, False, False, False

Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Range("M6"), 45, False, False, False

Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Range("N6"), 50, False, False, False


End Sub

【问题讨论】:

    标签: excel vba average trading


    【解决方案1】:

    尝试使用循环:

    Sub Mov_Avgs()
    
    Dim Lastrow As Long
    Dim ColNum As Long
    Dim Step As Long
    
    Lastrow = Range("C" & Rows.Count).End(xlUp).Row
    Step = 5
    
    For ColNum = 5 To 14
        Application.Run "ATPVBAEN.XLAM!Moveavg", ActiveSheet.Range("$C$6:$C" & Lastrow), _
        ActiveSheet.Cells(6, ColNum), Step, False, False, False
        Step = Step + 5
    Next
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 2011-03-08
      相关资源
      最近更新 更多