2017-10-10 9 views
0

このコードは、金融市場で取引するためのポジショニングツールを作成するためのコードです。5,10,15のステップでパラメータセットをスイープする移動平均VBAを作成するにはどうすればよいですか?

私は非常に助けていただければ幸いです。

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 

答えて

0

以下を試してください。私は、入力データからのオフセットで出力を配置しているので、適切な修正ができます。また、シート(1)のデータを想定し、完全修飾参照を持っている:

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

ああクールな男。 Hmmmm ....入力範囲に非数値データが含まれていると思われます。... – Neb967

+0

出力にNA()を参照している場合は、これらは、計算を実行するのに十分なデータポイントではないとして計算から除外された期間のものである。 5点平均の場合、最初の4行の出力はNA()になります。 – QHarr

+0

いいえいいえ、出力にN/Aが既に慣れ親しんだものであることを示すポップアップメッセージが表示されます。 – Neb967

関連する問題