VBA:使用循环进行动态范围的水平和垂直移动

时间:2017-02-15 21:09:01

标签: vba loops

我计算一列中10个条目的平均值或总和或标准差或..表示D3:D12并填充行直到Z列。 enter image description here

第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排和第2排再次继续等等有15行差异。

我能想到的是添加 第二部分: -

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

哪个指向第28行但不能沿着这一行填充。我无法指挥垂直运动。

我没有认真的编码员但对学习很感兴趣。请帮助沿垂直方向填充。

1 个答案:

答案 0 :(得分:1)

您可以使用Offset()并在每次迭代时循环步进15行

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