2017-10-10 5 views
0

Ce code vise à créer un outil de positionnement pour les opérations sur les marchés financiers.Comment créer une VBA de moyenne mobile qui parcourt un ensemble de paramètres par pas de 5,10,15?

J'apprécierais grandement l'aide.

Sub Mov_Avgs() 

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

'last colummn 
Dim LastCol As Integer 
LastCol = Cells(5, Columns.Count).End(xlToLeft).Column 

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

End Sub 

Répondre

0

Essayez les solutions suivantes. Je place la sortie à un décalage des données d'entrée, vous pouvez modifier le cas échéant. Supposons également des données dans la feuille (1) et ont des références entièrement qualifiées:

Option Explicit 
Sub Mov_Avgs() 

    Dim wb As Workbook 
    Dim ws As Worksheet 
    Dim Lastrow As Long 
    Dim LastCol As Integer 
    Dim step As Long 
    Dim outputRange As Range 
    Dim stepArr() 
    Dim i As Long 

    Dim inputRange As Range 
    stepArr = Array(5, 10, 15) 

    Set wb = ThisWorkbook 
    Set ws = wb.Sheets(1) 

    Lastrow = ws.Range("C" & Rows.Count).End(xlUp).Row 
    LastCol = ws.Cells(5, Columns.Count).End(xlToLeft).Column 

    Set inputRange = ws.Range("$C$6:$C" & Lastrow) 

    For i = LBound(stepArr) To UBound(stepArr) 

     Set outputRange = inputRange.Offset(0, LastCol + i) 

     Application.Run "ATPVBAEN.XLAM!Moveavg", inputRange, _ 
         outputRange, stepArr(i), False, False, False 

    Next i 

End Sub 
+0

Ah homme cool. Hmmmm .... Semble me dire que la plage d'entrée contient des données non numériques - bizarre .... – Neb967

+0

Si se référant à la NA() dans la sortie; ceux-ci sont pour des périodes exclues du calcul car il n'y a pas assez de points de données pour effectuer le calcul, par ex. si la moyenne de 5 points, les 4 premières lignes de sortie seront NA(). – QHarr

+0

Non, je reçois un message indiquant que - le N/A dans la sortie est quelque chose que je connais déjà. – Neb967