2017-02-15 72 views
1

我要计算一个列中的10个条目的平均或总和或标准差或..说D3:D12和填充行直到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行不同。

我能想到的是增加了两个 部分: -

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

您可以使用偏移()和环路在我现在成功地利用每一次迭代

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排是 子汞柱() 昏暗我只要 范围(“D13” )。选择 直到i = 10 i = i + 1 ActiveCell.FormulaR1C1 =“= AVERAGE(R [-10] C:R [-1] C)” Selection.Copy Range(Selection,Selection。 End(xlToRight))。Select Selection.PasteSpecial Paste:= xlPasteFormulas,Operation:= xlNone,_ 个SkipBlanks:=假,移调:=假 细胞(ActiveCell.Row,ActiveCell.Column + 1)。选择 细胞(ActiveCell.Row + 15,4)。选择 循环 结束子 –

+0

您热烈鼓励,以避免避免选择/选择/ ActiveXXX模式并使用完全限定的范围参考。此外,复制/粘贴操作是一项昂贵的操作:您可能无法用少量数据或操作感知它,但您可能希望养成使用Value属性在范围之间复制值或直接编写公式的习惯。试试我的代码并让我知道 – user3598756