2017-10-10 6 views
0

'Idéalement, je souhaite passer en boucle jusqu'à la dernière colonne de la plage de sortie ci-dessous (E6), puis exécuter la moyenne mobile sur 5, 10, 15, 20, 25 à 50 intervalles pour la moyenne mobile ...Exécuter une moyenne mobile sur des séries de temps sur des intervalles de 5 en boucle jusqu'à la dernière colonne

Essentiellement je veux ranger le code ici. Je ne suis pas un codeur professionnel. J'apprécierais quelques conseils.

colonne C sont les données de prix E6 est là où je veux remplir en face de la dernière moyenne mobile soit 50

Nom de la feuille est « Données »

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 

Répondre

0

Essayez d'utiliser la boucle:

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 

Espérons que cela aide!