2017-02-15 4 views
1

D3:D12と言う列の10個のエントリの平均または合計または標準偏差または..を計算し、行をZ列まで入力する必要があります。 enter image description hereVBA:動的範囲のループを使用した水平および垂直移動

パート1: -

Sub hg() 
Dim i As Long 
Range("D13").Select 
Do Until i = 20 
i = i + 1 
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-10]C:R[-1]C)" 
Cells(ActiveCell.Row, ActiveCell.Column + 1).Select 
Loop 
End Sub 

この私がコード化されてきました。サイドの方法をドラッグするのは簡単な方法はありますか?

28行目、43行目の&で15行の違いがあるので、これをもう一度やり直す必要があります。

私は パート2を追加していると考えることができます: -

28行に指示するが、この行に沿って移入するために機能していない
Sub hg() 
Dim i As Long 
Range("D13").Select 
Do Until i = 20 
i = i + 1 
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-10]C:R[-1]C)" 
Cells(ActiveCell.Row, ActiveCell.Column + 1).Select 
Loop 
Cells(ActiveCell.Row + 15, ActiveCell.Column - 20).Select 
End Sub 

。私は垂直移動を指示することができません。

私は深刻なコーダーではなく、学ぶことに非常に興味があります。垂直方向に配置するのを手伝ってください。オフセット

を使用でき

答えて

1

()と私は今、成功し使用していたループ反復ごと

Sub hg() 
    Dim i As Long`enter code here` 

    For i = 13 To 43 Step 15 '<--| change 43 to your actual last row to populate with formula 
     Range("D1:Z1").Offset(i-1).FormulaR1C1 = "=AVERAGE(R[-10]C:R[-1]C)" 
    Next 
End Sub 
+0

で15行をステッピング最終的なコードは、( サブHGである) 薄暗い私としてロング レンジ(「D13」 )i = 1 + 1 ActiveCell.FormulaR1C1 = "= AVERAGE(R [-10] C:R [-1] C)" Selection.Copy 範囲(選択、選択。 End(xlToRight))を選択します。 Selection.PasteSpecialペースト:= xlPasteFormulas、操作:= xlNone、_ SkipBlanks:= Falseを、トランスポーズ:あなたは暖かく避けるために奨励されている= Falseの 細胞(ActiveCell.Row、ActiveCell.Column + 1).Select 細胞(ActiveCell.Row + 15、4).Select ループ End Subの –

+0

選択/選択/ ActiveXXXパターンは避け、完全修飾範囲参照を使用してください。さらに、コピー/ペーストは高価な操作であり、データや操作をほとんど行わなくてもそれを認識することはできませんが、値プロパティを使用して範囲間の値をコピーしたり、数式を直接書くことができます。私のコードを試してみてください – user3598756

関連する問題